零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装

文章目录

  • 0. 安装WMware Workstation(本过程请读者自行解决,作者使用的是15.5版本,可以顺利完成环境搭建;作者上课时老师推荐12版本,兼容性较好)
  • 1. 在WMware Workstation中安装创建parents虚拟机并安装Cent OS,并以此为原版克隆4台机子用于搭建Hadoop高可用环境
    • 1.1 新建虚拟机(暂时不安装操作系统)
      • 1.1.1 单击“文件”选项卡下的“新建虚拟机”,弹出如下界面,选择“自定义(高级)”
      • 1.1.2 选择虚拟机硬件兼容性,默认即可
      • 1.1.3 选择“稍后安装系统”
      • 1.1.4 选择Linux,版本为CentOS 6 64位
      • 1.1.5 给虚拟机起个名字,我这里命名为parents,建议将虚拟机文件保存到非系统盘,防止今后重装系统导致虚拟机文件丢失
      • 1.1.6 处理器配置
      • 1.1.7 虚拟机内存配置
      • 1.1.8 网络类型选择“使用网络地址转换(NAT)”
      • 1.1.9 选择I/O控制器
      • 1.1.10 选择磁盘类型
      • 1.1.11 选择磁盘类型
      • 1.1.12 选择磁盘
      • 1.1.13 指定磁盘容量,最大磁盘大小改为200GB,建议**不要**勾选立即分配所有磁盘空间,以免硬盘容量不足造成麻烦
      • 1.1.14 指定磁盘文件
      • 1.1.15 完成创建虚拟机
    • 1.2 在刚刚创建好的虚拟机里安装Cent OS
      • 1.2.1 在虚拟机parents上右键——设置,在CD/DVD(IDE)设置中,选择使用ISO映像文件,并单击“浏览”,设置好ISO文件的路径
      • 1.2.2 单击“开启此虚拟机”
      • 1.2.3 开启虚拟机后,选择第一个选项,开始安装Cent OS
      • 1.2.4 选择Skip跳过
      • 1.2.5
      • 1.2.6 选择English(English)
      • 1.2.7 选择U.S English
      • 1.2.8 选择“Basic Storage Devices”
      • 1.2.9 选择“Yes, discard any data”
      • 1.2.10
      • 1.2.11 选择东八区的一个城市,比如上海(如果列表翻起来太慢,可以直接点击地图上的点)
      • 1.2.12 设置密码,由于本机器作为学习使用,不需要考虑安全性,为方便后续操作,密码设置为hadoop
      • 1.2.13 选择“Create Custom Layout”
      • 1.2.14 创建分区
        • 1.2.14.1 创建启动系统用的分区
        • 1.2.14.2 创建系统内核用的分区
        • 1.2.14.3 创建装应用的分区
      • 1.2.15 格式化
      • 1.2.17 安装完成后重启
      • 1.2.18 设置IP
      • 1.2.19 删除70-persitsent-net.rules
      • 1.2.20 关闭防火墙&SELINUX
      • 1.2.21 关机、拍摄快照
    • 1.3 克隆4台虚拟机
      • 1.3.1 用快照克隆4台虚拟机
      • 1.3.2 配置4台机子的主机名、IP、hosts等
        • 1.3.2.1 配置主机名
        • 1.3.2.2 配置IP
        • 1.3.2.3 配置hosts
      • 1.3.3 配置Windows下的hosts文件
  • 2.Hadoop伪分布式安装
    • 2.1 使用Xshell和Xftp辅助以简化操作
    • 2.2 在node01中用rpm安装jdk
    • 2.3 免秘钥
    • 2.4 安装Hadoop2.6.5
    • 2.5 修改Hadoop配置文件信息
    • 2.6 格式化hdfs
    • 2.7 启动集群
    • 2.8 在浏览器中打开node01:50070
    • 2.9 测试文件系统是否可用
    • 2.10 停止集群
  • 3.Hadoop高可用安装
    • 3.1 分发jdk到node02、node03和node04
    • 3.2 给node02、node03、node04分别安装jdk
    • 3.3 同步时间
    • 3.4 装机之前的配置文件检查
    • 3.5 NameNode与其他三台机子的免秘钥设置
    • 3.5 两台NameNode之间互相免秘钥
    • 3.6 修改NameNode上的一些配置信息
    • 3.7 给另外三台机子安装Hadoop
    • 3.8 给node02、node03、node04安装zookeeper
    • 3.9 启动zookeeper
    • 3.10 启动JournalNode
    • 3.11 格式化任一NameNode并启动
    • 3.12 给另一台NameNode同步数据
    • 3.13 格式化ZKFC
    • 3.14 启动hdfs集群
    • 3.15 为MapReduce做准备
      • 3.15.1 修改mapred-site.xmlh和yarn-site.xml
      • 3.15.2 node03和node04相互免秘钥
      • 3.15.3 再次启动集群
      • 3.15.4 跑一个wordcount试试
    • 3.16 关闭集群
    • 3.17在Windows下配置Hadoop环境

