前言
上篇文章记录了搭建分布式Flink集群环境的过程搭建Flink集群环境
这篇文章咱们聊一聊Flink客户端如何对接Flink集群环境的过程
示例:Flink读取Hadoop中的文件 然后通过集群环境进行数据处理的过程
Hadoop
Hadoop集群环境搭建
Hadoop集群端口说明
Hadoop集群搭建过程异常情况
不能格式化存储目录
详细异常信息
org.apache.hadoop.hdfs.qjournal.client.QuorumException: Could not format one or more JournalNodes. 1 exceptions thrown: 192.168.84.132:8485: Directory /usr/local/hadoop/jn/data/nameservices001 is in an inconsistent state: Can't format the storage directory because the current directory is not empty
journalnode的端口是8485
处理方式
每一个hadoop journalnode节点上将指定目录删除即可 rm -rf /usr/local/hadoop/jn/data/nameservices001
上传文件到hdfs
cd /usr/local/hadoop/sbin # 创建文件夹 hdfs dfs -mkdir /hdfsdata # 文件 sudo vi /home/aaa.txt # 上传文件到指定文件夹 hdfs dfs -put /home/aaa.txt /hdfsdata
上传文件异常
Hadoop DataNode 节点启不来
详细异常信息
File /hdfsdata/aaa.txt._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1). There are 0 datanode(s) running and no node(s) are excluded in this operation
查看WebUI DataNode情况
http://192.168.84.128:50070/dfshealth.html#tab-datanode
解决方法一
停止集群
cd /usr/local/hadoop/sbin ./stop-all.sh
删除在hdfs中配置的data目录
- 查看data目录
在core-site.xml中配置的hadoop.tmp.dir对应文件件 cat /usr/local/hadoop/etc/hadoop/core-site.xml
- 删除
rm -rf /usr/local/hadoop/tmp/*
重新格式化
./hadoop namenode -format
重新启动集群
./start-all.sh
解决方法二
如果上面的方法还是不能启动DataNode那么使用这个方法 当执行文件系统格式化时 会在namenode数据文件夹 (即配置文件中dfs.name.dir在本地系统的路径) 中保存一个current/VERSION文件 记录namespaceID 标志了所有格式化的namenode版本 如果我们频繁的格式化namenode 那么datanode中保存(即dfs.data.dir在本地系统的路径)的current/VERSION文件只是你地第一次格式化时保存的namenode的ID 因此就会造成namenode和datanode之间的ID不一致
- 解决方法A:(推荐)
删除DataNode的所有资料及将集群中每个datanode节点的/dfs/data/current中的VERSION删除 然后重新执行hadoop namenode -format进行格式化 重启集群,错误消失
- 解决方法B:
将name/current下的VERSION中的clusterID复制到data/current下的VERSION中,覆盖掉原来的clusterID
查看DataNode情况
DataNode已经起来了
查看上传文件
http://192.168.84.128:50070
hdfs://192.168.84.128:8020/hdfsdata/aaa.txt
Flink读取数据源并处理数据
DEMO源码
https://gitee.com/pingfanrenbiji/flink-examples-streaming
Flink读取hdfs文件并处理数据
创建flink执行环境
- 第一个参数:远程flink集群 jobmanager ip地址
- 第二个参数:8081是jobmanager webui端口
- 第三个参数:是当前文件夹所在的jar包
数据源
读取hdfs文件数据