安装Hadoop集群(超详细!)

提示:安装前请准备好三台装有jdk的虚拟机 我这里名为hd01、hd02、hd03

hd01最好有hadoop和zookeeper的压缩包

文章目录


前言

前面我写了一篇单机版的Hadoop安装,这里终于要装集群版,装集群版的步骤比较繁琐,需要同学们多加练习,因为我们不可能只装一次,经常出了问题就要重装,所以必须要练熟练。

一、准备环境

先准备好三台虚拟机 都设置了各自的固态ip和hostname 并且下载了相应的工具包(wget、vim等)有需要一键安装脚本的可以先点个关注然后联系作者 然后就可以正式开始我们搭集群了!

先把hadoop解压,然后把它移动到opt下的soft文件夹下 并重命名为hadoop260

1. mv hadoop-2.6.0-cdh5.14.2 soft/hadoop260

2.用xshell设置为一起输入(这样就可以同步输入三台虚拟机的命令并执行)

具体在xshell上方 工具->发送输入到->所有会话 

3.很重要的一步!需要将每一个的hosts设置成这样!!!    vim /etc/hosts

4.然后三个一起设置无密登录:   ssh-keygen -t rsa -P ''           <-- 这是两个单引号(不是双引号)

出现如下三个这样子的矩形即可 

5.然后每台都执行

ssh-copy-id root@hd01

然后都执行ssh-copy-id root@hd02

然后都执行ssh-copy-id root@hd03

途中我报错了 因为比如我的hd02一直找不到我的hd01?!就很奇怪,试了n多办法也没用

就把etc/hosts中的内容调了个顺序 就可以互相通过主机名ping通了 真的amazing吧...希望读者没有

可以互相ssh hd01    ssh hd02这样试试  exit退出

6.每一个都执行:  yum -y install chrony   下载这个让集群时间同步

7.修改配置   vi /etc/chrony.conf

把上面的注释掉 并用这个代替:

server ntp1.aliyun.com

server ntp2.aliyun.com

server ntp3.aliyun.com

然后 systemctl start chronyd

8.安装各种工具包

yum install -y wget

yum install -y psmisc  

二、安装Hadoop

1.(下面是操作hd01)

解压zookeeper并移动到文件夹

tar -zxvf zookeeper-3.4.5-cdh5.14.2.tar.gz

mv zookeeper-3.4.5-cdh5.14.2 soft/zk345

2.进入到目录 复制zoo_sampe.cfg重命名为一个zoo.cfg  

3.编辑zoo.cfg:(看到没,我下面就是都写hd01了 找错找了半天!!!引以为戒)

把dataDir改一下:

dataDir=/opt/soft/zk345/data

然后复制这个到最后一段:

server.1=hd01:2888:3888

server.2=hd02:2888:3888

server.3=hd03:2888:3888

4.然后回到zk345目录下

mkdir data

cd data/

echo "1"> myid

5.回到soft目录下:复制发送给另外两台 然后修改对应的id

scp -r /opt/soft/zk345 root@hd02:/opt/soft/

scp -r /opt/soft/zk345 root@hd03:/opt/soft/

然后两台机器都各自:vim /opt/soft/zk345/data/myid     改成2和3

6.三台机器都进入/etc/profile 在最后加环境变量

export ZOOKEEPER_HOME=/opt/soft/zk345
export PATH=$PATH:$ZOOKEEPER_HOME/bin

7.(然后只操作hd01)解压hadoop 然后改名移动到文件夹

tar -zxf hadoop-2.6.0-cdh5.14.2.tar.gz

mv hadoop-2.6.0-cdh5.14.2 soft/hadoop260

8.创建文件夹:

mkdir -p /opt/soft/hadoop260/tmp

mkdir -p /opt/soft/hadoop260/dfs/journalnode_data

mkdir -p /opt/soft/hadoop260/dfs/edits

mkdir -p /opt/soft/hadoop260/dfs/datanode_data

mkdir -p /opt/soft/hadoop260/dfs/namenode_data

9.进入hadoop260配置env.sh:

vim etc/hadoop/hadoop-env.sh

 10.还是etc的hadoop目录下 配置core-site.xml

