Hadoop高可用安装教程

文档亮点

在Hadoop高可用安装过程中,对一些错误的改正和留下了安装工具和资料的链接以及较为详细的安装步骤。

进行Hadoop高可用安装的前提条件

  • 安装vmware
  • 新建虚拟机
  • 安装Linxu(centos)
  • 初步配置
  • 克隆
  • 完善配置
  • 安装Xsheel和Xftp软件
  • 对第一台虚拟机进行Hadoop伪分布式安装

资料和工具链接:

链接:https://pan.baidu.com/s/1UYJLFSThdYo9_XCvrUYFtw
提取码:uho2

开始进行Hadoop高可用安装

HA安装方案

在这里插入图片描述
PS:只有三台机子的,可以把NN-2也放成centos1 , DN放成centos2和centos3,本教程只演示4台虚拟机的情况。

分发jdk到其余三台虚拟机

//在centos1的root目录下输入(根据自己jdk的位置决定目录):
scp jdk-7u67-linux-x64.rpm centos2:`pwd`
scp jdk-7u67-linux-x64.rpm centos3:`pwd`
scp jdk-7u67-linux-x64.rpm centos4:`pwd`
//发送完毕后在Xshell的全部会话栏里一起ll,看jdk是否发送成功。
//注意:`这一符号是数字1左边这个键而不是单引号'。
//技巧:可使用键盘的Tab键进行自动补全

给其余三台虚拟机分别安装jdk

//分别在centos2、3、4的root目录上执行rpm安装命令:
rpm -i jdk-7u67-linux-x64.rpm
//在centos1上cd \etc,在此目录下把profile文件分发到三台虚拟机上。
scp profile centos2:`pwd`
scp profile centos3:`pwd`
scp profile centos4:`pwd`
//利用Xshell全部会话栏,source /etc/profile
//利用Xshell全部会话栏,jps,看2、3、4这三台机子的jdk是否装好。

同步所有服务器的时间

date	//查看机子当前的时间
//同步时间的原因:时间相差太大会导致集群启动后某些进程跑不起来
//进行时间同步:
yum -y install ntp	//yum进行时间同步器的安装
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退出)
 2. cd .ssh,并ll查看一下
 3. 把centos1的公钥发给其他三台机子:
scp id_dsa.pub centos2:`pwd`/centos1.pub
scp id_dsa.pub centos3:`pwd`/centos1.pub
scp id_dsa.pub centos4:`pwd`/centos1.pub
//注意:前一个编号为发送到哪台机子,后一个为公钥的重命名
 4. 分别在centos2、3、4的.ssh目录下看看是否有centos1.pub。如果有,那就分别追加到authorized_keys:
cat centos1.pub >> authorized_keys
//并且在centos1上分别进行ssh centos2、3、4看是否免秘钥了,记得ssh一台虚拟机后先exit(第一次进行ssh连接,输入密码为正常情况)。

两个NN间互相免秘钥

//在centos2上:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
//ssh localhost验证一下
//分发到centos1上:
scp id_dsa.pub centos1:`pwd`/centos2.pub
//在centos1的.ssh目录下:
cat centos2.pub >> authorized_keys
//在centos2上:
ssh centos1	//验证一下是否可以免秘钥登录

修改namenode的一些配置信息

//首先进入自己的hadoop目录:
cd /opt/zyq/hadoop-2.6.5/etc/hadoop/
//进入hdfs-site.xml文件进行修改:
vi hdfs-site.xml
//去掉以下代码:
<property>
	<name> dfs.namenode.secondary.http-address </name>
	<value> centos1:50090 </value>
</property>
增加如下代码:
<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>
<property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>centos1:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>centos2:8020</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>centos1:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>centos2:50070</value>
</property>

<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://centos1:8485;centos2:8485;centos3:8485/mycluster</value>
</property>

<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/var/zyq/hadoop/ha/jn</value>
</property>
//进入core-site.xml文件进行修改:
vi core-site.xml
//增加以下代码:
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>

<property>
   <name>ha.zookeeper.quorum</name>
   <value>centos2:2181,centos3:2181,centos4:2181</value>
