yarn默认端口号,yarn 端口
集群常见错误解决方案
解决方法:zookeeper的IP要配对?
解决方法:先安装好hadoop?
解决方法:host配置正确,/etc/sysconfig/network??? /etc/hosts??? /etc/sysconfig/network-scripts/ifcfg-eth0?
解决方法:SSH配置错误导致,主机名一定要严格匹配,重新配置ssh免密码登录?
5、建议:不要随意格式化HDFS,这会带来数据版本不一致等诸多问题,格式化前要清空数据文件夹?
解决方法:sshd被关闭或没安装导致,which sshd检查是否安装,若已经安装,则sshd restart,并ssh 本机hostname,检查是否连接成功?
解决方法:在yarn-site.xml中增加相应配置,以支持日志聚合?
解决方法:yarn-lient模式出现的异常,暂时无解?
解决方法:windows系统不能解析域名所致,把hosts文件hostname复制到windows的hosts中?
10、建议:HDFS文件路径写法为:hdfs://master:9000/文件路径,这里的master是namenode的hostname,9000是hdfs端口号。?
解决方法:将 ? 配置到yarn-site.xml中,重启yarn和JobHistoryServer?
解决方法:namonode节点终端执行:hdfs dfs -chmod -R 755 /?
13、建议:提交到yarn cluster的作业不能直接print到控制台,要用log4j输出到日志文件中?
解决方法:1.把UTF改成小写utf-8??? 2.设置编码那行有空格?
解决方法:资源不能分配过大,或者没有把.setMaster("local")去掉
解决方法:通过三节点zookeeper集群和yarn-site.xml配置文件完成Yarn HA?
解决方法:恢复Yarn Http默认端口8088?
解决方法:配置文件不正确,例如hostname不匹配等?
解决方法:find / -type f -size +10G??
解决方法:运行指令hdfs balancer -Threshold 3 或者 运行 start-balancer.sh 脚本格式:$Hadoop_home/bin/start-balancer.sh -threshold,参数3是比例参数,表示3%,也就是平各个DataNode直接磁盘使用率偏差在3%以内?
21、建议:数据倾斜只发生在shuffle过程,可能触发shuffle操作的算子有:distinct? groupByKey? reduceByKey? aggregateByKey? join? cogroup? repartition等?
解决方法:yarn-site.xml配置有问题,检查并规范各项配置?
解决方法:Hadoop 2.x中YARN系统的服务日志包括ResourceManager日志和各个NodeManager日志,它们的日志位置如下:ResourceManager日志存放位置是Hadoop安装目录下的logs目录下的yarn-*-resourcemanager-*.log,NodeManager日志存放位置是各个NodeManager节点上hadoop安装目录下的logs目录下的yarn-*-nodemanager-*.log?
24、建议:小于128M的小文件都会占据一个128M的BLOCK,合并或者删除小文件节省磁盘空间?
解决方法:1)清除hadoop数据目录中用户缓存文件:cd /data/hadoop/storage/tmp/nm-local-dir/usercache;du -h;rm -rf `find? -type f -size +10M`;? 2)清理Linux文件系统中的垃圾数据?
解决方法:cd /etc/profile.d;在这里新建相应配置脚本?
解决方法:未启动的节点缺少yarn相关包,要保持所有节点jar包一致?
???? fs.trash.interval?
???? 2880?
???? HDFS垃圾箱设置,可以恢复误删除,配置的值为分钟数,0为禁用?
恢复文件执行 hdfs dfs -mv? /user/root/.Trash/Current/误删文件??? /原路径?
解决方法:Linux脚本修改后实时生效,务必在脚本全部执行完再修改,以免产生副作用?
Spark On Yarn部署
本文使用的软件环境同 第一篇 ,另增加了hadoop的环境:
另外扯一句题外话,由于hadoop体系的复杂,我会从最简单的层级来配置,多余的配置项不会列出。
所有机器的jdk、spark、hadoop版本,目录位置都相同。
配置的基础是集群主机到从机的无密码ssh登录,spark需要hdfs和yarn集群同时运行。在 官方文档 上一句话提及了这一点:
这是一个坑,很多文章都没有强调hdfs集群配置的重要性。
这一步主要参考 Hadoop集群配置官方文档 。
进入 HADOOP_DIR/etc/hadoop/ 目录,为了让hadoop系列服务能够启动,首先需要修改 hadoop-env.sh 文件,指定JDK的目录所在。 JAVA_HOME 这个变量如果在 .bashrc 中 export 了,hadoop执行脚本时还是不行的,所以要在hadoop自己的配置文件中指定。无论主从机都需要。
接着修改hadoop的一些核心配置,修改同目录下的 core-site.xml 文件,指定hdfs的NameNode的位置:
接着配置hdfs集群,需要修改同目录下的 hdfs-site.xml 文件,这个主从机有所不同,对于namenode,需要指定namenode存放文件的路径:
修改同目录下的slaves文件,将从机名称一机一行写入。
在主机HADOOP_DIR下执行Name Node的初始化及集群的启动脚本:
需要检验一下hdfs集群是否成功,这里再次说明,不要相信jps的输出,即便jps的输出完备,各种角色都列出了,也不一定说明集群能正常运行了,只有从web控制台看到主从机的信息才算配置正常了。
hdfs的默认web端口在50070,用浏览器访问Name Node的50070端口就可以看到结果:
修改同目录下的 yarn-site.xml 文件,设定 yarn.resourcemanager.hostname 为Resource Manager主机名,主从机都需要:
在主机HADOOP_DIR下执行Yarn的启动脚本
yarn的web控制台默认端口是8088,访问Resouce Manager所在主机的8088端口就可以看到yarn的集群情况:
修改SPARK_DIR/conf目录下的 spark-env.sh 文件,将 HADOOP_CONF_DIR 变量指定到hadoop配置文件目录并导出。
在集群中任意机器上执行以下测试看看结果:
Hadoop默认端口表及用途
| 端口 用途 |
| 9000 | fs.defaultFS,如:hdfs://172.25.40.171:9000 |
| 9001 | dfs.namenode.rpc-address,DataNode会连接这个端口 |
| 50070 | dfs.namenode.http-address |
| 50470 | dfs.namenode.https-address |
| 50100 | dfs.namenode.backup.address |
| 50105 | dfs.namenode.backup.http-address |
| 50090 | dfs.namenode.secondary.http-address,如:172.25.39.166:50090 |
| 50091 | dfs.namenode.secondary.https-address,如:172.25.39.166:50091 |
| 50020 | dfs.datanode.ipc.address |
| 50075 | dfs.datanode.http.address |
| 50475 | dfs.datanode.https.address |
| 50010 | dfs.datanode.address,DataNode的数据传输端口 |
| 8480 | dfs.journalnode.rpc-address |
| 8481 | dfs.journalnode.https-address |
| 8032 | yarn.resourcemanager.address |
| 8088 | yarn.resourcemanager.webapp.address,YARN的http端口 |
| 8090 | yarn.resourcemanager.webapp.https.address |
| 8030 | yarn.resourcemanager.scheduler.address |
| 8031 | yarn.resourcemanager.resource-tracker.address |
| 8033 | yarn.resourcemanager.admin.address |
| 8042 | yarn.nodemanager.webapp.address |
| 8040 | yarn.nodemanager.localizer.address |
| 8188 | yarn.timeline-service.webapp.address |
| 10020 | mapreduce.jobhistory.address |
| 19888 | mapreduce.jobhistory.webapp.address |
| 2888 | ZooKeeper,如果是Leader,用来监听Follower的连接 |
| 3888 | ZooKeeper,用于Leader选举 |
| 2181 | ZooKeeper,用来监听客户端的连接 |
| 60010 | hbase.master.info.port,HMaster的http端口 |
| 60000 | hbase.master.port,HMaster的RPC端口 |
| 60030 | hbase.regionserver.info.port,HRegionServer的http端口 |
| 60020 | hbase.regionserver.port,HRegionServer的RPC端口 |
| 8080 | hbase.rest.port,HBase REST server的端口 |
| 10000 | hive.server2.thrift.port |
| 9083 | hive.metastore.uris |
其中最常用的应该是50070和8088了
WEB界面中监控任务执行状况: