欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)

程序员文章站 2022-07-03 15:20:48
...

写这篇文章是为了记录我自己在云平台上学习安装的过程,希望能为其他的同学提供一点帮助:

服务器类型

这里我使用的服务器有:
node1 阿里云(学生机)Ubuntu (NameNode)
node2 百度云(学生机)CentOs (SecondaryNamenode,datanode)
node3 华为云(学生机)CentOs (datanode)
node4 腾讯云(学生机)CentOs (datanode)
(下面我就用前的别名代替各个主机了)

jdk配置

开始前先确认自己所有的机器是否已经都安装好了jdk,并配置好环境变量,且路径要一致,这样是方便后面修改Hadoop的配置文件。

我自己的
云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)
详情就不在这里说了,如果有不知道的同学可以搜一下,其他大佬的解读都比我要详细,深入。
这里一定要保持所有的云服务器都是一样的

本地代理 /etc/hosts 配置:

vi /etc/hosts

云服务器一般是有两个ip地址,而这俩个ip地址正是最大的坑,这里建议大家将自己服务器的俩个ip都写在hosts中,这样方便统一和复制,当然也可以不用这样写,这点大家看完之后就明白了
云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)
第一列是ip地址, 第二列是为了区分各个服务器取的名字,第三列是我去的别名,为了简单书写和区分集群中的节点, 最后一列是标注

下载Hadoop

还没有下的同学可以在Hadoop官网下载自己需要的版本, 在这里我用的是hadoop-2.9.2.tar.gz

下载之后用xftp上传到自己的服务器上,(先node1,主要配置node1的)
解压:

tar -zxvf hadoop-2.9.2.tar.gz

修改名字(为了方便操作)并移动到local目录下:

mv hadoop-2.9.2.tar.gz hadoop292
mv hadoop292 /usr/local/

设置ssh免密登陆

ssh就是你登陆主机的一种方式,有密码登陆,和key登陆,可以将自己服务的key传给其他机器这样就可以不用每次连接都输入密码(hadoop集群之间的数据交流时很密集的,每次输入密码时不现时的)具体如何做且看下面

node1:

ssh-****** -t rsa -P '' -f ~/.ssh/id_rsa   #生成本机**

指令成功后在 ~/.ssh/文件下 应该会生成
云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)
这两个文件,id_rsa表示私钥,id_rsa.pub表示公钥,接着执行下面指令

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  #将本机公钥加到受信列表中
ssh node1 #测试能否直接登陆, 如果所在目录发生了改变说明成功
exit  #退出

剩余所有服务都执行一次以上命令,生成属于各自的**

生成各自的**完成后进入node2:

scp ~/.ssh/id_rsa.pub node1:/tmp/ #将node2的公钥发送到node1节点

如果以前没有进行过**互通,这里应该会出现一个绑定,yes就完事了,然后会然你输入密码,这里的密码是寻常登陆node1时的密码,输入密码后开始传送。

传送成功后再进入node1:

cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys  #将node2传送过来的**追加到authorized_keys中
ssh node2 #测试是否能登陆到node2机器
exit 成功后退出

成功后 重复node2的操作 将node3,node4的**都加到node1中,这样node1节点就能密码等路剩余其他节点了。当然如果你喜欢也可以把各个节点都互通(●’◡’●)。

Namenode的配置

好,来到了最激动人心的环节了,这里需要注意一下我操作的节点

node1:

配置环境变量vi /etc/profile

追加:export HADOOP_HOME=/usr/local/hadoop292
在 export PATH=$PATH:$JAVA_HOME/bin 后
追加 :$HADOOP_HOME/bin:$HADOOP_HOME/sbin
(注意自己的路径)

最后应该是这样的:
云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)
保存退出,source /etc/profile #应用修改后环境变量

这时候输入 hdfs 指令如果出现指令使用文档则说明配置成功

进入/usr/local/hadoop292/etc/hadoop/ 进行Hadoop的各种配置

设置 hadoop-env.sh

vi /usr/local/hadoop292/etc/hadoop/hadoop-env.sh 

#将 export JAVA_HOME=${JAVA_HOME} 修改成 JAVA_HOME=/usr/java/jdk8
保存退出
云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)

参照官方Hadoop文档,官方文档更靠谱,你值得拥有。

设置 core-site.xml

vi /usr/local/hadoop292/etc/hadoop/core-site.xml 

下面代码加入

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node01:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <!-- hadoop数据存储位置,初始化前要保证此目录不存在-->
        <value>/opt/hadoopdata</value>
    </property>
</configuration>

来了一个重点,<value>hdfs://node01:9000</value>中node01表示的node1节点的私网地址这点不能错,如果不是私网的话Namenode就启动不了

记住在本机服务器上配置的时候需要本机ip时填的是本机的私网ip,填其他服务器Iip时是填的公网,我就是被这个玩意坑的。

配置 hdfs-site.xml

vi /usr/local/hadoop292/etc/hadoop/hdfs-site.xml 

加入以下代码

	<property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node2:52222</value>
    </property>

说明:第一个property块是配置数据副本,第二是配置SecondaryNamenode所在的节点,注意这里的node2 因为不是本服务器的ip所以要用公网 52222 是端口,端口可以修改,只要不与其他端口冲突就行。

配置 slaves :(datanode 所在节点)

vi /usr/local/hadoop292/etc/hadoop/slaves 

输入

node2
node3
node4

因为只有三个数据节点,所以只输入三个。

配置 masters :(SecondaryNamenode所在节点)

因为2.x版本允许多个SecondaryNamenode在不同的节点,但是同时只能有一个running,masters本身不存在需要自己创建一个

vi /usr/local/hadoop292/etc/hadoop/masters

因为我们设计了一个SecondaryNamenode所以只需要加入

node2

保存退出

至此,node1的配置基本完成,接下来配置其他的节点

配置其它节点

在其他服务器上同样完成前面的下载操作,保持所有的路径和文件名一致,这样方便操作,也能减少错误。

node1:
#将node1配置好的配置文件传到node2的hadoop上

scp /usr/local/hadoop292/etc/hadoop/* node2:/usr/local/hadoop292/etc/hadoop/

重复完成剩下的节点

node2:

修改 core-site.xml

node01 修改为 node1
(将node1的私网修改成node1的公网)
云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)
云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)

修改 hdfs-site.xml

将node2 修改成 node02
因为这是node2节点,所以需要将用到ip的配置中将其修改成node2的内网ip node02 同理其它只要涉及ip的地方都需要进行小小修改
云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)
云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)

修改 slaves

将node2 修成node02
云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)
云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)

修改 masters

同样是将node2 修成node02

剩下节点

剩下的datanode节点只需要修改slaves , masters 同样的道理,自己本机的在配置文件中引用本机ip就使用内网ip,引用其他服务器就用外网ip。

测试

node1:

start-dfs.sh #启动
stop-dfs.sh #停止

启动:完成动画
云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)
各个节点输入 jps 测试:
node1 :需要出出现下面项云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)
node2:需要出出现下面项
云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)
node3:
云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)
node4:
云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)

最后,关掉所有的防火墙
Ubuntu :sudo ufw disable (如果没有ufw 可以从apt下载)
CentOs:systemctl stop firewalld
禁用 systemctl disable firewalld

网页打开 localhost:50070 ( localhost Namenode所在的服务器公网ip)
出现下面界面说明成功!!
云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)

到此Hadoop 的 Nameode,SecondaryNamenode,datanode配置成功!