云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)
写这篇文章是为了记录我自己在云平台上学习安装的过程,希望能为其他的同学提供一点帮助:服务器类型这里我使用的服务器有:node1 阿里云(学生机)Ubuntu(NameNode)node2 百度云(学生机)CentOs(SecondaryNamenode,datanode)node3 华为云(学生机)CentOs(datanode)node4 腾讯云(学生机)CentOs...
写这篇文章是为了记录我自己在云平台上学习安装的过程,希望能为其他的同学提供一点帮助:
服务器类型
这里我使用的服务器有:
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配置成功!
更多推荐
所有评论(0)