前言: 搭建大数据环境集群环境算是比较麻烦的一个事情,并且对硬件要求也比较高其中搭建大数据环境需要准备jdk环境和zk环境,还有hdfs,还有ssh之间的免密操作,还有主机别名访问不通的问题 等。 必然会出现的问题:环境版本,配置问题,内存问题,节点端口通讯等。 最终效果图: 一 环境准备: 三台服务器: jdk jdk1.8 环境变量 hadoop hadoop-3.1.3 版本 flink flink-1.6.1 版本 主 192.168.192.150 免密登录 从1 192.168.192.151 免密登录 从2 192.168.192.152 免密登录 三台服务器设置免密登录,且配置当前主机的别名映射: vim /etc/hosts 三台服务器的配置信息: 我这里电脑是16G运行内存,也可以看设备管理器(虚拟机设置太大运行内存虚拟机会报错,适量内存配置) 二 配置文件:2.1 配置hadoop-env.sh文件vim /opt/hadoop-3.1.3/etc/hadoop/hadoop-env.sh export JAVA_HOME=/usr/local/jdk1.8.0_301 export HADOOP_HOME=/opt/hadoop-3.1.3 2.2 配置core-site.xml文件 vim /opt/hadoop-3.1.3/etc/hadoop/core-site.xml2.3 配置yarn-site.xml文件 vim /opt/hadoop-3.1.3/etc/hadoop/yarn-site.xml fs.default.name hdfs://192.168.192.150:9000 yarn.resourcemanager.resource-tracker.address 192.168.192.150:8025 yarn.resourcemanager.scheduler.address 192.168.192.150:8030 yarn.resourcemanager.address 192.168.192.150:8050 yarn.nodemanager.vmem-check-enabled false 2.4配置mapred-site.xml文件 vim /opt/hadoop-3.1.3/etc/hadoop/mapred-site.xml yarn.nodemanager.pmem-check-enabled false mapred.job.tracker 192.168.192.150:54311 yarn.app.mapreduce.am.env HADOOP_MAPRED_HOME=$HADOOP_HOME mapreduce.map.env HADOOP_MAPRED_HOME=$HADOOP_HOME 2.5 配置hdfs-site.xml文件 vim /opt/hadoop-3.1.3/etc/hadoop/hdfs-site.xml mapreduce.reduce.env HADOOP_MAPRED_HOME=$HADOOP_HOME dfs.replication 2 2.6 配置workers文件 vim /opt/hadoop-3.1.3/etc/hadoop/workers 2.7 配置start-dfs.sh和stop-dfs.sh文件 vim /opt/hadoop-3.1.3/sbin/start-dfs.sh vim /opt/hadoop-3.1.3/sbin/stop-dfs.shHDFS_DATANODE_USER=root HDFS_DATANODE_SECURE_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root 因为hdfs启动是root用户需要配置root配置,也可以加到/etc/profile 全局环境变量中 2.8 配置start-yarn.sh和stop-yarn.sh文件 vim /opt/hadoop-3.1.3/sbin/start-yarn.sh vim /opt/hadoop-3.1.3/sbin/stop-yarn.shYARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root 2.9 把配置好的配置复制到其他俩台节点服务器上面,直接复制/opt/hodoop3.1.3 scp -r /opt/hodoop3.1.3 slave1:/opt/ scp -r /opt/hodoop3.1.3 slave2:/opt/三 启动集群:3.1 初始化NameNode /opt/hadoop-3.1.3/bin/hadoop namenode -format (注意:这里如果jps没有namenode就需要手动启动了) hadoop-daemon.sh start namenode 3.2 直接执行全部启动的脚本 start-all.sh 四,启动后状态 master->192.168.192.150 slave1-> 192.168.192.151 slaev2->192.168.192.152 QuorumPeerMain zookeeper的进程 ResourceManager flink进程 TaskManagerRunner flink进程 NodeManager yarn进程 NameNode HDFS进程 DataNode HDFS进程 web页面访问: 大数据地址: http://192.168.192.150:8088 flink访问地址: http://192.168.192.150:8081 五,采用yarn-session+ flink提交任务执行(这里有很多种任务提交,flink单服务提交,yarn-session提交) ./bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 -c com.xiaoyang.streaming.SocketDemoFullCount ../Flink-1.0-SNAPSHOT.jar 去hadoop界面查看任务执行情况 为啥要采用这种方式部署: (开辟资源+提交任务) 没次创建新的flink集群任务之间互不影响,任务执行完成后对应集群也会消失。 先开辟资源再提交任务 这种会使用所以任务都会提交到一个资源,任务需要手动停止,不易于拓展和管理六,问题记录排查和解决6.1任务启动失败 这种问题一看就是脚本问题启动问题 错误脚本: ./bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 ../Flink-1.0-SNAPSHOT.jar -c com.xiaoyang.streaming.SocketDemoFullCount 正确脚本: ./bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 -c com.xiaoyang.streaming.SocketDemoFullCount ../Flink-1.0-SNAPSHOT.jar6.2 集群配置问题别名 集群里面的配置最好使用ip配置,不要使用别名,这样在通讯的时候不会出现端口问题,这样启动任务的时候会有连接问题。6.3 权限配置问题 权限配置问题需要配置要么配置到全局变量或者 指定配置里面,不然会报错。 HDFS_DATANODE_USER=root HDFS_DATANODE_SECURE_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root YARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root6.4 hdfs 节点启动问题 主节点必须要有NameNode ,从节点要有DataNode 不然启动hdfs启动会报错。6.5 环境变量配置问题,hadoop配置jdk环境,如果不配置启动也会报错。6.6 配置问题 /opt/hadoop-3.1.3/etc/hadoop/目录下的配置文件 如果配置错误也会导致报错各种问题,所以配置需要仔细检查 6.7 其他问题,这里包括版本包的问题,依赖包的问题,不能太新也不能太旧总结: 首先部署hadoop集群其实还是比较麻烦的,环境配置,各个配置的依赖,节点信息,当然部署过程难免也会遇到很多问题,但是我们在解决一个困扰很久的问题的时候你不仅在成长还会收获满满的成就感。 ————没有与生俱来的天赋,都是后天的努力拼搏(我是小杨,谢谢你的关注和支持) dfs.namenode.name.dir file:/data/hadoop/hadoop_data/hdfs/namenode