hadoop集群搭建(namenode是单点的)  http://www.cnblogs.com/kisf/p/7456290.html

HA集群需要zk, zk搭建:http://www.cnblogs.com/kisf/p/7357184.html   zk可视化管理工具:http://www.cnblogs.com/kisf/p/7365690.html

hostname ip 安装软件 启动进程
master1 10.112.29.9 jdk,hadoop NameNode,ResourceManager,JournalNode,DFSZKFailoverController
master2,slave1 10.112.29.10 jdk,hadoop NameNode,JournalNode,DFSZKFailoverController,DataNode,NodeManager
slave2 10.112.28.237 jdk,hadoop JournalNode,DataNode,NodeManager

1. 修改/etc/hosts, 三个机器一致。

vim /etc/hosts 

10.112.29.9 master1
10.112.29.10 master2
10.112.29.10 slave1
10.112.28.237 slave2
10.112.28.245 zk1
10.112.28.229 zk2
10.112.28.241 zk3

  

2. 修改core-site.xml, hdfs-site.xml及yarn-site.xml, mapred-site.xml不变。

core-site.xml

<configuration>
<!-- 指定hdfs的nameservice为ns -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns</value>
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/xxx/soft/hadoop-2.7.3/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<!--指定zookeeper地址-->
<property>
<name>ha.zookeeper.quorum</name>
<value>zk1:2181,zk2:2181,zk3:2181</value>
</property>
</configuration>

hdfs-site.xml

<configuration>

  <!--指定hdfs的nameservice为ns,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns</value>
</property> <!-- ns下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns</name>
<value>nn1,nn2</value>
</property> <!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns.nn1</name>
<value>master1:9000</value>
</property> <!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns.nn1</name>
<value>master1:50070</value>
</property> <!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns.nn2</name>
<value>master2:9000</value>
</property> <!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns.nn2</name>
<value>master2:50070</value>
</property> <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://slave1:8485;slave2:8485/ns</value>
</property> <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/xxx/soft/hadoop-2.7.3/journal</value>
</property> <!-- 开启NameNode故障时自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property> <!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property> <!-- 配置隔离机制,如果ssh是默认22端口,value直接写sshfence即可 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property> <!-- 使用隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property> <!-- 设置namenode存放的路径 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/xxx/soft/hadoop-2.7.3/tmp/name</value>
</property> <!-- 设置hdfs副本数量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property> <!-- 设置datanode存放的路径 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/xxx/soft/hadoop-2.7.3/tmp/data</value>
</property> <!-- 在NN和DN上开启WebHDFS (REST API)功能,不是必须 -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property> </configuration>

yarn-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 设置 resourcemanager 在哪个节点-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master1</value>
</property> <!-- reducer取数据的方式是mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property> <property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property> </configuration>

3. 将/xxx/soft/hadoop-2.7.3 scp至其他机器。注意清理一下 logs, tmp下文件。

4. 启动

(1)格式化zkfc

./bin/hdfs zkfc -formatZK

(2)格式化namenode,格式化namenode之前需要在master1, slave1, slave2上分别启动journalnode。特别注意,如果不启动,namenode格式化会抛错。

在master1, slave1, slave2上分别启动journalnode。(单独启动进程用hadoop-daemon.sh start xxx)

./sbin/hadoop-daemon.sh start journalnode  

在master1上格式化namenode

./bin/hdfs namenode -format ns 

将./tmp 拷贝至master2

scp -r ./tmp/ master2:/xxx/soft/hadoop-2.7.3/

(3)启动namenode和yarn

./sbin/start-dfs.sh 

./sbin/start-yarn.sh

5. 查看进程

[root@vm-10-112-29-9 hadoop-2.7.3]# jps
13349 NameNode
13704 DFSZKFailoverController
13018 JournalNode
14108 Jps
13836 ResourceManager [root@vm-10-112-29-10 hadoop-2.7.3]# jps
31412 NodeManager
30566 JournalNode
31174 DataNode
31576 Jps
31307 DFSZKFailoverController
31069 NameNode [root@vm-10-112-28-237 hadoop-2.7.3]# jps
27482 Jps
27338 NodeManager
27180 DataNode
26686 JournalNode

6. 验证HDFS

hadoop fs -put ./NOTICE.txt hdfs://ns/

  

7. 访问

  

  

  

