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

服务器类型

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

jdk配置

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

我自己的
在这里插入图片描述
详情就不在这里说了,如果有不知道的同学可以搜一下,其他大佬的解读都比我要详细,深入。
这里一定要保持所有的云服务器都是一样的

本地代理 /etc/hosts 配置:

vi /etc/hosts

云服务器一般是有两个ip地址,而这俩个ip地址正是最大的坑,这里建议大家将自己服务器的俩个ip都写在hosts中,这样方便统一和复制,当然也可以不用这样写,这点大家看完之后就明白了
在这里插入图片描述
第一列是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 hadoop292
mv hadoop292 /usr/local/

设置ssh免密登陆

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

node1:

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

指令成功后在 ~/.ssh/文件下 应该会生成
在这里插入图片描述
这两个文件,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
(注意自己的路径)

最后应该是这样的:
在这里插入图片描述
保存退出,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文档,官方文档更靠谱,你值得拥有。

设置 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的公网)
在这里插入图片描述
在这里插入图片描述

修改 hdfs-site.xml

将node2 修改成 node02
因为这是node2节点,所以需要将用到ip的配置中将其修改成node2的内网ip node02 同理其它只要涉及ip的地方都需要进行小小修改
在这里插入图片描述
在这里插入图片描述

修改 slaves

将node2 修成node02
在这里插入图片描述
在这里插入图片描述

修改 masters

同样是将node2 修成node02

剩下节点

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

测试

node1:

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

启动:完成动画
在这里插入图片描述
各个节点输入 jps 测试:
node1 :需要出出现下面项在这里插入图片描述
node2:需要出出现下面项
在这里插入图片描述
node3:
在这里插入图片描述
node4:
在这里插入图片描述

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

网页打开 localhost:50070 ( localhost Namenode所在的服务器公网ip)
出现下面界面说明成功!!
在这里插入图片描述

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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