Centos7环境下Hadoop1.x集群搭建详解(图文)

话不多说,直接进入正题



hadoop官网:https://hadoop.apache.org/

规划如下:


 

一、准备虚拟机

1、安装了jdk

我这里安装的是jdk1.8   Centos下安装jdk1.8

2、设置固定ip

https://www.cnblogs.com/lfhappy/p/10798400.html

3、关闭防火墙

关闭防火墙:(仅设置这个,在下次启动的时候,防火墙仍然会打开)

#systemctl stop firewalld.service 

禁止firewall开机启动:

#systemctl disable firewalld.service 

4、时间同步

https://blog.csdn.net/qq_42679299/article/details/103753792

5、配置hosts文件

做好映射,这样方便配置使用,不然会需要使用ip访问

①.第一步,虚拟机配置hosts文件

vim /etc/hosts    #修改hosts文件配置

②windows配置hosts文件

路径:   C:\Windows\System32\drivers\etc\hosts

配置完成后ping一下node1看一下是否能ping到。下图表示能ping到


我这里是使用VM创建了一个Centos7虚拟机node1(作为NameNode),克隆了三个虚拟机分布命名为node2(作为SecondaryNameNode),node3,node4。

克隆后需要修改主机名和ip:修改主机名与ip


二、免秘钥登录

为什么要免秘钥登录?因为每次使用“ssh 用户名@主机名”去登录的时候,都需要输入密码,会很麻烦。

我们可以使用RSA加密解密来解决这个问题,RSA安全性很高,黑客即便得到了公钥,没有私钥也无法破解。

借一张百度百科的图给大家看看RSA:

再看看RSA在Hadoop中的应用:

进入正题。。。。。

1、生成公钥秘钥

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

2、加入到授信列表中

#将本机公钥加入到  授信列表中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  

现在进入自己的是不需要密码了。。。

exit   #执行命令exit可以退出当前

3、让node2,node3,node4也能免密登录

①、执行以下命令,将公钥传给node2,node3,node4:

scp ~/.ssh/id_rsa.pub     node2:/tmp/

scp ~/.ssh/id_rsa.pub     node3:/tmp/

scp ~/.ssh/id_rsa.pub     node4:/tmp/

#每次执行都要输入yes和密码

②、进入node2,node3,node4远程连接分别执行以下操作

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa    #生成公钥秘钥

cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys  #加入到node中的公钥列表中

③、验证是否需要密码

 

现在node1可以免密登录node2,node3,node4。但现在node234不能免密登录node1,如果需要,可以将node2的公钥传给node1,执行上述操作


三、Hadoop安装与配置

1、用xftp6将hadoop传进入

我个人喜欢将它放在 /usr/local 下,这里我使用的是hadoop-2.5.2.tar.gz版本的

2、解压

#忘记提前截图了 那就懒得截图了吧  上命令
ls    #查看压缩包

tar -xvf hadoop-2.5.2.tar.gz   #解压 hadoop-2.5.2.tar.gz

mv hadoop-2.5.2 hadoop252   # 名字太长,用起来麻烦,改一下

rm -rf hadoop-2.5.2.tar.gz  # 把hadoop-2.5.2.tar.gz压缩包给删了

3、修改环境变量

#执行以下命令
vim /etc/profile

修改变量
 

export HADOOP_HOME=/usr/local/hadoop252

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin


#修改完成后,执行以下命令保存并退出

:wq+回车键

source /etc/profile   

然后就可以运行 /usr/local/hadoop252/bin 下的命令了

如果运行hdfs出现以下情况,则表现环境变量配置完成

4、配置

hadoop内也有一个文件配置目录 /usr/local/hadoop252/etc

①查看一下有哪些配置文件

②开始配置第一个,hadoop-env.sh:

vim /usr/local/hadoop252/etc/hadoop/hadoop-env.sh


修改export JAVA_HOME为 export JAVA_HOME=/usr/local/jdk1.8.0_211

 

③配置第二个,core-site.xml:

#进入core-site.xml
vim /usr/local/hadoop252/etc/hadoop/core-site.xml

#添加以下配置
<property>
       <name>fs.defaultFS</name>
       <value>hdfs://node1:9000/</value>
</property>
<property>
       <name>hadoop.tmp.dir</name>
       <value>/opt/hadoopdata</value>
</property>

④配置第三个,hdfs-site.xml:

 vim /usr/local/hadoop252/etc/hadoop/hdfs-site.xml


#添加以下配置 
#注意这里的50090端口号,端口号前一万不建议用,一万以后的可以用,端口一共是1/65534
<property>
        <name>dfs.replication</name>
        <value>3</value>
 </property>
 <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node2:50090</value>
 </property>

⑤配置第四个,slaves

vim /usr/local/hadoop252/etc/hadoop/slaves

#指定datanode,这里进去默认的是localhost,改为node2,node3,node4
#一行一个,如果没有做前面hosts文件配置,也就是映射,那么用ip

“:wq”保存并退出就可以了

⑥自己创建一个master文件,指定secondaryNameNode

#原本是没有masters的,因为他默认的是自己就是masters,所以需要创建一个
vim /usr/local/hadoop252/etc/hadoop/masters


四、同步配置文件到其他节点

#xshell连接node1依次执行以下命令
scp -r hadoop252/    node2:/usr/local/

scp -r hadoop252/    node3:/usr/local/

scp -r hadoop252/    node4:/usr/local/

检查一下,是否同步了,下图是已经同步

同步完成后,去node234的/etc/profile配置HADOOP_HOME环境变量,修改方式见上面的“修改环境变量”


五、格式化

#执行以下命令,格式化
hdfs namenode     -format

#可以直接运行hdfs命令查看有哪些命令


六、启动

start-dfs.sh

接下来看看进程

node1:

node2:

node3:

node4:


七、测试

#查看nameNode

http://node1:50070

查看secondaryNameNode

http://node2:50090


#如果访问不到
#先查看,是否关闭node1和node2的防火墙,没有关闭的话需要关闭防火墙
#node3和node4的防火墙也可以一并关了,这样才可以访问到node3和node4。但是仅限于学习阶段这样使用,上线的话不能这样
systemctl status firewalld.service  #查看防火墙状态
systemctl stop firewalld.service  #停用防火墙,但是下次启动仍然会启动
systemctl disable firewalld.service  #禁用防火墙服务器,这样下次不会启动

#还没有解决问题,再去本机ping一下node1,node2查看是否配置了hosts文件
#ping失败了再看最前面的准备阶段的hosts文件配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值