hadoop高可用安装步骤及环境配置

本文详细介绍了在Linux环境下进行Hadoop高可用集群的安装步骤,包括分发和安装JDK、配置免密钥登录、同步服务器时间、修改配置文件、安装Zookeeper、启动JournalNode、格式化NameNode、启动HDFS集群以及MapReduce的准备工作。过程中强调了注意事项和常见问题,如多次格式化可能导致的问题,以及电脑配置对运行的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hadoop高可用安装

要给自己的电脑内存留有足够的空间,且电脑配置要好一点。
在进行免密钥时要进入.ssh目录下且ssh之后不要忘记exit。
命令的路径不要进入错误。
在输入命令时要仔细查看命令,不要输错。
在格式化的时候最好不要多次格式化,可能会出现一些问题。
因为我的电脑配置跟不上,所以在启动所有集群之后,电脑非常的卡,而且机子也经常崩掉,所以在跑wordcount时经常卡住,没有成功的跑全wordcount。

(一)分发jdk到node03、node04、node05

scp jdk-7u67-linux-x64.rmp node03:pwd
scp jdk-7u67-linux-x64.rmp node04:pwd
scp jdk-7u67-linux-x64.rmp node05:pwd

并在Xshell的全部会话栏里ll一下,看jdk是否发送成功
截图如下:
在这里插入图片描述

(二)给node03、node04、node05分别安装jdk

1.分别在node03、node04、node05上执行rpm命令
-rpm –I jdk-7u67-linux-x64.rpm

2.在note02上cd /etc,在此目录下把profile文件分发到node03、node04、node05上
scp profile node03:pwd
scp profile node04:pwd
scp profile node05:pwd

3.利用Xshell全部对话栏,source /etc/profile

4.再利用Xshell全部对话栏,jps,看03、04、05这三台机子
结果如下:
在这里插入图片描述

(三)同步所有服务器时间

1.-date 查看机子当前的时间
时间不能差太大,否则集群启动后某些进程跑不起来

2.若时间不同步
yum进行时间同步器的安装
-yum –y install ntp
执行同步时间
-ntpdate time1.aliyun.com 和阿里云服务器时间同步
在这里插入图片描述

(四)装机之前的配置文件

1.-cat /etc/sysconfig/network
查看HOSTNAME是否正确
要与自己查询的这台机子名字符合

2.-cat /etc/hosts
查看IP映射是否正确

3.-cat /etc/sysconfig/selinux
查看是否SELINUX=disabled

4.service iptables status查看防火墙是否关闭
在这里插入图片描述

(五)NN与其他三台机子的免密钥配置

1.在家目录下ll –a看下有无.ssh文件,如果没有就ssh localhost一下,并exit。
然后cd .ssh,并ll一下

2.把note02的公钥发给其他三台机子
-scp id_dsa.pub node03:pwd/note02.pub
-scp id_dsa.pub node04:pwd/note02.pub
-scp id_dsa.pub node05:pwd/note02.pub

3.分别在node03、node04、node05的.ssh目录下看是否有note02.pub
如果有,那就追加到authroized_keys
-cat note02.pub >> authorized_keys
并且在note02上ssh node03、ssh node04、ssh node05

重点:每次ssh都要exit一下
在这里插入图片描述
在这里插入图片描述

(六)两个NN间互相免密钥

1.在node03上:
ssh-keygen –t dsa –P ‘’ –f ~/.ssh/id_dsa
-cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ssh localhost验证一下

2.分发到note02上:
scp id_dsa.pub note02:pwd/node03.pub

3.在note02的.ssh目录下
-cat node03.pub >> authorized_keys

4.在node03上ssh note02验证一下可否免密钥登录,并exit退出
在这里插入图片描述

(七)修改namenode的一些配置信息

1.在cd /opt/smj/Hadoop-3.6.5/etc/hadoop目录下
vi hdfs-dfs.xml
在里面添加如下property

<property>
    <name dfs.replication /name>
    <value>3</value>
</property>
<property>
    <name>dfs.nameservices</name>
    <value>mycluster</value>
    <name>dfs.namenode.rpc-address.mycluster.nn2</name>
    <value>node03:8020</value>
 </property>
 <property>
       <name>dfs.namenode.http-address.mycluster.nn1</name>
       <value>note02:50070</value>
</property>
<property>
        <name>dfs.namenode.http-address.mycluster.nn2</name>
        <value>node03:50070</value>
 </property>
 <property>
     <name>dfs.namenode.shared.edits.dir</name>    
     <value>qjournal://note02:8485;node03:8485;node04:8485/mycluster</value></property>
 <property>
   <name>dfs.journalnode.edits.dir</name>
   <value>/var/smj/hadoop/ha/jn</value>
   </property>
   <property>
      <name>dfs.client.failover.proxy.provider.mycluster</name>  
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
 <name>dfs.ha.fencing.methods</name>
 <value>sshfence</value>
 </property>
 <property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
 <value>/root/.ssh/id_dsa</value>
 </property>
 <property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
   </property> 