hadoop namenode HA集群搭建的更多相关文章

  1. hadoop yarn HA集群搭建

    可先完成hadoop namenode HA的搭建:http://www.cnblogs.com/kisf/p/7458519.html 搭建yarnde HA只需要在namenode HA配置基础上 ...

  2. hadoop ha集群搭建

    集群配置: jdk1.8.0_161 hadoop-2.6.1 zookeeper-3.4.8 linux系统环境:Centos6.5 3台主机:master.slave01.slave02 Hado ...

  3. hadoop2.8 ha 集群搭建

    简介: 最近在看hadoop的一些知识,下面搭建一个ha (高可用)的hadoop完整分布式集群: hadoop的单机,伪分布式,分布式安装 hadoop2.8 集群 1 (伪分布式搭建 hadoop ...

  4. Hadoop的HA集群启动和停止流程

    假设我们有3台虚拟机,主机名分别是hadoop01.hadoop02和hadoop03. 这3台虚拟机的Hadoop的HA集群部署计划如下: 3台虚拟机的Hadoop的HA集群部署计划 hadoop0 ...

  5. hadoop高可用集群搭建小结

    hadoop高可用集群搭建小结1.Zookeeper集群搭建2.格式化Zookeeper集群 (注:在Zookeeper集群建立hadoop-ha,amenode的元数据)3.开启Journalmno ...

  6. ZooKeeper学习之路 (九)利用ZooKeeper搭建Hadoop的HA集群

    Hadoop HA 原理概述 为什么会有 hadoop HA 机制呢? HA:High Available,高可用 在Hadoop 2.0之前,在HDFS 集群中NameNode 存在单点故障 (SP ...

  7. hadoop HA集群搭建步骤

      NameNode DataNode Zookeeper ZKFC JournalNode ResourceManager NodeManager node1 √   √ √   √   node2 ...

  8. hadoop HA+kerberos HA集群搭建

    IP.主机名规划 hadoop集群规划: hostname IP hadoop 备注 hadoop1 110.185.225.158 NameNode,ResourceManager,DFSZKFai ...

  9. Hadoop2.0 HA集群搭建步骤

    上一次搭建的Hadoop是一个伪分布式的,这次我们做一个用于个人的Hadoop集群(希望对大家搭建集群有所帮助): 集群节点分配: Park01 Zookeeper NameNode (active) ...

随机推荐

  1. 【BZOJ3211】花神游历各国 并查集+树状数组

    [BZOJ3211]花神游历各国 Description Input Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input 41 100 5 551 1 22 1 ...

  2. mybatis设置数据库连接的密码不需要加密

    mybatis设置数据库连接的密码不需要加密:在数据库连接配置处加上:<property name="connectionProperties" value="co ...

  3. LeetCode 笔记系列15 Set Matrix Zeroes [稍微有一点hack]

    题目:Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. Fol ...

  4. 170425、centos安装mysql5.6数据库

    # rpm -qa | grep mysql ## 查看该操作系统上是否已经安装了 mysql 数据库, 有的话,可以通过 rpm -e 命令 或者 rpm -e --nodeps 命令来卸载掉 # ...

  5. 160422、Highcharts后台获取数据

    而我这次做的是趋势图,涉及到动态刷新,做的过程还是花了一番功夫的,也补充和巩固了一点js的知识,为了纪念,把过程记录一下: 首先,是引入HIghcharts绘图相关的js文件和jQuery.js. 接 ...

  6. python--生成测试数据

    1.方法 import datetime params_dict_data = { "system_id":"systemId001", "order ...

  7. DNS服务简介

    一.域名系统 1.域名系统概述 域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址.域名系统其实就是名字系统.为什么不叫“名字” ...

  8. ORACLE安装(12c-Redhat6.5)

    Oracle安装(12c-Redhat6.5) Redhat6.5系统准备 / 10G SWAP 4G /boot 200M /HOME 4G /usr 8G /var 4G /u01 Preinst ...

  9. go学习笔记二:运行使用命令行参数

    本文只作为博主的go语言学习笔记. 对命令行参数的解析,只是在运行时使用的,比如以下命令:go run gomain -conf conf.toml 没有办法再go build时使用. 一.运行时命令 ...

  10. Golang&Python测试thrift

    接上篇,安装好之后,就开始编写IDL生成然后测试. 一.生成运行 参考 http://www.aboutyun.com/thread-8916-1-1.html 来个添加,查询. namespace ...