提示:安装前请准备好三台装有jdk的虚拟机 我这里名为hd01、hd02、hd03
hd01最好有hadoop和zookeeper的压缩包
文章目录
前言:
前面我写了一篇单机版的Hadoop安装,这里终于要装集群版,装集群版的步骤比较繁琐,需要同学们多加练习,因为我们不可能只装一次,经常出了问题就要重装,所以必须要练熟练。
一、准备环境
先准备好三台虚拟机 都设置了各自的固态ip和hostname 并且下载了相应的工具包(wget、vim等)有需要一键安装脚本的可以先点个关注然后联系作者 然后就可以正式开始我们搭集群了!
先把hadoop解压,然后把它移动到opt下的soft文件夹下 并重命名为hadoop260
- 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
没问题就大功告成啦!!!
总结
我本人第一次装的时候也装了很久,找小错误找了一天,算是比较深刻的印象。以后还是有很多机会重装的,所以就当巩固了!
版权归原作者 后季暖 所有, 如有侵权,请联系我们删除。