2.输入 vi core-site.xml

添加如下property
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://note02:9000</value></property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/var/smj/hadoop/pseudo</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
  <name>ha.zookeeper.quorum</name>
 <value>node03:2181,node04:2181,node05:2181</value>
 </property>

3.输入vi slaves
修改内容为
node03
node04
node05

4.安装hadoop
输入cd /opt,将其下的smj目录分发到node03、04、05
-scp –r smj/ node03:pwd
-scp –r smj/ node04:pwd
-scp –r smj/ node05:pwd

5.将hdfs-site.xml和core-site.xml分发到node03、node04、node05
-scp hdfs-site.xml core-site.xml node03:pwd
-scp hdfs-site.xml core-site.xml node04:pwd
-scp hdfs-site.xml core-site.xml node05:pwd
在这里插入图片描述

(八)安装zookeeper

1.在node03下(第二台机子),解压安装zookeepeer
-tar xf zookeeper-3.4.6.tar.gz –C /opt/smj

2.修改zookeeper的配置文件
cd /opt/smj/zookeeper-3.4.6/conf

3.给zoo_sample.cfg改名
cp zoo_sample.cfg zoo.cfg

4.输入vi zoo.cfg
修改dataDir=/var/smj/zk
并在末尾追加
Server.1=node03:2888:3888
Server.1=node04:2888:3888
Server.1=node05:2888:3888
在这里插入图片描述
在这里插入图片描述
5.把zookeeper分发到其他节点
-scp –r zookeeper-3.4.6/node04:pwd
-scp –r zookeeper-3.4.6/node05:pwd
并在 cd /opt/smj下ll检查下看分发成功没
在这里插入图片描述

6.给每台机子创建刚配置文件里的路径
mkdir –p /var/smj/zk
对node03来说:
echo 1 > /var/smj/zk/myid
cat /var/smj/zk/myid
对node04来说:
echo 2 > /var/smj/zk/myid
cat /var/smj/zk/myid
对node05来说:
echo 3 > /var/smj/zk/myid
cat /var/smj/zk/myid

7.在cd /opt/smj/zookeeper-3.4.6的目录下
vi + /etc/profile配置
在这里插入图片描述

8.然后把/etc/profile分发到其他node04、node05
-scp /etc/profile node04:/etc
-scp /etc/profile node05:/etc
在Xshell全部对话栏source /etc/profile
在这里插入图片描述
验证source这句是否完成,输入zkCli.s,按Tab可以把名字补全zkCli.sh

注意:记得补全后删掉

9.启动zookeeper
全部会话:zkServer.sh start
接着用zkServer.sh status查看每个节点的状态
在这里插入图片描述
在这里插入图片描述

(九)启动journalnode

分别在02、03、04三台机子上分别把journalnode启动起来
hadoop-daemon.sh start journalnode
用jps检查下进程启起来了没
在这里插入图片描述

(十)格式化任一namenode

建议格式化第一台机子
1.把第一台namenode上执行hdfs namenode –format,另一台不用执行

2.然后启动刚刚格式化的那台namenode
hadoop-daemon.sh start namenode
在这里插入图片描述
注意:不要过多地格式化

(十一)给另一台namenode同步一下数据

hdfs namenode –bootstrapStandby

(十二)格式化zkfc

hdfs zkfc –formatZK
在node03上执行zkCli.sh打开zookeeper客户端
输入ls /
看hadoop-ha是否打开
在这里插入图片描述

(十三)启动hdfs集群

1.在note02上启动hdfs集群
start-dfs.sh
然后全部会话jps看一下都起来些什么进程
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
2.用浏览器访问note02:50070和node03:50070
在这里插入图片描述
在这里插入图片描述
3.关闭集群命令:stop-dfs.sh
关闭zookeeper命令;zkServer.sh stop

注意:下次启动hdfs集群的时候不需要再启动journalnode,只要start-dfs.Sh就可以了

(十四)为MapReduce做准备

1.把mapred-site.xml.template留个备份,并且改下名字
cp mapred-site.xml.template mapred-site.xml

2.在mapred-site.xml里添加如下property
在这里插入图片描述

3.在yarn-site.xml里

添加如下property
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
 <name>yarn.resourcemanager.ha.enabled</name>
 <value>true</value>
</property>
<property>
  <name>yarn.resourcemanager.cluster-id</name>
  <value>cluster1</value>