0. 安装WMware Workstation(本过程请读者自行解决,作者使用的是15.5版本,可以顺利完成环境搭建;作者上课时老师推荐12版本,兼容性较好)

1. 在WMware Workstation中安装创建parents虚拟机并安装Cent OS,并以此为原版克隆4台机子用于搭建Hadoop高可用环境

PS:1.没有特殊说明的情况下,请和截图中的选择保持一致,以免引起不必要的麻烦

1.1 新建虚拟机(暂时不安装操作系统)

1.1.1 单击“文件”选项卡下的“新建虚拟机”,弹出如下界面,选择“自定义(高级)”

在这里插入图片描述

1.1.2 选择虚拟机硬件兼容性,默认即可

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第1张图片

1.1.3 选择“稍后安装系统”

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第2张图片

1.1.4 选择Linux,版本为CentOS 6 64位

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第3张图片

1.1.5 给虚拟机起个名字,我这里命名为parents,建议将虚拟机文件保存到非系统盘,防止今后重装系统导致虚拟机文件丢失

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第4张图片

1.1.6 处理器配置

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第5张图片

1.1.7 虚拟机内存配置

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第6张图片

1.1.8 网络类型选择“使用网络地址转换(NAT)”

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第7张图片

1.1.9 选择I/O控制器

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第8张图片

1.1.10 选择磁盘类型

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第9张图片

1.1.11 选择磁盘类型

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第10张图片

1.1.12 选择磁盘

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第11张图片

1.1.13 指定磁盘容量,最大磁盘大小改为200GB,建议不要勾选立即分配所有磁盘空间,以免硬盘容量不足造成麻烦

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第12张图片

1.1.14 指定磁盘文件

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第13张图片

1.1.15 完成创建虚拟机

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第14张图片
此时虽然创建好了虚拟机,但还没有安装Cent OS,接下来我们来安装Cent OS

1.2 在刚刚创建好的虚拟机里安装Cent OS

1.2.1 在虚拟机parents上右键——设置,在CD/DVD(IDE)设置中,选择使用ISO映像文件,并单击“浏览”,设置好ISO文件的路径

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第15张图片

1.2.2 单击“开启此虚拟机”

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第16张图片

1.2.3 开启虚拟机后,选择第一个选项,开始安装Cent OS

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第17张图片

1.2.4 选择Skip跳过

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第18张图片

1.2.5

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第19张图片

1.2.6 选择English(English)

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第20张图片

1.2.7 选择U.S English

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第21张图片

1.2.8 选择“Basic Storage Devices”

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第22张图片

1.2.9 选择“Yes, discard any data”

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第23张图片

1.2.10

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第24张图片

1.2.11 选择东八区的一个城市,比如上海(如果列表翻起来太慢,可以直接点击地图上的点)

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第25张图片

1.2.12 设置密码,由于本机器作为学习使用,不需要考虑安全性,为方便后续操作,密码设置为hadoop

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第26张图片

1.2.13 选择“Create Custom Layout”

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第27张图片

1.2.14 创建分区

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第28张图片

1.2.14.1 创建启动系统用的分区

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第29张图片

1.2.14.2 创建系统内核用的分区

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第30张图片

1.2.14.3 创建装应用的分区

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第31张图片

1.2.15 格式化

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第32张图片
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第33张图片### 1.2.16 单击Next开始安装系统
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第34张图片
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第35张图片

1.2.17 安装完成后重启

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第36张图片

1.2.18 设置IP

单击VMware Workstation的编辑——虚拟网络编辑器,查看自己的子网IP
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第37张图片
在Cent OS中,输入以下命令:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

