Hadoop 2.7.1高可用分布式环境安装

为了高可用性,正式生产环境我们肯定至少有2个NameNode和2个ResourceManager,下面是具体的配置步骤:

 

集群规划:
理想情况:
主机名 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

本次测试Demo:
apc-lgdcdevl201 DataNode、NodeManager、JournalNode、QuorumPeerMain ,NameNode、DFSZKFailoverController, ResourceManager
apc-lgdcdevl202 DataNode、NodeManager、JournalNode、QuorumPeerMain ,NameNode、DFSZKFailoverController, ResourceManager

 

说明:
1.  在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状态
2.  hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,hadoop-2.4.1之后解决了这个问题,有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调

 

Steps:

1.  安装配置zooekeeper集群

配置zoo.cfg, 修改dataDir和server,  最后分别配置myid.  比较简单 这里省略

 

2.  安装配置hadoop集群

配置文件: hadoop-ha

 

3.  启动集群
###注意:严格按照下面的步骤
2.5  启动zookeeper集群(201,202)
zkServer.sh start
./zkServer.sh status (可以通过此命令查看哪个是leader,哪个是follower)

 

2.6  启动journalnode(分别在201,202上执行)
hadoop-daemon.sh start journalnode
#运行jps命令检验,201,202上多了JournalNode进程

 

2.7  格式化HDFS
#在201上执行命令:
hdfs namenode -format
#格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,将此目录复制到202的/hadoop-cluster/下。
scp -r tmp szuser@apc-lgdcdevl202:~/ahu/hadoop-cluster/

 

2.8  格式化ZK(在201上执行即可)
hdfs zkfc -formatZK

 

2.9  启动HDFS(在201上执行)
start-dfs.sh

 

2.10  启动YARN(#####注意#####:是在201上执行start-yarn.sh,把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,所以把他们分开了,他们分开了就要分别在不同的机器上启动)
start-yarn.sh (202上也要执行才能启动另外一个RM)

查看RM状态的命令
yarn rmadmin –getServiceState rm1
状态切换的命令
yarn rmadmin –transitionToStandby rm1

 

到此, 配置完毕,可以通过浏览器访问Namenode管理界面:
http://http://apc-lgdcdevl201/:50070
http://http://apc-lgdcdevl202/:50070

 

4.  验证HDFS HA
首先向hdfs上传一个文件
hadoop fs -put /etc/profile /profile
hadoop fs -ls /

然后再kill掉active的NameNode
kill -9 <pid of NN>
通过浏览器访问验证

然后执行命令:
hadoop fs -ls /
-rw-r–r– 3 root supergroup 1926 2014-02-06 15:36 /profile
刚才上传的文件依然存在!!!
手动启动那个挂掉的NameNode
hadoop-daemon.sh start namenode
通过浏览器访问验证

 

5.  验证YARN:
hdfs dfs -mkdir /user //HDFS上创建目录
hdfs dfs -mkdir /user/<username> //HDFS上创建目录
hdfs dfs -put etc/hadoop input //将etc/hadoop 下面的文件放入input文件夹里面
hdfs dfs -ls -R / //通过这个命令可以查看hdfs里面有什么目录和文件
hadoop jar /home/szuser/ahu/hadoop-cluster/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output ‘dfs[a-z.]+’

http://apc-lgdcdevl201:8088/cluster  yarn的WEB执行界面

发表评论

电子邮件地址不会被公开。 必填项已用*标注

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>