</property>
<property>
 <name>yarn.resourcemanager.ha.rm-ids</name>
 <value>rm1,rm2</value>
 </property>
 <property>
  <name>yarn.resourcemanager.hostname.rm1</name>
  <value>node04</value>
</property>
<property>
   <name>yarn.resourcemanager.hostname.rm2</name>
   <value>node05</value>
 </property>
<property>
  <name>yarn.resourcemanager.zk-address</name>
  <value>node03:2181,node04:2181,node05:2181</value>
</property>

4.把mapred-site.xml和yarn-site.xml分发到node03、node04、node05
-scp mapred-site.xml yarn-site.xml node03:pwd
-scp mapred-site.xml yarn-site.xml node04:pwd
-scp mapred-site.xml yarn-site.xml node05:pwd

5.由于node04和node05都是resourcemanager,所以他俩应该相互免密钥
首先在node04上免密钥登录node05
在node04的.ssh目录下生成密钥
ssh-keygen –t dsa –P ‘’ –f ./id_dsa
并追加到自己authorized_keys
cat id_dsa.pub >> authorized_keys
用ssh localhost验证下是否需要密码,别忘了exit
将node04的公钥分发到node05
scp id_dsa.pub node05:pwd/node04.pub
在node05的.ssh目录下,追加node04.pub
cat node04.pub >> authorized_keys
在node04上ssh node05,看是否免密钥
在这里插入图片描述

6.其次在node05上免密钥登录node04:
在node05的.ssh目录下生成密钥
ssh-keygen –t dsa –P ‘’ –f ./id_dsa
并追加到自己authorized_keys
cat id_dsa.pub >> authorized_keys
用ssh localhost验证下是否需要密码,别忘了exit
将node05的公钥分发到node04
scp id_dsa.pub node04:pwd/node05.pub
在node04的.ssh目录下,追加node05.pub
cat node05.pub >> authorized_keys
在node05上ssh node04,看是否免密钥
在这里插入图片描述

7.启动zookeeper,全部会话zkServer.sh start
在note02上启动hdfs,start-dfs.sh
在note02上启动yarn,start-yarn.sh
在node04、05上分别启动resourcemanager
yarn-daemon.sh start resourcemanager
全部会话jps,看进程全不全
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
8.在浏览器访问node04:8088,查看resourcemanager
由于我的电脑实在太卡,所以无法打开网页,查看不了

(十五)跑一个wordcount

1.cd /opt/smj/hadoop-2.6.5/share/hadoop/mapreduce

2.在hdfs里建立输入目录和输出目录
hdfs dfs –mkdir –p /data/in
hdfs dfs –mkdir –p /data/out

3.将要统计数据的文件上传到输入目录并查看
hdfs dfs –put ~/500miles.txt /data/in
hdfs dfs –ls /data/in

4.运行wordcout(注意:此时的/data/out必须是空目录)
Hadoop jar Hadoop-mapreduce-examples-2.6.5.jar wordcout /data/in /data/out/result

5.查看运行结果
hdfs dfs –ls /data/out/result
hdfs dfs –cat /data/out/result/part-r-00000
原因如上,无截图

(十六)关闭集群

note02: stop-dfs.sh
note02: stop-yarn.sh
node04,node05: yarn-daemon.sh stop resourcemanager
node03、04、05:zkServer.sh stop

(十七)在Windows配置hadoop环境

1.解压usr压缩包,放到一个usr文件夹下
在这里插入图片描述

2.“此电脑”右键-属性-高级系统设置
在这里插入图片描述

3.更改环境变量,新建HADOOP_HOME
在这里插入图片描述

4.在Path后追加HADOOP_HOME的bin目录,注意:Windows里追加Path的路径分隔符是分号,而不是冒号
在这里插入图片描述

5.然后在新建一个变量HADOOP_USER_NAME
在这里插入图片描述

6.把hadoop.dll拷贝到以下路径
在这里插入图片描述

7.安装eclipse-mars,此版本的eclipse带插件,可以可视化的看到hadoop的一些东西,比较方便
在这里插入图片描述

8.如果eclipse界面下方没有小象图标,则做后续三步调出
在这里插入图片描述

9.在eclipse里把hadoop相关信息填一下
在这里插入图片描述
在这里插入图片描述

10.在eclipse左侧列表的DFS location里新建一个目录,对应hdfs里也就建好了,可以用浏览器查看一下。

11.在eclipse里导入自己建一个包库
在这里插入图片描述

12.把jar包导入刚建的包库
在这里插入图片描述

13.把刚建的包库引入到project中
在这里插入图片描述

14.把Junit包库引入到project里
在这里插入图片描述

15.利用xftp把hdfs-site.xml,core-site.xml等几个xml放到project的src目录

利用图中的location地址上传在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值