irpas技术客

云服务器搭建 hadoop集群(全过程详解&解决碰到的问题)_Object_in_java_云服务器搭建hadoop

大大的周 8126

该hadoop集群 采用三台真实的部署在公网的服务器(系统为centos)进行分布式搭建。(两台腾讯云,一台阿里云) 过程中遇到问题可以翻到最下方,或者评论区留言。

先建立ip映射,由于是云端服务器,则直接使用真实的公网ip。每台服务器内均配置此文件。

vim /etc/host

(ps:对应的服务器对自己操作时最好用自己的内网ip,例如centos01的配置文件: 此处的10.0.16.6为云服务器商提供的内网地址 如果不改可能导致namenode无法启动。因为对内操作要用内网地址。 )

ping一下其他两个设备,发现没有问题。可以-n指定包数,也可以ctrl+c手动终止。

创建两个文件夹,softwares用于存储压缩包。moudules存储解压后的文件(jdk,hadoop)

sudo mkdir /opt/softwares sudo mkdir /opt/modules

查看全局配置文件(添加环境变量)

vim /etc/profile

配置文件如下(每台服务器内均配置此文件。)

export JAVA_HOME=/opt/modules/jdk1.8.0_241 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH export HADOOP_HOME=/opt/modules/hadoop-2.10.0 export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

先修改centos01配置文件如下 再传给centos02,03 注意:如果如果用的不是hadoop用户记得更改用户名(例如root) 配置文件具体如下: /opt/modules/hadoop-2.10.0/hadoop 目录下 向hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中 添加jdk环境变量

export JAVA_HOME=/opt/modules/jdk1.8.0_241 export JAVA_HOME=/opt/modules/jdk1.8.0_241 hadoop集群又分为HDFS集群、YARN集群

具体可参考hadoop集群概述,我的另一篇博客。 然后我们分别配置HDFS集群、YARN集群。

配置HDFS集群

core-site.xml

<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://centos01:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/modules/hadoop-2.10.0/tmp</value> </property> </configuration>

hdfs-site.xml

<configuration> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.permission.enabled</name> <value>false</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/opt/modules/hadoop-2.10.0/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/opt/modules/hadoop-2.10.0/tmp/dfs/data</value> </property> </configuration>

slaves

centos01 centos02 centos03 配置YARN集群

复制mapred-site.xml.template文件并重命名为mapred-site.xml

cp mapred-site.xml.template mapred-site.xml

在文件mapred-site.xml插入如下内容

<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>

yarn-site.xml

<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>centos01:8032</value> </property> </configuration>

在centos01中配置完成后,并且配置文件传给centos02,centos03后, 分别查看三台服务器的jdk和hadoop是否安装成功。

java -version hadoop version

centos01 centos02 centos03 发现没有问题。

在centos01节点下格式化NameNode

hdfs namenode -format

格式化完毕后用如下命令

start-all.sh

启动所有节点 结果如下图 最后

jps查看各服务器状态 centos01

centos02(最下面那个和本次实验无关) centos03 done!

ps: 中间也出现了需多问题,可以看看你是否也有相同问题 1.Exception in thread “main” java.lang.RuntimeException: com.ctc.wstx.exc.WstxParsingException: Illegal to have multiple roots (start tag in epilog?). at [row,col,system-id]: [21,2,“file:/opt/modules/hadoop-2.10.0/etc/hadoop/yarn-site.xml”] 这个问题时configuration过多,更改配置不是像改配置文件向配置文件中添加环境变量一样在最下方添加即可,而是要加在configuration标签之间(或者dn(行数)d删除掉原本的configuration,然后直接粘贴全部配置),要符合xml格式也要符合这个规则。 2 类似于如下报错的 centos03*************** caused by ****** /opt/modules/hadoop-2.10.0/etc/hadoop: No such file or directory 这种原因则是因为传输时导致文件缺失,传输中断等原因。 我一开始使用xftp传输到centos03(边scp到02,这样快),但这么做会有权限问题,chmod -R 777后 解决权限问题,但是依然缺少路径,所以我又使用了centos02的方法 scp****,最后断网后传输好像中断了,又传输了一遍,终于启动后没有这个报错了,我在centos03中直接cd 报错的路径也是没有问题了。 3 其他无法启动或启动失败的问题

可以考虑删除core配置文件下配置的hadoop的临时文件,然后重新装配NameNode。 再启动 4 Caused by: java.net.BindException: Cannot assign requested address: JVM_Bind 一开始namenode无法启动,查看日志后发现了这个错误,这个错误主要是ip问题或者端口问题。 我这边是修改了hosts文件centos01的ip地址为自己的内网ip。就可以正常启动了。

云服务器相关问题

1 ping 不通 可能是因为安全组没有开放ICMP协议,或者某个端口没开放(只有华为云有这个问题),我开放了全部安全组后就可以ping通了。 2 使用xftp 这种linux->linux,windows->linux的文件传输软件时,要考虑权限问题。有时chmod -R 777 dir 能解决问题,有时不能。 3


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #云服务器搭建hadoop #云服务器搭建hadoop集群 #Hadoop #Cluster #Cloud