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

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

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

vim /etc/host

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

ping一下其他两个设备,发现没有问题。可以-n指定包数,也可以ctrl+c手动终止。
云服务器搭建 hadoop集群(全过程详解&解决碰到的问题)_第1张图片

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

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

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

vim /etc/profile

配置文件如下(每台服务器内均配置此文件。)
云服务器搭建 hadoop集群(全过程详解&解决碰到的问题)_第2张图片

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配置文件如下
云服务器搭建 hadoop集群(全过程详解&解决碰到的问题)_第3张图片
再传给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.defaultFSname>
                <value>hdfs://centos01:9000value>
        property>
<property>
                <name>hadoop.tmp.dirname>
                <value>/opt/modules/hadoop-2.10.0/tmpvalue>
        property>
configuration>

hdfs-site.xml

<configuration>
        <property>
                <name>dfs.replicationname>
                <value>2value>
        property>
        <property>
                <name>dfs.permission.enabledname>
                <value>falsevalue>
        property>
        <property>
                <name>dfs.namenode.name.dirname>
                <value>/opt/modules/hadoop-2.10.0/tmp/dfs/namevalue>
        property>
        <property>
                <name>dfs.datanode.data.dirname>
                <value>/opt/modules/hadoop-2.10.0/tmp/dfs/datavalue>
        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.namename>
                <value>yarnvalue>
    property>
configuration>

yarn-site.xml

<configuration>
        <property>
                <name>yarn.nodemanager.aux-servicesname>
                <value>mapreduce_shufflevalue>
        property>
        <property>
                <name>yarn.resourcemanager.addressname>
                <value>centos01:8032value>
        property>
configuration>

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

java -version
hadoop version

centos01
云服务器搭建 hadoop集群(全过程详解&解决碰到的问题)_第4张图片
centos02
云服务器搭建 hadoop集群(全过程详解&解决碰到的问题)_第5张图片
centos03
云服务器搭建 hadoop集群(全过程详解&解决碰到的问题)_第6张图片
发现没有问题。

在centos01节点下格式化NameNode

hdfs namenode -format

格式化完毕后用如下命令

start-all.sh

启动所有节点
结果如下图
云服务器搭建 hadoop集群(全过程详解&解决碰到的问题)_第7张图片
最后

jps查看各服务器状态
centos01
云服务器搭建 hadoop集群(全过程详解&解决碰到的问题)_第8张图片

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

你可能感兴趣的:(linux,分布式数据库,hive,hadoop,服务器,分布式,hdfs,数据库架构)