</property>
//对每台机子的slaves进行修改:
vi slaves
//修改为:
centos2
centos3
centos4
//安装hadoop,cd /opt,将其下的zyq目录分发到centos2、3、4:
scp -r zyq/ centos2:`pwd`
scp -r zyq/ centos3:`pwd`
scp -r zyq/ centos4:`pwd`
//将hdfs-site.xml和core-site.xml分发到centos2、3、4:
scp hdsf-site.xml core-site.xml centos2:`pwd`
scp hdsf-site.xml core-site.xml centos3:`pwd`
scp hdsf-site.xml core-site.xml centos4:`pwd`

安装zookeeper


 1. 在centos2上解压安装zookeeper:
tar xf zookeeper-3.4.6.tar.gz -C /opt/zyq
 2. 修改zookeeper的配置文件:
cd /opt/zyq/zookeeper-3.4.6/conf
//给zoo_sample.cfg改名:
cp zoo_sample.cfg zoo.cfg
//vi zoo.cfg 改dataDir=/var/zyq/zk并在末尾追加:
server.1 = centos2:2888:3888
server.2= centos3:2888:3888
server.3 = centos4:2888:3888
 3. 把zookeeper分发到其他节点:
scp -r zookeeper-3.4.6/ centos3:`pwd`
scp -r zookeeper-3.4.6/ centos4:`pwd`
//并用ll /opt/zyq检查下看分发成功没
 4. 给每台机子创建刚配置文件里的路径:
mkdir -p /var/zyq/zk
//给每台机子配置其编号(必须是阿拉伯数字)
//对centos2来说:
echo 1 > /var/zyq/zk/myid
cat /var/zyq/zk/myid
//对centos3来说:
echo 2 > /var/zyq/zk/myid
cat /var/zyq/zk/myid
//对centos4来说:
echo 3 > /var/zyq/zk/myid
cat /var/zyq/zk/myid
 5. 在vi /etc/profile里面配置:
export ZOOKEEPER_HOME=/opt/zyq/zookeeper-3.4.6
export PATH=$PATH:/usr/java/jdk1.7.0_67/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin
 6. 然后再把/etc/profile分发到其他centos3、4
scp /etc/profile centos3:/etc
scp /etc/profile centos4:/etc
//在Xshell全部会话栏里source /etc/profile,然后输入zkCli.s,按Tab可以把名字补全为zkCli.sh就表示成功
 7. 启动zookeeper
//全部会话:zkServer.sh start
//接着用zkServr.sh status查看每个zookeeper节点的状态

启动journalnode

//在1、2、3三台机子上分别把journalnode启动起来:
hadoop-daemon.sh start journalnode
//用jps检查进程是否起来。

格式化任一namenode

//随意挑一台namenode(建议centos1上进行)上执行hdfs namenode -format(选择默认为yse)
另一台namenode不用执行,否则clusterlD变了,找不到集群了。如果因为格式化多了出问题分别去centos2 , centos3 , centos4上:
cd /tmp/hadoop-root/dfs/data/current/
vi VERSION
//要保证node02 , node03 , node04的VERSION文件中的clusterlD一样
//然后启动刚刚格式化的那台namenode:
hadoop-daemon.sh start namenode

给另一namenode同步数据

//用以下命令:
hdfs namenode -bootstrapStandby

格式化zkfc

//在centos2上格式化zkfc:
cd /software
hdfs zkfc -formatZK
//执行zkCli.sh来打开zookeeper客户端并执行ls /查看hadoop-ha是否打开

启动hdfs集群

//在centos1上启动hdfs集群:
start-dfs.sh
//注意:如果哪个节点没起来到hadoop目录下去看哪个node的日志文件log

然后全部会话jps看一下都来些什么进程
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
用浏览器访问centos1:50070和centos2:50070

在这里插入图片描述
在这里插入图片描述
关闭集群命令:stop-dfs.sh
关闭zookeeper命令:zkServer.sh stop

为MapReduce做准备

//把mapred-site.xml.template留个备份,并且改下名字:
cp mapred-site.xml.template mapred-site.xml
cd /opt/zyq/hadoop-2.6.5/etc/hadoop/
//在vi mapred-site.xml里添加如下property

<property>
        		<name>mapreduce.framework.name</name>
        		<value>yarn</value>
	</property>