<configuration>
 <property>
   <name>fs.defaultFS</name>
   <value>hdfs://hacluster</value>
 </property>
 <property>
   <name>hadoop.tmp.dir</name>
   <value>file:///opt/soft/hadoop260/tmp</value>
 </property>
 <property>
   <name>io.file.buffer.size</name>
   <value>4096</value>
 </property>
 <property>
   <name>ha.zookeeper.quorum</name>
   <value>hd01:2181,hd02:2181,hd03:2181</value>
 </property>
 <property>
   <name>hadoop.proxyuser.root.hosts</name>
   <value>*</value>
 </property>
 <property>
   <name>hadoop.proxyuser.root.groups</name>
   <value>*</value>
 </property>
</configuration>

11.配置hdfs-site.xml

<configuration>
 <property>
        <name>dfs.block.size</name>
        <value>134217728</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>file:///opt/soft/hadoop260/dfs/namenode_data</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>file:///opt/soft/hadoop260/dfs/datanode_data</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.datanode.max.transfer.threads</name>
        <value>4096</value>
    </property>
    <property>
        <name>dfs.nameservices</name>
        <value>hacluster</value>
    </property>
    <property>
        <name>dfs.ha.namenodes.hacluster</name>
        <value>nn1,nn2</value>
    </property>
    <property> 
        <name>dfs.namenode.rpc-address.hacluster.nn1</name>
        <value>hd01:9000</value>
    </property>
    <property>
        <name>dfs.namenode.servicepc-address.hacluster.nn1</name>
        <value>hd01:53310</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.hacluster.nn1</name>
        <value>hd01:50070</value>
    </property>
    <!--nn2的rpc、servicepc和http通讯地址 -->
    <property> 
        <name>dfs.namenode.rpc-address.hacluster.nn2</name>
        <value>hd02:9000</value>
    </property>
    <property>
        <name>dfs.namenode.servicepc-address.hacluster.nn2</name>
        <value>hd02:53310</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.hacluster.nn2</name>
        <value>hd02:50070</value>
    </property>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://hd01:8485;hd02:8485;hd03:8485/hacluster</value>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/opt/soft/hadoop260/dfs/journalnode_data</value>
    </property>
    <property>
        <name>dfs.namenode.edits.dir</name>
        <value>/opt/soft/hadoop260/dfs/edits</value>
    </property>
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.hacluster</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_rsa</value>
    </property>
    <property>
        <name>dfs.premissions</name>
        <value>false</value>
    </property>
</configuration>

12.编辑 mapred-site.xml.template 

<configuration>
 <property>
   <name>mapreduce.framework.name</name>
        <value>yarn</value>
  </property>
  <property>
   <name>mapreduce.jobhistory.address</name>
        <value>hd01:10020</value>
  </property>
  <property>
   <name>mapreduce.jobhistory.webapp.address</name>
        <value>hd01:19888</value>
  </property>
  <property>
   <name>mapreduce.job.ubertask.enable</name>
        <value>true</value>
  </property>
</configuration>

13.配置yarn-site.xml

<configuration>
 <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>hayarn</value>
    </property>
    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>hd02</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>hd03</value>
    </property>
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>hd01:2181,hd02:2181,hd03:2181</value>
    </property>
    <property>
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.resourcemanager.store.class</name>
 <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hd03</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
</configuration>

14.hadoop下继续   vim etc/hadoop/slaves

把localhost删掉 改成

hd01

hd02

hd03

15.然后开始复制hadoop到另外两台机器:

scp -r /opt/soft/hadoop260 root@hd02:/opt/soft/

scp -r /opt/soft/hadoop260 root@hd03:/opt/soft/

16.然后把

#hadoop
export HADOOP_HOME=/opt/soft/hadoop260
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL=$HADOOP_HOME

粘贴到每台机器的etc的profile内 别忘了source /etc/profile 哦!!!

3.启动集群

1.每台机器上启动zookeeper

zkServer.sh start

2.每台机器都启动:

hadoop-daemon.sh start journalnode

3.只在hd01上格式化:

hdfs namenode -format

4.将hd01上的Namenode的元数据复制到hd02相同位置

下面是一行!

scp -r /opt/soft/hadoop260/dfs/namenode_data/current/ root@hd02:/opt/soft/hadoop260/dfs/namenode_data

5.hd01或者hd02上:

hdfs zkfc -formatZK

6.hd01上:   start-dfs.sh

7.hd03上:   start-yarn.sh

8.hd01上:   mr-jobhistory-daemon.sh start historyserver

9.hd02上:   yarn-daemon.sh start resourcemanager

  没问题就大功告成啦!!!

总结

我本人第一次装的时候也装了很久,找小错误找了一天,算是比较深刻的印象。以后还是有很多机会重装的,所以就当巩固了!

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后季暖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值