如何使用Cloudera Manager启用HDFS的HA

1.文档编写目的


在HDFS集群中NameNode存在单点故障(SPOF),对于只有一个NameNode的集群,如果NameNode机器出现意外,将导致整个集群无法使用。为了解决NameNode单点故障的问题,Hadoop给出了HDFS的高可用HA方案,HDFS集群由两个NameNode组成,一个处于Active状态,另一个处于Standby状态。

Active NameNode可对外提供服务,而Standby NameNode则不对外提供服务,仅同步Active NameNode的状态,以便在Active NameNode失败时快速的进行切换。本篇文章主要讲述如何使用Cloudera Manager启用HDFS的HA。

内容概述

1.HDFS HA启用
2.更新Hive Metastore NameNode
3.HDFS HA功能可用性测试
4.Hive及Impala测试

2.启用HDFS HA


1.使用管理员用户登录Cloudera Manager的Web管理界面,进入HDFS服务

2.点击“启用High Avaiability”,设置NameService名称

3.点击“继续”,选择NameNode主机及JouralNode主机

JouralNode主机选择,一般与Zookeeper节点一致即可(至少3个且为奇数)

4.点击“继续”,设置NameNode的数据目录和JouralNode的编辑目录

NameNode的数据目录默认继承已有NameNode数据目录。

5.点击“继续”,启用HDFS的High Availability,如果集群已有数据,格式化NameNode会报错,不用理。


6.点击“继续”,完成HDFS的High Availability


7.HDFS实例查看

通过实例列表可以看到启用HDFS HA后增加了NameNode、Failover Controller及JouralNode服务并且服务都正常启动,至此已完成了HDFS HA的启用,接下来进行HDFS HA功能的可用性测试。

CM上HDFS HA的使用,可以通过界面进行手动切换


点击“Federation与High Availability”进入

可以进行手动故障转移

image

故障转移成功

.png

3.更新Hive MetaStore NameNode


1.进入Hive服务并停止Hive的所有服务


2.确认Hive服务停止后,点击“更新Hive Metastore NameNode”


3.更新Hive Metastore NameNode


4.更新成功


5.启动Hive服务

完成HiveMetastore NameNode更新。

4.HDFS HA功能可用性测试


1.向集群目录put一个数据文件

[root@ip-172-31-6-148 ~]# ll test.tar.gz   
-rw-r--r-- 1 root root 1180315150Nov 22 16:26 test.tar.gz
[root@ip-172-31-6-148 ~]# hadoop fs -ls /tmp
Found 6 items
-rw-r--r--   3 root   supergroup        342 2017-10-30 03:44 /tmp/a.sh
drwxr-xr-x   - yarn   supergroup          0 2017-10-16 14:00 /tmp/hadoop-yarn
drwx--x--x   - hbase  supergroup          0 2017-10-25 12:42 /tmp/hbase-staging
drwx-wx-wx   - hive   supergroup          0 2017-10-25 02:10 /tmp/hive
drwxrwxrwt   - mapred hadoop              0 2017-11-10 07:33 /tmp/logs
[root@ip-172-31-6-148 ~]# hadoop fs -put test.tar.gz /tmp

2.put文件的同时将Active NameNode服务停止,Put数据报错,但其实put任务没有终止。

[root@ip-172-31-6-148 ~]# hadoop fs -put test.tar.gz /tmp
17/11/22 16:38:18 WARN ipc.Client: Failed to connect to server: ip-172-31-10-118.fayson.com/172.31.10.118:8020: try once and fail.
java.net.ConnectException: Connection refused
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)
        at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
        at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:530)
        at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:494)
        at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:648)
        at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:744)
        at org.apache.hadoop.ipc.Client$Connection.access$3000(Client.java:396)
        at org.apache.hadoop.ipc.Client.getConnection(Client.java:1557)
        at org.apache.hadoop.ipc.Client.call(Client.java:1480)
        at org.apache.hadoop.ipc.Client.call(Client.java:1441)
        at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:230)
        at com.sun.proxy.$Proxy16.getFileInfo(Unknown Source)

3.NameNode状态


4.查看数据是否put到HDFS

test.tar.gz数据文件已成功put到HDFS的/tmp目录,说明在put过程中Active状态的NameNode停止后,会自动将Standby状态的NameNode切换为Active状态,未造成HDFS任务终止。

5.Hive测试


可以看到Hive表的LOCATION已经被修改为HDFS的NameService名称。

2.执行Select操作

3.执行Count操作


6.Impalac测试


1.在impala-shell命令行进行操作

[root@ip-172-31-5-190 ~]# impala-shell
[ip-172-31-5-190.fayson.com:21000] > select * from test_table;
...
+-----+----------+
| s1  | s2       |
+-----+----------+
| 1   | test     |
| 2   | fayson   |
| 3   | zhangsan |
| 10  | test     |
| 100 | test     |
| 20  | fayson   |
| 200 | fayson   |
| 30  | zhangsan |
| 1   | test     |
+-----+----------+
Fetched 9 row(s) in 7.03s
[ip-172-31-5-190.fayson.com:21000] > 

[ip-172-31-5-190.fayson.com:21000] > select count(*) from test_table;
+----------+
| count(*) |
+----------+
| 9        |
+----------+
Fetched 1 row(s) in 0.16s
[ip-172-31-5-190.fayson.com:21000] > 

注意:如果在更新Hive Metastore NameNode时未重启Impala服务,则需要在命令行执行“invalidate metadata”

7.常见问题


1.查询Hive表报错“SemanticException Unable todetermine…”

hive> select * from test_table;
FAILED: SemanticException Unable to determine if hdfs://ip-172-31-10-118.fayson.com:8020/fayson/test_table is encrypted: org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.ipc.StandbyException): Operation category READ is not supported in state standby. Visit https://s.apache.org/sbnn-error
        at org.apache.hadoop.hdfs.server.namenode.ha.StandbyState.checkOperation(StandbyState.java:88)
        at org.apache.hadoop.hdfs.server.namenode.NameNode$NameNodeHAContext.checkOperation(NameNode.java:1835)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkOperation(FSNamesystem.java:1505)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getServerDefaults(FSNamesystem.java:1847)
        at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getServerDefaults(NameNodeRpcServer.java:582)
        at org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.getServerDefaults(AuthorizationProviderProxyClientProtocol.java:100)
        at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getServerDefaults(ClientNamenodeProtocolServerSideTranslatorPB.java:394)
        at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
        at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:617)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1073)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2226)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2222)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:422)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1917)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2220)
hive> 

问题原因:查询报错由于HDFS启用HA,Hive表的LOCATION需要配置为NameServer的名称如hdfs://nameservice1/user/hive/warehouse/xxxx

查看建表语句,可以看到Hive的LOCATION地址使用的是未启用高可用时的HDFS地址。



解决方法:参考更新Hive MetaStore NameNode章节

2.使用“更新Hive Metastore NameNode”功能,如果Hive表的LOCATION路径修改不成功,则可以通过直接修改hive的元数据库信息来完成。

root@ip-172-31-6-148 ~]# mysql -uroot -p
mysql> use metastore;
mysql> update `DBS` set `DB_LOCATION_URI` = replace(DB_LOCATION_URI,"ip-172-31-6-148.fayson.com","nameservice1");
mysql> update SDS  set location =replace(location,"ip-172-31-6-148.fayson.com","nameservice1");

参考:https://cloud.tencent.com/developer/article/1078380

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355