在打开的文件中,删除UUID和MAC地址(HWADDR)
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.61.30(注意:61是每台机器不一样的,根据之前在VMware Workstation中查到的子网IP来进行设置)
NETMASK=255.255.255.0
GATEWAY=192.168.61.2
DNS=192.168.61.2

设置完成后的截图:
在这里插入图片描述
保存上述文件后,执行:

service network restart

出来的都是OK才行
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第38张图片
然后执行以下命令ping一下百度,看看能不能通:
在Linux命令运行时,按Ctrl+C组合键可以打断命令运行

ping www.baidu.com

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第39张图片

1.2.19 删除70-persitsent-net.rules

在任意目录下执行:

rm -rf /etc/udev/rules.d/70-persistent-net.rules

删除70-persistent-net.rules
扩展阅读:
那么为什么要删除上述文件呢?
接下来我们要以parents为原版,克隆4台虚拟机,如果保留以上文件,在通过该虚拟机克隆的时候:
1.文件被带到了新的虚拟机中
2.VM Warestation变更了新的虚拟机的MAC地址
导致:新的虚拟机不能使用eth0接口,导致后续配置的/etc/sysconfig/network-scripts/ifcfg-eth0无法应用

1.2.20 关闭防火墙&SELINUX

输入以下命令关闭防火墙:

service iptables stop
chkconfig iptables off

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第40张图片
使用以下命令打开config,设置SELINUX=disabled:

vi /etc/selinux/config

1.2.21 关机、拍摄快照

输入以下命令关机:

poweroff

单击此按钮打开快照管理界面:
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第41张图片
按如下步骤给虚拟机拍个快照:
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第42张图片

1.3 克隆4台虚拟机

1.3.1 用快照克隆4台虚拟机

注意:虚拟机克隆一定要用刚刚拍摄的快照来克隆
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第43张图片
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第44张图片
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第45张图片
将克隆的虚拟机命名为node01:
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第46张图片
按照上述方法,克隆node02,node03和node04。
克隆完成:
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第47张图片

1.3.2 配置4台机子的主机名、IP、hosts等

(以node01为例)

1.3.2.1 配置主机名

使用下列命令打开network文件配置主机名:

vi /etc/sysconfig/network

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第48张图片
(另外3台配置方式参考node01,
node02的HOSTNAME=node02,
node03的HOSTNAME=node03,
node04的HOSTNAME=node04)

1.3.2.2 配置IP

使用下列命令打开ifcfg-eth0文件配置IP:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第49张图片
配置IP完成后,不要忘记执行:

service network restart

