服务器其它

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 服务器其它 > 云服务器搭建Hadoop

云服务器搭建Hadoop分布式的过程详解

作者:几窗花鸢

这篇文章主要介绍了云服务器搭建Hadoop分布式的过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

1.服务器配置

服务器主机名配置
115.157.197.82s110核
115.157.197.84s210核
115.157.197.109s310核
115.157.197.31s410核
115.157.197.60gracal10核

所有的软件安装在/opt/module下,软件安装包在/opt/softs下

2.Java环境

所有的服务器的java统一1.8版本,查看java版本

java --version

​ 若存在java环境不统一,或者没有1.8版本的jdk

无1.8版本的java

 yum install -y java-1.8.0-openjdk*

环境不统一

#查看java版本
alternates --config java
#选择1.8版本的数字

相关的JAVA_HOME、Hadoop_HOME环境变量都保存在/etc/profile.d/my_env.sh

3. 安装Hadoop

4. 集群配置

各个组件的分布情况

s1s2s3s4gracal
HDFSNameNode DataNameNodeDataNameNodeSecondaryNameNode DataNameNodeDataNameNodeDataNameNode
YARNNodeManagerResourceManager NodeManagerNodeManagerNodeManagerNodeManager

常用端口配置 (分Hadoop2.x和Hadoop3.x的区别)

端口名称Hadoop2.xHadoop3.x
NameNode内部通信端口8020/90008020/
NameNode HTTP UI500709870
MapReduce查看执行任务端口80888088(容易和框架端口冲突,本文配置的7666)
历史服务器通信端口1988819888

6.1 发现在本地主机telnet s2 7666可以成功访问,但是curl s2:7666没有输出页面的任何信息

6.2 使用cur -v s2:7666查看相关信息

成功返回了相关的html信息,说明页面其实是可以访问的

6.3 但是浏览器端还是无法访问:后查询到浏览器可能配置了代理服务器,而’curl’命令未配置代理。代理服务器会烦扰浏览器的访问。

因此我关闭了VPN代理,成功访问到s2:7666页面!!

以后VPN代理一定要慎用!!!排查了这么久发现最后居然是代理问题

[gaochuchu@s1 hadoop-3.1.3]$ sbin/start-dfs.sh
[gaochuchu@s1 hadoop-3.1.3]$ sbin/start-yarn.sh

问题:

解决:

运行hadoop自带的wordcount示例程序报错,并且一直卡在Running Job位置,报错信息如下:

java.io.IOException: Got error, status=ERROR, status message , ack with firstBadLink as [某ip]:9866
at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.checkBlockOpStatus(DataTransferProtoUtil.java:134)
at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.checkBlockOpStatus(DataTransferProtoUtil.java:110)
at org.apache.hadoop.hdfs.DataStreamer.createBlockOutputStream(DataStreamer.java:1778)
at org.apache.hadoop.hdfs.DataStreamer.nextBlockOutputStream(DataStreamer.java:1679)
at org.apache.hadoop.hdfs.DataStreamer.run(DataStreamer.java:716)
......
Caused by: java.net.NoRouteToHostException: No route to host
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:716)
at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:531)
at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:700)
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:804)
at org.apache.hadoop.ipc.Client$Connection.access$3800(Client.java:421)
at org.apache.hadoop.ipc.Client.getConnection(Client.java:1606)
at org.apache.hadoop.ipc.Client.call(Client.java:1435)
... 19 more

如何解决这种问题?

说明s1服务器和…31:9866可能是不连通的

经查找相关资料说明是…31服务器的icmp(Internet Control Message Protocol)被禁用导致。
命令查看iptable是否有防火墙设置:

iptables -L INPUT --line-numbers

发现:

命令删除这条记录:

iptables -D INPUT 28

5. 编写集群的启动脚本

因为每次集群启动需要在NameNode节点的HADOOPHOME目录下使用命令启动HDFS

sbin/start-dfs.sh

在Yarn节点上通过命令启动Yarn(ResourceManager)

 sbin/start-yarn.sh

配置了历史服务器,还需要在历史服务器的节点上使用命令启动历史服务器

mapred --daemon start historyserver

相应的停止集群也需要通过以下三个命令来停止集群

sbin/stop-dfs.sh
sbin/stop-yarn.sh
mapred --daemon stop historyserver

因此,可以编写相关的脚本启停(HDFS Yarn Historyserver)

#启动Hadoop集群
myhadoop.sh start
#停止Hadoop集群
myhadoop.sh stop

服务器各节点的状态都需要通过在笔不同服务器上通过jps命令查看,比较麻烦

到此这篇关于云服务器搭建Hadoop分布式的过程详解的文章就介绍到这了,更多相关云服务器搭建Hadoop内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文