Hadoop集群搭建

配置IP,修改主机名,关闭防火墙,配置SSH免密码登录

aaarticlea/png;base64,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" alt="" />

.准备Linux环境
.0点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 设置网段:192.168.8.0 子网掩码:255.255.255.0 -> apply -> ok
回到windows --> 打开网络和共享中心 -> 更改适配器设置 -> 右键VMnet1 -> 属性 -> 双击IPv4 -> 设置windows的IP:192.168.8.100 子网掩码:255.255.255.0 -> 点击确定
在虚拟软件上 --My Computer -> 选中虚拟机 -> 右键 -> settings -> network adapter -> host only -> ok
.1修改主机名
vim /etc/sysconfig/network NETWORKING=yes
HOSTNAME=itcast01 ### .2修改IP
两种方式:
第一种:通过Linux图形界面进行修改(强烈推荐)
进入Linux图形界面 -> 右键点击右上方的两个小电脑 -> 点击Edit connections -> 选中当前网络System eth0 -> 点击edit按钮 -> 选择IPv4 -> method选择为manual -> 点击add按钮 -> 添加IP:192.168.8.118 子网掩码:255.255.255.0 网关:192.168.1.1 -> apply 第二种:修改配置文件方式(屌丝程序猿专用)
vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0"
BOOTPROTO="static" ###
HWADDR="00:0C:29:3C:BF:E7"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"
IPADDR="192.168.8.118" ###
NETMASK="255.255.255.0" ###
GATEWAY="192.168.8.1" ### .3修改主机名和IP的映射关系
vim /etc/hosts 192.168.8.118 itcast01 .4关闭防火墙
#查看防火墙状态
service iptables status
#关闭防火墙
service iptables stop
#查看防火墙开机启动状态
chkconfig iptables --list
#关闭防火墙开机启动
chkconfig iptables off .5重启Linux
reboot

集群搭建步骤

.上传zk安装包

.解压

.配置(先在一台节点上配置)
.1添加一个zoo.cfg配置文件
$ZOOKEEPER/conf
mv zoo_sample.cfg zoo.cfg .2修改配置文件(zoo.cfg)
dataDir=/itcast/zookeeper-3.4./data server.=itcast05::
server.=itcast06::
server.=itcast07:: .3在(dataDir=/itcast/zookeeper-3.4./data)创建一个myid文件,里面内容是server.N中的N(server.2里面内容为2)
echo "" > myid .4将配置好的zk拷贝到其他节点
scp -r /itcast/zookeeper-3.4./ itcast06:/itcast/
scp -r /itcast/zookeeper-3.4./ itcast07:/itcast/ .5注意:在其他节点上一定要修改myid的内容
在itcast06应该讲myid的内容改为6 (echo "" > myid)
在itcast07应该讲myid的内容改为7 (echo "" > myid) .启动集群
分别启动zk
./zkServer.sh start ------------------------------------------------ zookeeper的默认配置文件为zookeeper/conf/zoo_sample.cfg,需要将其修改为zoo.cfg。其中各配置项的含义,解释如下: .tickTime:CS通信心跳时间
Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
tickTime= .initLimit:LF初始通信时限
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
initLimit= .syncLimit:LF同步通信时限
集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
syncLimit= .dataDir:数据文件目录
Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
dataDir=/home/michael/opt/zookeeper/data .clientPort:客户端连接端口
客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort= .服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
这个配置项的书写格式比较特殊,规则如下:
server.N=YYY:A:B server.=itcast05::
server.=itcast06::
server.=itcast07:: ——————————————————————————————————————

zookeper配置说明

hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFS HA、YARN等。最新的hadoop-2.4.1又增加了YARN HA

