注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mmicky 的博客

追逐刹那的惊艳

 
 
 

日志

 
 

HDFS HA系列实验之五:client 配置  

2014-01-26 14:57:05|  分类: hadoop2 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Hadoop client访问HDFS是通过client端的hadoop配置文件来访问hadoop集群的,一般的情况下我们在配置文件core-site.xml中配置fs.defaultFS是使用一个类似hdfs://hadoop1:8000/的固定地址和端口,显然这在访问HA时存在很大的局限性:HA如果切换了NN,那么就无法访问了;在federation中只能访问部分HDFS等等。那么在HA和Federation下该如何访问HDFS呢?

1:实验目的
A:client如何访问HA HDFS
B:client如何访问HA HDFS + Federation

2:client如何访问HA HDFS
根据上面相关资料重新配置HA+JournalNode+zookeeper环境,并格式化后启动,然后使用物理机192.168.100.111(机器名wyy)作为客户端来访问集群。

A:启动集群
[hadoop@product202 ~]$ /app/hadoop/zookeeper345/bin/zkServer.sh start
[hadoop@product202 ~]$ /app/hadoop/hadoop220/sbin/hadoop-daemon.sh start journalnode
[hadoop@product203 ~]$ /app/hadoop/zookeeper345/bin/zkServer.sh start
[hadoop@product203 ~]$ /app/hadoop/hadoop220/sbin/hadoop-daemon.sh start journalnode
[hadoop@product204 ~]$ /app/hadoop/zookeeper345/bin/zkServer.sh start
[hadoop@product204 ~]$ /app/hadoop/hadoop220/sbin/hadoop-daemon.sh start journalnode

[hadoop@product201 ~]$ cd /app/hadoop/hadoop220/
[hadoop@product201 hadoop220]$ bin/hdfs namenode -format
[hadoop@product201 hadoop220]$ bin/hdfs zkfc -formatZK
[hadoop@product201 hadoop220]$ sbin/hadoop-daemon.sh start zkfc
[hadoop@product202 ~]$ cd /app/hadoop/hadoop220/
[hadoop@product202 hadoop220]$ sbin/hadoop-daemon.sh start zkfc
[hadoop@product201 hadoop220]$ sbin/hadoop-daemon.sh start namenode
[hadoop@product202 hadoop220]$ bin/hdfs namenode -bootstrapStandby
[hadoop@product202 hadoop220]$ sbin/hadoop-daemon.sh start namenode
[hadoop@product201 hadoop220]$ sbin/hadoop-daemons.sh start datanode

B:客户端连结测试
将hadoop集群的配置文件复制到客户端192.168.100.111(机器名wyy)的配置目录中,并在客户端的/etc/hosts解析集群的NN机器名。
hadoop@wyy:/app/hadoop/hadoop220/etc$ scp -r hadoop@product201:/app/hadoop/hadoop220/etc/hadoop ./
hadoop@wyy:/app/hadoop/hadoop220/etc$ cat /etc/hosts
192.168.100.201 product201 product201.product
192.168.100.202 product202 product202.product
hadoop@wyy:/app/hadoop/hadoop220$ cat etc/hadoop/core-site.xml
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://product201:8020</value>
</property>
hadoop@wyy:/app/hadoop/hadoop220/etc$ cd ..
hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -mkdir /test
hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -put /home/mmicky/data/2013.txt /test/.
hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -ls /test
Found 1 items
-rw-r--r--   3 hadoop supergroup  258570165 2014-02-23 13:35 /test/2013.txt

杀死product201 namenode进程,模拟HA故障转移:
[root@product201 ~]# jps
1964 NameNode
1906 DFSZKFailoverController
2425 Jps
2061 DataNode
[root@product201 ~]# kill 1964


此时在客户端连结hadoop 集群的时候就会出错:
hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -ls /test
ls: Call From wyy/127.0.1.1 to product201:8020 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused

C:解决方案
使用参数dfs.client.failover.proxy.provider.[nameservice ID],该参数定义HDFS客户端用来和活动的namenode节目联系的java类。配置的java类是用来给HDFS客户端判断哪个namenode节点是活动的,当前是哪个namenode处理客户端的请求,目前hadoop2.2.0提供了唯一的一个实现类是ConfiguredFailoverProxyProvider,除非你自己定义了一个类,否则都将使用这个类。

重新配置hdfs-site.xml和core.xml,然后重新将配置文件发布到所有节点和客户端,再进行测试。
[hadoop@product201 hadoop]$ vi hdfs-site.xml
[hadoop@product201 hadoop]$ cat hdfs-site.xml
<property>
   <name>dfs.client.failover.proxy.provider.cluster1</name>
   <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
[hadoop@product201 hadoop]$ vi core-site.xml
[hadoop@product201 hadoop]$ cat core-site.xml
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://cluster1</value>
</property>
注意以上配置中cluster1是hdfs-site.xml中定义的[nameservice ID]

重新启动hadoop集群
hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -ls /test
Found 1 items
-rw-r--r--   3 hadoop supergroup  258570165 2014-02-23 13:35 /test/2013.txt

杀死product201 namenode进程,模拟HA故障转移:
[hadoop@product201 hadoop220]$ jps
1776 DFSZKFailoverController
1834 NameNode
1978 Jps
[hadoop@product201 hadoop220]$ kill 1834

此时在客户端连结hadoop集群的时候还是能正常访问
hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -ls /test
Found 1 items
-rw-r--r--   3 hadoop supergroup  258570165 2014-02-23 13:35 /test/2013.txt


3:client如何访问HA HDFS + Federation







  评论这张
 
阅读(1788)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017