//在yarn-site.xml
<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>centos3</value>
 </property>
 <property>
   <name>yarn.resourcemanager.hostname.rm2</name>
   <value>centos4</value>
 </property>
 <property>
   <name>yarn.resourcemanager.zk-address</name>
   <value>centos2:2181,centos3:2181,centos4:2181</value>
 </property>
//把mapred-site.xml和yarn-site.xml 分发到centos2、3、4:
scp mapred-site.xml yarn-site.xml centos2:`pwd`
scp mapred-site.xml yarn-site.xml centos3:`pwd`
scp mapred-site.xml yarn-site.xml centos4:`pwd`
//由于centos3和centos4都是resourcemanager,所以它俩应该相互免密钥
//在centos3的.ssh目录下生成密钥:
ssh-keygen -t dsa -P '' -f ./id_dsa
//并追加到自己authorized_keys
cat id_dsa.pub >> authorized_keys
//用ssh localhost验证看是否需要密码,别忘了exit
//将centos3的公钥分发到centos4:
scp id_dsa.pub centos4:`pwd`/centos3.pub
在centos4的.ssh目录下,追加centos3.pub:
cat centos3.pub >> authorized_keys
//在centos3上ssh centos4,看是否免密钥
//centos4上免密钥登录centos3:
//在centos4的.ssh目录下生成密钥
ssh-keygen -t dsa -P '' -f ./id_dsa
//并追加到自己authorized_keys
cat id_dsa.pub >> authorized_keys
//用ssh localhost验证看是否需要密码,别忘了exit
//将centos4 的公钥分发到centos3
scp id_dsa.pub centos3:`pwd`/centos4.pub
//在centos3的.ssh目录下,追加centos4.pub
cat centos4.pub >> authorized_keys
//在centos4上ssh centos3,看是否免密钥

1.启动zookeeper,全部会话zkServer.sh start
2.在centos1上启动hdfs,start-dfs.sh
3.在centos1上启动yarn,start-yarn.sh
4.在centos3、4上分别启动resourcemanager,
yarn-daemon.sh start resourcemanager
5.全部会话jps,看进程全不全
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在浏览器访问centos3:8088,查看resourcemanager管理的内容
在这里插入图片描述

跑一个wordcount试试

1.cd /opt/zyq/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. 运行wordcount(注意:此时的/data/out必须是空目录:
hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /data/in /data/out/result
5.查看运行结果:
hdfs dfs -ls /data/out/result 
hdfs dfs -cat /data/out/result/part-r-00000 

在这里插入图片描述

关闭集群

//关闭集群:
centos1: stop-dfs.sh 
centos1: stop-yarn.sh (停止nodemanager)
cento3,centos4: yarn-daemon.sh stop resourcemanager
centos2、3、4:zkServer.sh stop 

在Windows下配置hadoop的环境

  1. 把网盘中名为usr.rar的压缩包下载并解压后的这三个文件夹放到一个hadoop文件夹里。
  2. “此电脑”右键-属性-高级系统设置。
    在这里插入图片描述
  3. 更改环境变量,增加HADOOP_HOME。
    在这里插入图片描述
  4. 并且给path后追加HADOOP_HOME的bin目录
    在这里插入图片描述
  5. 然后再新建一个变量HADOOP_USER_NAME
    在这里插入图片描述
  6. 把路径E:\hadoop\usr\hadoop-2.6.5\bin的hadoop.dll拷贝到以下路径C:\Windows\System32。
  7. 安装ecipse-mars,此版本的eclipse带插件,可以可视化的看到hadoop的一些东西,比较方便。
  8. 如果eclipse界面下方没有小象图标,则做后续三步调出。
    在这里插入图片描述
  9. 在eclipse里把hadoop相关信息填一下。
    在这里插入图片描述
  10. 新建一个hadoop localtion(注意使用网盘里的jdk版本)
    在这里插入图片描述
  11. 这样在eclipse左侧列表的DFS location里新建一个目录,对应hdfs里也就建好了,可以用浏览器查看一下,自己试试。
  12. 在eclipse里导入自己建一个包库
    在这里插入图片描述
  13. 把jar包导入刚建的包库
    在这里插入图片描述
  14. 把刚建的包库引入到project里
    在这里插入图片描述
  15. 把JUnit包库引入到project里

在这里插入图片描述

  1. 利用xftp把hdfs-site.xml,core-site.xml等几个xml放到project的src目录。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值