确保输入的都是OK,确保可以ping通百度:
在这里插入图片描述
(另外3台配置方式参考node01,
node02的IPADDR=192.168.X.32,
node03的IPADDR=192.168.X.33,
node04的IPADDR=192.168.X.33,
X的值和电脑有关,如果忘记了X的值,在VMware Workstation的编辑——虚拟网络编辑器查看,如下图所示(我的电脑的X=61):
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第50张图片

1.3.2.3 配置hosts

使用以下命令打开hosts文件进行配置:

vi /etc/hosts

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第51张图片
(另外3台机子的配置方法、内容和node01完全相同。)

建议:
配好4台机子的3个文件后,建议检查是否可以互相ping通,以免造成不必要的麻烦。

1.3.3 配置Windows下的hosts文件

文件路径为:
C:\Windows\System32\drivers\etc
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第52张图片
然后打开命令行,看是否可以用ping通这些结点:
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第53张图片

2.Hadoop伪分布式安装

2.1 使用Xshell和Xftp辅助以简化操作

如何新建Xshell连接?
以node01为例,单击文件——新建,按下图设置好连接

在这里插入图片描述
可以保存密码以简化后续连接
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第54张图片
第一次打开连接或修改密码后打开连接会有如下提示,选择接受并保存即可
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第55张图片
如何使用Xftp传输文件?
如果Xshell和Xftp版本可用协作,只要在Xshell中单击如下图标,即可建立文件传输连接:
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第56张图片
下图所示的就是已经建立好的Xftp连接
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第57张图片

2.2 在node01中用rpm安装jdk

先把事先准备好的jdk-7u67-linux-x64.rpm放到node01的/root路径下
执行下列命令安装jdk:

rpm -i jdk-7u67-linux-x64.rpm

执行以下命令确定java的路径:

whereis java

在这里插入图片描述
根据查询到的java的路径,修改profile文件下的环境变量:
执行下列命令打开profile文件

vi + /etc/profile

在打开的的文件,添加:
export JAVA_HOME=/usr/bin/java
export PATH=$PATH:/usr/java/jdk1.7.0_67/bin
执行下列命令:

source /etc/profile

执行:

jps

确保jps进程能正常启动
在这里插入图片描述

2.3 免秘钥

知识链接:如何回到家目录?
执行下列命令即可:

cd

在家目录下,执行:

ll -a

看看有无.ssh文件夹,如果没有,执行:

ssh localhost

每次执行ssh登录以后,都不要忘了执行下列命令退出登录:

exit

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第58张图片
在确保家目录下存在.ssh文件夹后,执行下列命令:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第59张图片
知识链接:刚刚两条命令的作用是什么?
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第60张图片
确认免秘钥是否成功(注意每次ssh以后都别忘了exit):

ssh localhost
ssh node01

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第61张图片

2.4 安装Hadoop2.6.5

先进入/opt建好自己的个人目录:

cd /opt
mkdir ztl

把事先准备好的hadoop-2.6.5.tar.gz文件传入node01,执行下列命令,把Hadoop安装到自己的个人目录:

tar xf hadoop-2.6.5.tar.gz -C /opt/ztl

如果想要在任意目录启动Hadoop,需要修改配置文件:

vi /etc/profile

在打开的配置文件里,添加或修改:

export JAVA_HOME=/usr/bin/java
export HADOOP_HOME=/opt/ztl/hadoop-2.6.5
export PATH=$PATH:/usr/java/jdk1.7.0_67/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

不要忘了执行:

source /etc/profile

在输入命令时
如果输入hd后,按下Tab键,可以联想出hdfs
按下start-d按Tab键可以联想出start-dfs.
就表示配置成功了

2.5 修改Hadoop配置文件信息

执行下列命令,进入hadoop目录:

cd /opt/ztl/hadoop-2.6.5/etc/hadoop

打开下列文件,把JAVA_HOME都改成绝对路径:
/usr/java/jdk1.7.0_67

vi hadoop-env.sh
vi mapred-env.sh
vi yarn-env.sh

修改core-site.xml,下面是已经修改好的一个例子,供大家参考:


	
		fs.defaultFS</name>
		hdfs://node01:9000</value>
	</property>
	
		hadoop.tmp.dir</name>
		/var/ztl/hadoop/pseudo</value>
	</property>
</configuration>

修改hfds-site.xml,下面是已经修改好的一个例子,供大家参考:


	
		dfs.replication</name>
		1</value>
	</property>
	
		dfs.namenode.secondary.http-address</name>
		node01:50090</value>
	</property>
</configuration>

由于目前还是伪分布式安装,所以副本数只有1台。
配置slaves
slaves文件的路径是/opt/ztl/hadoop-2.6.5/etc/hadoop
把localhost删掉,加上node01

2.6 格式化hdfs

执行下列命令,格式化hdfs:

hdfs namenode -format

格式化后请检查/var/ztl/hadoop/pseudo这个目录是否存在。

注意事项:
不要多次格式化namenode,否则会导致namenode的clusterID和datanode的clusterID不一样,从而导致datanode无法启动。
如果不小心多次格式化导致以上问题,
分别进入
/var/ztl/hadoop/pseudo/dfs/name/current
/var/ztl/hadoop/pseudo/dfs/data/current
/var/ztl/hadoop/pseudo/dfs/namesecondary/current
修改3个路径下的VERSION文件中的clusterID,使其一致

2.7 启动集群

start-dfs.sh

启动后使用jps命令查看进程是否齐全:
在这里插入图片描述

2.8 在浏览器中打开node01:50070

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第62张图片

2.9 测试文件系统是否可用

创建目录

hdfs dfs -mkdir -p /user/root

在浏览器中查看目录是否建好:
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第63张图片
在家目录下新建test.txt,然后上传文件:

hdfs dfs -put test.txt /user/root

查看文件是否上传成功:
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第64张图片

2.10 停止集群

stop-dfs.sh

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第65张图片

3.Hadoop高可用安装

下表是我们高可用安装中各个节点的方案:
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第66张图片

3.1 分发jdk到node02、node03和node04

使用如下命令分发:

scp jdk-7u67-linux-x64.rpm node02:`pwd`
scp jdk-7u67-linux-x64.rpm node03:`pwd`
scp jdk-7u67-linux-x64.rpm node04:`pwd`

并在Xshell的全部会话栏里一起ll,看jdk是否发送成功

3.2 给node02、node03、node04分别安装jdk

分别在node04、05、06上执行rpm安装命令:

rpm -i jdk-7u67-linux-x64.rpm

在node03上

cd /etc

在此目录下把profile文件分发到node02、03、04上:

scp profile node02:`pwd`
scp profile node03:`pwd`
scp profile node04:`pwd`

利用Xshell全部会话栏:

source /etc/profile

利用Xshell全部会话栏:

jps

看node02、node03、node04这三台机子的jdk是否装好

3.3 同步时间

使用以下命令查看时间:

date

时间不能差太大,否则集群启动后某些进程跑不起来

若时间不同步,怎么办?
1.yum进行时间同步器的安装

yum -y install ntp

2.执行同步命令(和阿里云服务器时间同步)

ntpdate time1.aliyun.com

3.4 装机之前的配置文件检查

1.查看HOSTNAME是否正确

cat /etc/sysconfig/network

2.查看IP映射是否正确

cat /etc/hosts

3.查看SELINUX是否关闭(disabled)

cat /etc/sysconfig/selinux

4.查看防火墙是否关闭

service iptables status

3.5 NameNode与其他三台机子的免秘钥设置

1.node02、node03、node04在家目录下 ll –a看下有无.ssh目录,如果没有就执行

ssh localhost

一下(ssh localhost后别忘了exit)。
2.

cd ssh

ll

查看一下
3.把node01的公钥发给其他三台机子

scp id_dsa.pub node02:`pwd`/node01.pub
scp id_dsa.pub node03:`pwd`/node01.pub
scp id_dsa.pub node04:`pwd`/node01.pub

4.分别在node02、node03、node04的.ssh目录下查看是否有node01.pub,如果有,就追加到authorized_keys

cat node01.pub >> authorized_keys

并且在node01上ssh另外3台机子是否免秘钥了,每次ssh都别忘了exit

ssh node02
exit
ssh node03
exit
ssh node04
exit

3.5 两台NameNode之间互相免秘钥

在node02上生成自己的秘钥:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

ssh验证免秘钥是否成功,然后exit

把node02的秘钥分发到node01上:

scp id_dsa.pub node01:`pwd`/node02.pub

在node01的.ssh目录下执行:

cat node02.pub >> authorized_keys

在node02上ssh node03看看是否可以免秘钥登录node01,然后exit

3.6 修改NameNode上的一些配置信息

hdfs-site.xml,core-site.xml,slaves文件均位于/opt/ztl/hadoop-2.6.5/etc/hadoop
1.修改node01的hdfs-site.xml,下面是一个修改好的实例:


	
		dfs.replication</name>
		3</value>
	</property>


	
		dfs.nameservices</name>
		mycluster</value>
	</property>
	
		dfs.ha.namenodes.mycluster</name>
		nn1,nn2</value>
	</property>
	
		dfs.namenode.rpc-address.mycluster.nn1</name>
		node01:8020</value>
	</property>
	
		dfs.namenode.rpc-address.mycluster.nn2</name>
		node02:8020</value>
	</property>
	
		dfs.namenode.http-address.mycluster.nn1</name>
		node01:50070</value>
	</property>
	
		dfs.namenode.http-address.mycluster.nn2</name>
		node02:50070</value>
	</property>

	
		dfs.namenode.shared.edits.dir</name>
		qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
	</property>

	
		dfs.journalnode.edits.dir</name>
		/var/ztl/hadoop/ha/jn</value>
	</property>


	
		dfs.client.failover.proxy.provider.mycluster</name>
		org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
	</property>
	
		dfs.ha.fencing.methods</name>
		sshfence</value>
	</property>
	
		dfs.ha.fencing.ssh.private-key-files</name>
		/root/.ssh/id_dsa</value>
	</property>

	
		dfs.ha.automatic-failover.enabled</name>
		true</value>
	</property>
</configuration>

2.修改node01的core-site.xml,下面是一个修改好的实例:


	
		fs.defaultFS</name>
		hdfs://mycluster</value>
	</property>

	
		ha.zookeeper.quorum</name>
		node02:2181,node03:2181,node04:2181</value>
	</property>
</configuration>

3.修改node01的/opt/ztl/hadoop-2.6.5/etc/hadoop目录下的slaves,下面是修改好的一个实例:

node02
node03
node04

3.7 给另外三台机子安装Hadoop

在node01下cd /opt,把ztl目录分发到node02、node03、node04:

scp -r ztl/ node02:`pwd`
scp -r ztl/ node03:`pwd`
scp -r ztl/ node04:`pwd`

3.8 给node02、node03、node04安装zookeeper

1.把zookeeper-3.4.6.tar.gz放在node02的家目录,然后解压安装zookeeper:

tar xf zookeeper-3.4.6.tar.gz -C /opt/ztl

2.修改zookeeper的配置文件:

cd /opt/ztl/zookeeper-3.4.6/conf

3.把zoo_sample.cfg复制一个副本,命名为zoo.cfg:

cp zoo_sample.cfg zoo.cfg

4.打开zoo.cfg,改dataDir=/var/ztl/zk,并在末尾追加
server.1=node04:2888:3888
server.2=node05:2888:3888
server.3=node06:2888:3888
其中2888主从通信端口,3888是当主挂断后进行选举机制的端口
5.把/opt/ztl目录下的zookeeper分发到node03、node04

scp -r zookeeper-3.4.6/ node03:`pwd`
scp -r zookeeper-3.4.6/ node04:`pwd`

使用以下命令查看是否分发成功:

ll /opt/ztl

6.给每台机子创建刚配置文件里的路径

在node02、node03、node04下执行:

mkdir -p /var/ztl/zk

给每台机子配置其编号(必须是阿拉伯数字)
对node02来说:

echo 1 > /var/ztl/zk/myid
cat /var/ztl/zk/myid

对node03来说:

echo 2 > /var/ztl/zk/myid
cat /var/ztl/zk/myid

对node04来说:

echo 3 > /var/ztl/zk/myid
cat /var/ztl/zk/myid

7.在node02的/etc/profile里面配置

export ZOOKEEPER_HOME=/opt/ztl/zookeeper-3.4.6
export PATH=$PATH:/usr/java/jdk1.7.0_67/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin

8.把node02的/etc/profile分发到node03、node04

scp /etc/profile node03:/etc
scp /etc/profile node04:/etc

9.在node04、node05、node06里

source /etc/profile

验证source这句是否完成,输入zkCli.s,按Tab可以把名字补全zkCli.sh

3.9 启动zookeeper

在node02、node03、node04使用以下命令启动zookeeper(由于node01并没有安装zookeeper,所以也可以用全部会话发送下列命令):

zkServer.sh start

然后用以下命令查看zookeeper结点状态:

zkServer.sh status

注意:如果启动不起来,请把/etc/profile里的JAVA_HOME改成绝对路径。

3.10 启动JournalNode

为什么要启动JournalNode?
为了使两台NameNode间完成数据同步
在node01、node02、node03三台机子上分别把journalnode启动起来

hadoop-daemon.sh start journalnode

用jps检查下进程启起来了没

3.11 格式化任一NameNode并启动

随意挑一台NameNode上执行

hdfs namenode –format

另一台namenode不用执行,否则clusterID变了,找不到集群了
启动刚刚格式化的那台NameNode

hadoop-daemon.sh start namenode

3.12 给另一台NameNode同步数据

hdfs namenode -bootstrapStandby

3.13 格式化ZKFC

hdfs zkfc -formatZK

在node02上执行zkCli.sh打开zookeeper客户端看hadoop-ha是否打开
在这里插入图片描述

3.14 启动hdfs集群

在node01上启动hdfs集群

start-dfs.sh

然后全部回话jps看一下启动了什么进程

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第67张图片
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第68张图片
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第69张图片
在这里插入图片描述
用浏览器访问node01:50070和node02:50070
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第70张图片
在这里插入图片描述
确认可以打开后,使用下面命令关闭集群:

stop-dfs.sh

使用下面命令关闭ZooKeeper:

zkServer.sh stop

注意事项:
下一次启动hdfs集群的时候还需要用hadoop-daemon.sh start journalnode命令启动journalnode吗?
不需要
只要start-dfs.sh就可以了。我们之前启动journalnode是为了同步两个namenode之间的信息。

3.15 为MapReduce做准备

3.15.1 修改mapred-site.xmlh和yarn-site.xml

把mapred-site.xml.template留个备份,并且改名复制:

cp mapred-site.xml.template mapred-site.xml

在mapred-site.xml里添加如下property

	
		mapreduce.framework.name</name>
		yarn</value>
	</property>

在yarn-site.xml添加如下property

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

把mapred-site.xml和yarn-site.xml 分发到node02、03、04

scp mapred-site.xml yarn-site.xml node02:`pwd`
scp mapred-site.xml yarn-site.xml node03:`pwd`
scp mapred-site.xml yarn-site.xml node04:`pwd`

3.15.2 node03和node04相互免秘钥

由于node03和node04都是resourcemanager,所以它俩应该相互免密钥
node03上免密钥登录node04:
在node03的.ssh目录下生成密钥

ssh-keygen -t dsa -P '' -f ./id_dsa

并追加到自己authorized_keys

cat id_dsa.pub >> authorized_keys

用ssh localhost验证看是否需要密码,别忘了exit
将node03 的公钥分发到node04

scp id_dsa.pub node04:`pwd`/node03.pub

在node04的.ssh目录下,追加node03.pub

cat node03.pub >> authorized_keys

在node03上ssh node04,看是否免密钥

node04上免密钥登录node03:
在node04的.ssh目录下生成密钥

ssh-keygen -t dsa -P '' -f ./id_dsa

并追加到自己authorized_keys

cat id_dsa.pub >> authorized_keys

用ssh localhost验证看是否需要密码,别忘了exit
将node04 的公钥分发到node03

scp id_dsa.pub node03:`pwd`/node04.pub

在node03的.ssh目录下,追加node04.pub

cat node04.pub >> authorized_keys

在node04上ssh node03,看是否免密钥

3.15.3 再次启动集群

1.启动zookeeper,全部会话

zkServer.sh start

2.在node01上启动

hdfs,start-dfs.sh

3.在node01上启动yarn

start-yarn.sh

4.在node03、04上分别启动resourcemanager

yarn-daemon.sh start resourcemanager

5.全部会话jps,看进程全不全

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第71张图片
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第72张图片
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第73张图片
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第74张图片
在浏览器访问node03:8088,查看resourcemanager管理的内容
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第75张图片

3.15.4 跑一个wordcount试试

1.打开mapreduce文件夹

cd /opt/ztl/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

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第76张图片
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第77张图片
5.查看运行结果

hdfs dfs -ls /data/out/result 
hdfs dfs -cat /data/out/result/part-r-00000 

零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第78张图片

3.16 关闭集群

在node01

stop-dfs.sh

在node01

stop-yarn.sh

在node03、node04

yarn-daemon.sh stop resourcemanager

在node04、node05、node06

zkServer.sh stop

3.17在Windows下配置Hadoop环境

把压缩包解压后的这三个文件夹放到一个usr文件夹里,把usr放到一个你知道的地方。
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第79张图片
配置环境变量
“此电脑”右键——属性——高级系统设置
单击“高级”选项卡下的“环境变量”按钮
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第80张图片
新建系统变量HADOOP_HOME
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第81张图片
给系统变量下的PATH追加HADOOP_HOME的bin目录
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第82张图片
新建系统变量HADOOP_USER_NAME
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第83张图片
把hadoop.dll拷贝到C:\Windows\System32
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第84张图片
安装Ecipse-Mars,此版本的Eclipse带插件,可以可视化的看到Hadoop的一些东西,比较方便
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第85张图片
如果Eclipse界面下方没有小象图标,则做后续三步调出
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第86张图片
在Eclipse里把Hadoop相关信息填一下
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第87张图片
新建一个Hadoop location
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第88张图片
名字自己随便起一个,DFS Master的参数和处于Active状态的NameNode一致
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第89张图片
这样在Eclipse左侧列表的DFS location里新建一个目录,对应hdfs里也就建好了,可以用浏览器查看一下,自己试试。
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第90张图片
在eclipse里导入自己建一个包库
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第91张图片
把jar包导入刚建的包库
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第92张图片
把刚建的包库引入到project里
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第93张图片
把JUnit包库引入到project里
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第94张图片
利用xftp把hdfs-site.xml,core-site.xml,mapred-site.xml,yarn-site.xml等几个xml放到project的src目录
零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装_第95张图片

你可能感兴趣的:(零基础搭建Hadoop高可用环境——①虚拟机安装②伪分布安装③高可用安装)