天天看点

CDH中配置HDFS HA

我一共安装了三个节点的集群,对于 ha 方案来说,三个节点准备安装如下服务:

cdh1:hadoop-hdfs-namenode(primary) 、hadoop-hdfs-journalnode、hadoop-hdfs-zkfc

cdh2:hadoop-hdfs-namenode(standby)、hadoop-hdfs-journalnode、hadoop-hdfs-zkfc

cdh3: hadoop-hdfs-journalnode

根据上面规划,在对应节点上安装相应的服务。

停掉集群上所有服务。

停止服务集群的所有客户端程序,包括定时任务。

a,查找本地配置的文件目录(属性名为 dfs.name.dir 或者 dfs.namenode.name.dir或者hadoop.tmp.dir )

通过上面的命令,可以看到类似以下信息:

b,对hdfs数据进行备份

在 cdh1、cdh2、cdh3 上安装 hadoop-hdfs-journalnode

在 cdh1、cdh2 上安装 hadoop-hdfs-zkfc:

修改/etc/hadoop/conf/core-site.xml,做如下修改:

修改/etc/hadoop/conf/hdfs-site.xml,删掉一些原来的 namenode 配置,增加如下:

将配置文件同步到集群其他节点:

在journalnode的三个节点上创建目录:

在两个nn上配置hdfs用户间无密码登陆:

对于 cdh1:

对于 cdh2:

启动cdh1、cdh2、cdh3上的 hadoop-hdfs-journalnode 服务

在namenode上初始化共享存储,如果没有格式化,则先格式化:

启动namenode:

cdh2作为 standby namenode,在该节点上先安装namenode服务

再运行:

如果是使用了kerberos,则先获取hdfs的ticket再执行:

然后,启动 standby namenode:

在两个namenode上,即cdh1和cdh2,安装hadoop-hdfs-zkfc

在任意一个namenode上下面命令,其会创建一个znode用于自动故障转移。

然后再两个 namenode 节点上启动zkfc:

分别访问 http://cdh1:50070/ 和 http://cdh2:50070/ 查看谁是 active namenode,谁是 standyby namenode。

查看某namenode的状态:

执行手动切换:

再次访问 http://cdh1:50070/ 和 http://cdh2:50070/ 查看谁是 active namenode,谁是 standyby namenode。

先停掉 hbase,然后修改/etc/hbase/conf/hbase-site.xml,做如下修改:

在 zookeeper 节点上运行/usr/lib/zookeeper/bin/zkcli.sh

最后启动 hbase 服务。

运行下面命令将hive的metastore的root地址的hdfs nameservice。

不需要做什么修改,但是一定要记住 core-site.xml 中 <code>fs.defaultfs</code> 参数值要带上端口号,在cdh中为 8020。

继续阅读