注意:apache提供的hadoop-2.4.1的安装包是在32位操作系统编译的,因为hadoop依赖一些C++的本地库,
所以如果在64位的操作上安装hadoop-2.4.1就需要重新在64操作系统上重新编译
(建议第一次安装用32位的系统,我将编译好的64位的也上传到群共享里了,如果有兴趣的可以自己编译一下) 前期准备就不详细说了,课堂上都介绍了
.修改Linux主机名
.修改IP
.修改主机名和IP的映射关系
######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机、阿里云主机等)
/etc/hosts里面要配置的是内网IP地址和主机名的映射关系
.关闭防火墙
.ssh免登陆
.安装JDK,配置环境变量等 集群规划:
主机名 IP 安装的软件 运行的进程
itcast01 192.168.1.201 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
itcast02 192.168.1.202 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
itcast03 192.168.1.203 jdk、hadoop ResourceManager
itcast04 192.168.1.204 jdk、hadoop ResourceManager
itcast05 192.168.1.205 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
itcast06 192.168.1.206 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
itcast07 192.168.1.207 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain 说明:
.在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步active namenode的状态,以便能够在它失败时快速进行切换。
hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode
这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active NameNode挂掉了,会自动切换Standby NameNode为standby状态
.hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,hadoop-2.4.1解决了这个问题,有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调
安装步骤:
.安装配置zooekeeper集群(在itcast05上)
.1解压
tar -zxvf zookeeper-3.4..tar.gz -C /itcast/
.2修改配置
cd /itcast/zookeeper-3.4./conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改:dataDir=/itcast/zookeeper-3.4./tmp
在最后添加:
server.=itcast05::
server.=itcast06::
server.=itcast07::
保存退出
然后创建一个tmp文件夹
mkdir /itcast/zookeeper-3.4./tmp
再创建一个空文件
touch /itcast/zookeeper-3.4./tmp/myid
最后向该文件写入ID
echo > /itcast/zookeeper-3.4./tmp/myid
.3将配置好的zookeeper拷贝到其他节点(首先分别在itcast06、itcast07根目录下创建一个itcast目录:mkdir /itcast)
scp -r /itcast/zookeeper-3.4./ itcast06:/itcast/
scp -r /itcast/zookeeper-3.4./ itcast07:/itcast/ 注意:修改itcast06、itcast07对应/itcast/zookeeper-3.4./tmp/myid内容
itcast06:
echo > /itcast/zookeeper-3.4./tmp/myid
itcast07:
echo > /itcast/zookeeper-3.4./tmp/myid .安装配置hadoop集群(在itcast01上操作)
.1解压
tar -zxvf hadoop-2.4..tar.gz -C /itcast/
.2配置HDFS(hadoop2.0所有的配置文件都在$HADOOP_HOME/etc/hadoop目录下)
#将hadoop添加到环境变量中
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1..0_55
export HADOOP_HOME=/itcast/hadoop-2.4.
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin #hadoop2.0的配置文件全部在$HADOOP_HOME/etc/hadoop下
cd /itcast/hadoop-2.4./etc/hadoop 2.2.1修改hadoo-env.sh
export JAVA_HOME=/usr/java/jdk1..0_55 2.2.2修改core-site.xml
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/itcast/hadoop-2.4./tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>itcast05:,itcast06:,itcast07:</value>
</property>
</configuration> 2.2.3修改hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>itcast01:</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>itcast01:</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>itcast02:</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>itcast02:</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://itcast05:8485;itcast06:8485;itcast07:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/itcast/hadoop-2.4./journal</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value></value>
</property>
</configuration> 2.2.4修改mapred-site.xml
<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration> 2.2.5修改yarn-site.xml
<configuration>
<!-- 开启RM高可靠 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 分别指定RM的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>itcast03</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>itcast04</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>itcast05:,itcast06:,itcast07:</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration> 2.2.6修改slaves(slaves是指定子节点的位置,因为要在itcast01上启动HDFS、在itcast03启动yarn,所以itcast01上的slaves文件指定的是datanode的位置,itcast03上的slaves文件指定的是nodemanager的位置)
itcast05
itcast06
itcast07 2.2.7配置免密码登陆
#首先要配置itcast01到itcast02、itcast03、itcast04、itcast05、itcast06、itcast07的免密码登陆
#在itcast01上生产一对钥匙
ssh-keygen -t rsa
#将公钥拷贝到其他节点,包括自己
ssh-coyp-id itcast01
ssh-coyp-id itcast02
ssh-coyp-id itcast03
ssh-coyp-id itcast04
ssh-coyp-id itcast05
ssh-coyp-id itcast06
ssh-coyp-id itcast07
#配置itcast03到itcast04、itcast05、itcast06、itcast07的免密码登陆
#在itcast03上生产一对钥匙
ssh-keygen -t rsa
#将公钥拷贝到其他节点
ssh-coyp-id itcast04
ssh-coyp-id itcast05
ssh-coyp-id itcast06
ssh-coyp-id itcast07
#注意:两个namenode之间要配置ssh免密码登陆,别忘了配置itcast02到itcast01的免登陆
在itcast02上生产一对钥匙
ssh-keygen -t rsa
ssh-coyp-id -i itcast01 .4将配置好的hadoop拷贝到其他节点
scp -r /itcast/ itcast02:/
scp -r /itcast/ itcast03:/
scp -r /itcast/hadoop-2.4./ root@itcast04:/itcast/
scp -r /itcast/hadoop-2.4./ root@itcast05:/itcast/
scp -r /itcast/hadoop-2.4./ root@itcast06:/itcast/
scp -r /itcast/hadoop-2.4./ root@itcast07:/itcast/
###注意:严格按照下面的步骤
.5启动zookeeper集群(分别在itcast05、itcast06、tcast07上启动zk)
cd /itcast/zookeeper-3.4./bin/
./zkServer.sh start
#查看状态:一个leader,两个follower
./zkServer.sh status .6启动journalnode(分别在在itcast05、itcast06、tcast07上执行)
cd /itcast/hadoop-2.4.
sbin/hadoop-daemon.sh start journalnode
#运行jps命令检验,itcast05、itcast06、itcast07上多了JournalNode进程 .7格式化HDFS
#在itcast01上执行命令:
hdfs namenode -format
#格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/itcast/hadoop-2.4./tmp,然后将/itcast/hadoop-2.4./tmp拷贝到itcast02的/itcast/hadoop-2.4./下。
scp -r tmp/ itcast02:/itcast/hadoop-2.4./ .8格式化ZK(在itcast01上执行即可)
hdfs zkfc -formatZK .9启动HDFS(在itcast01上执行)
sbin/start-dfs.sh .10启动YARN(#####注意#####:是在itcast03上执行start-yarn.sh,把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,所以把他们分开了,他们分开了就要分别在不同的机器上启动)
sbin/start-yarn.sh 到此,hadoop-2.4.1配置完毕,可以统计浏览器访问:
http://192.168.1.201:50070
NameNode 'itcast01:9000' (active)
http://192.168.1.202:50070
NameNode 'itcast02:9000' (standby) 验证HDFS HA
首先向hdfs上传一个文件
hadoop fs -put /etc/profile /profile
hadoop fs -ls /
然后再kill掉active的NameNode
kill - <pid of NN>
通过浏览器访问:http://192.168.1.202:50070
NameNode 'itcast02:9000' (active)
这个时候itcast02上的NameNode变成了active
在执行命令:
hadoop fs -ls /
-rw-r--r-- root supergroup -- : /profile
刚才上传的文件依然存在!!!
手动启动那个挂掉的NameNode
sbin/hadoop-daemon.sh start namenode
通过浏览器访问:http://192.168.1.201:50070
NameNode 'itcast01:9000' (standby) 验证YARN:
运行一下hadoop提供的demo中的WordCount程序:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4..jar wordcount /profile /out OK,大功告成!!!

2.4.1 HDFS HA & YARN HA

hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFS HA、YARN等。

注意:apache提供的hadoop-2.2.0的安装包是在32位操作系统编译的,因为hadoop依赖一些C++的本地库,
所以如果在64位的操作上安装hadoop-2.2.0就需要重新在64操作系统上重新编译
(建议第一次安装用32位的系统,我将编译好的64位的也上传到群共享里了,如果有兴趣的可以自己编译一下) 前期准备就不详细说了,课堂上都介绍了
.修改Linux主机名
.修改IP
.修改主机名和IP的映射关系
######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机、阿里云主机等)
/etc/hosts里面要配置的是内网IP地址和主机名的映射关系
.关闭防火墙
.ssh免登陆
.安装JDK,配置环境变量等 集群规划:
主机名 IP 安装的软件 运行的进程
itcast01 192.168.1.201 jdk、hadoop NameNode、DFSZKFailoverController
itcast02 192.168.1.202 jdk、hadoop NameNode、DFSZKFailoverController
itcast03 192.168.1.203 jdk、hadoop ResourceManager
itcast04 192.168.1.204 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
itcast05 192.168.1.205 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
itcast06 192.168.1.206 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain 说明:
在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步active namenode的状态,以便能够在它失败时快速进行切换。
hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode
这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active NameNode挂掉了,会自动切换Standby NameNode为standby状态 安装步骤:
.安装配置zooekeeper集群
.1解压
tar -zxvf zookeeper-3.4..tar.gz -C /itcast/
.2修改配置
cd /itcast/zookeeper-3.4./conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改:dataDir=/itcast/zookeeper-3.4./tmp
在最后添加:
server.=itcast04::
server.=itcast05::
server.=itcast06::
保存退出
然后创建一个tmp文件夹
mkdir /itcast/zookeeper-3.4./tmp
再创建一个空文件
touch /itcast/zookeeper-3.4./tmp/myid
最后向该文件写入ID
echo > /itcast/zookeeper-3.4./tmp/myid
.3将配置好的zookeeper拷贝到其他节点(首先分别在itcast05、itcast06根目录下创建一个itcast目录:mkdir /itcast)
scp -r /itcast/zookeeper-3.4./ itcast05:/itcast/
scp -r /itcast/zookeeper-3.4./ itcast06:/itcast/ 注意:修改itcast05、itcast06对应/itcast/zookeeper-3.4./tmp/myid内容
itcast05:
echo > /itcast/zookeeper-3.4./tmp/myid
itcast06:
echo > /itcast/zookeeper-3.4./tmp/myid .安装配置hadoop集群
.1解压
tar -zxvf hadoop-2.2..tar.gz -C /itcast/
.2配置HDFS(hadoop2.0所有的配置文件都在$HADOOP_HOME/etc/hadoop目录下)
#将hadoop添加到环境变量中
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1..0_55
export HADOOP_HOME=/itcast/hadoop-2.2.
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin #hadoop2.0的配置文件全部在$HADOOP_HOME/etc/hadoop下
cd /itcast/hadoop-2.2./etc/hadoop 2.2.1修改hadoo-env.sh
export JAVA_HOME=/usr/java/jdk1..0_55 2.2.2修改core-site.xml
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/itcast/hadoop-2.2./tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>itcast04:,itcast05:,itcast06:</value>
</property>
</configuration> 2.2.3修改hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>itcast01:</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>itcast01:</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>itcast02:</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>itcast02:</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://itcast04:8485;itcast05:8485;itcast06:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/itcast/hadoop-2.2./journal</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value></value>
</property>
</configuration> 2.2.4修改mapred-site.xml
<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration> 2.2.5修改yarn-site.xml
<configuration>
<!-- 指定resourcemanager地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>itcast03</value>
</property>
<!-- 指定nodemanager启动时加载server的方式为shuffle server -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration> 2.2.6修改slaves(slaves是指定子节点的位置,因为要在itcast01上启动HDFS、在itcast03启动yarn,所以itcast01上的slaves文件指定的是datanode的位置,itcast03上的slaves文件指定的是nodemanager的位置)
itcast04
itcast05
itcast06 2.2.7配置免密码登陆
#首先要配置itcast01到itcast02、itcast03、itcast04、itcast05、itcast06的免密码登陆
#在itcast01上生产一对钥匙
ssh-keygen -t rsa
#将公钥拷贝到其他节点,包括自己
ssh-coyp-id itcast01
ssh-coyp-id itcast02
ssh-coyp-id itcast03
ssh-coyp-id itcast04
ssh-coyp-id itcast05
ssh-coyp-id itcast06 #配置itcast03到itcast04、itcast05、itcast06的免密码登陆
#在itcast03上生产一对钥匙
ssh-keygen -t rsa
#将公钥拷贝到其他节点
ssh-coyp-id itcast04
ssh-coyp-id itcast05
ssh-coyp-id itcast06 #注意:两个namenode之间要配置ssh免密码登陆,别忘了配置itcast02到itcast01的免登陆
在itcast02上生产一对钥匙
ssh-keygen -t rsa
ssh-coyp-id -i itcast01 .4将配置好的hadoop拷贝到其他节点
scp -r /itcast/ itcast02:/
scp -r /itcast/ itcast03:/
scp -r /itcast/hadoop-2.2./ root@itcast04:/itcast/
scp -r /itcast/hadoop-2.2./ root@itcast05:/itcast/
scp -r /itcast/hadoop-2.2./ root@itcast06:/itcast/ ###注意:严格按照下面的步骤
.5启动zookeeper集群(分别在itcast04、itcast05、itcast06上启动zk)
cd /itcast/zookeeper-3.4./bin/
./zkServer.sh start
#查看状态:一个leader,两个follower
./zkServer.sh status .6启动journalnode(在itcast01上启动所有journalnode,注意:是调用的hadoop-daemons.sh这个脚本,注意是复数s的那个脚本)
cd /itcast/hadoop-2.2.
sbin/hadoop-daemons.sh start journalnode
#运行jps命令检验,itcast04、itcast05、itcast06上多了JournalNode进程 .7格式化HDFS
#在itcast01上执行命令:
hdfs namenode -format
#格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/itcast/hadoop-2.2./tmp,然后将/itcast/hadoop-2.2./tmp拷贝到itcast02的/itcast/hadoop-2.2./下。
scp -r tmp/ itcast02:/itcast/hadoop-2.2./ .8格式化ZK(在itcast01上执行即可)
hdfs zkfc -formatZK .9启动HDFS(在itcast01上执行)
sbin/start-dfs.sh .10启动YARN(#####注意#####:是在itcast03上执行start-yarn.sh,把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,所以把他们分开了,他们分开了就要分别在不同的机器上启动)
sbin/start-yarn.sh 到此,hadoop2..0配置完毕,可以统计浏览器访问:
http://192.168.1.201:50070
NameNode 'itcast01:9000' (active)
http://192.168.1.202:50070
NameNode 'itcast02:9000' (standby) 验证HDFS HA
首先向hdfs上传一个文件
hadoop fs -put /etc/profile /profile
hadoop fs -ls /
然后再kill掉active的NameNode
kill - <pid of NN>
通过浏览器访问:http://192.168.1.202:50070
NameNode 'itcast02:9000' (active)
这个时候itcast02上的NameNode变成了active
在执行命令:
hadoop fs -ls /
-rw-r--r-- root supergroup -- : /profile
刚才上传的文件依然存在!!!
手动启动那个挂掉的NameNode
sbin/hadoop-daemon.sh start namenode
通过浏览器访问:http://192.168.1.201:50070
NameNode 'itcast01:9000' (standby) 验证YARN:
运行一下hadoop提供的demo中的WordCount程序:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2..jar wordcount /profile /out OK,大功告成!!!

2.2.0 HDFS HA

集群搭建问题描述

1  hadoop 版本下载    http://archive.cloudera.com/cdh4/cdh/4/

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAvIAAAAhCAIAAAA0zNizAAAES0lEQVR4nO3dbXKjOhCFYe1Je5o9eZPZAvPDEwYjqXVaHxjL71OulE2aliD3DifCScJWE2OMMT5kMcYQQrUtAADAWGr+CE5TJw0AAJAifwAAgEUQawAAwCKINQAAYBHEGgAAsAhfrImvJs0JAACggTvWHJ+QbAAAwH10xZqNZAMAAG6jN9ZsJBsAAHAPA2JN+hIAAOB6jbEmhPD8IwnHjxOmBwAAoGqPNd4/mBDCTwg/jdPs3r1tONeg3hmOPaK9m9hWrDk9XDMB8LmMf9tL/+CXNnr/qE6p0vXNc3VcsVupT9txGadI7CB2zl6gS88X0xhrno5/4VI5O51Xu8sulqeBXClBv/a76sf2HBh9mucA4LbSa2T6/LSxFICMl9lxjSDVHIz0ZCb28R6Xsq/dxDgDpa+I0WeTz8Anqh/VnxC28s89ZWJNjH+KJ3TNWDO7XiRGin1RR2/onYBrdwIQcDdtl/P+WGOXjYo1+3W9uU9DXJvRR+98LCDW/MYa8xfV/I81MRJr7hxrXKspxBrgO42KNfpnlcohsUZcHan2MTamiYFYcyVPrCn/ZuF/sea3zI412TdqGG/gyH6qVJ9u977pJDtnV82kWKOfH/s864N6z1vDefB+HY1D04doe88Q8J2MWxviVdl7Be2PNcZerlhjj27cFbpJrMnOhFjzEmu2cqw51hix5hRNTk/Sl656Y3u2Jr28ZUND9liMmuZYY8ynek7SPtnt+iS38nnzHpdrL7uPa0qukwYgqz/WZPukqn1KwaLUx55/f6zR+8yLNadupeen4uPH9fhjTTbZvBaIN6GUb9Cz9aO2V81bpeipr/ZRtjdczocfl12WzZquaVd3JNMANleOabsq62UNl2FjhkMWkMRWU2PN9roGY+9IrNm2JNZkI4tSs12yKuPabmtOP3eONT03X66MNaMWV4wjJdMANv2WR6m+2tBV1r++Ul3aaRv37bGmWkCseXGMLKW88ng8lLLZMWVgrGleFVD2fVescQ3aP89JN6GUnkoxsQYw2Pc7lJdKgT60vrtY3DOZzjhyQayxRyTWhD2s2G8ZPlbmB/Nfhk8rDW19vNdFe7XD3uU0lqtenFLz+TEaepdMRp2H7PS8scaeT3bBpmcFCFiecu+mGmJKO3pH7++gRBNXH/u4sutAYuBwzUecFe+tOXuGlWdSqf6A97H4PFL5B1uOL9OL0P6yVJ8dJe2g33YpTaZ6ec5ORq8XZ1XqY8zZPhtKLOg5ruqR2l/H7EPpb8dT738VwPewb9aUthjF+tJIto/Rv3n+Siujj9Fh1HZjJtlPlXZJB9o/il+XzyLFmj2m1H9vzWv9TXDd+k7KqhUAYCW+/KHEmuJIte+/efB448P1PwIA4J6uizUAAABTuWNNjPGRiDESawAAwHu1ZJH0XVSrvvMIAAB8ELIIAABYBLEGAAAsglgDAAAWQawBAACLINYAAIBF/AVvq+O1xqf/MgAAAABJRU5ErkJggg==" alt="" />

上一篇:在 uniGUI 中实现自动弹窗后延迟几秒关闭 — Toast 功能


下一篇:Linux下Tomcat catalina.out自动归档,以及logrotate 配置详解