hadoop 2.x 完全分布式搭建
HDFS HA 集群搭建:
DN(DataNode):3个;NN(NameNode):2;ZK(ZooKeeper):3(大于1的奇数个);ZKFC:和NN在同一台机器;JN:3;RM(ResourceManager):1;DM(DataManager):3个;与DN在同一台,就近原则
√表示在该机器上有该进程。
NN | DN | ZK | ZKFC | JN | RM | DM | |
Node1 | √ | √ | √ | √ | |||
Node2 | √ | √ | √ | √ | √ | √ | |
Node3 | √ | √ | √ | √ | |||
Node4 | √ | √ | √ |
1.解压 hadoop-2.5.2.tar.gz
[hadoop@node1 software]$ tar -zxvf hadoop-2.5..tar.gz
其中 -zxvf 含义如下:
-z, gzip : 对归档文件使用 gzip 压缩
-x, --extract, --get : 释放归档文件中文件及目录
-v, --verbose : 显示命令整个执行过程
-f, --file=ARCHIVE : 指定 (将要创建或已存在的) 归档文件名
这里注意,我们的环境为CentOS7 64位系统,这里的tar包也需要为64位,可以使用如下方法查看hadoop tar包是32位还是64位:
/hadoop-2.5./lib/native
[hadoop@node1 native]$ ls
libhadoop.a libhadoop.so libhadooputils.a libhdfs.so
libhadooppipes.a libhadoop.so.1.0. libhdfs.a libhdfs.so.0.0.
[hadoop@node1 native]$ file libhadoop.so.1.0.
libhadoop.so.1.0.: ELF -bit LSB shared object, x86-, version (SYSV), dynamically linked, BuildID[sha1]=29e15e4c9d9840a7b96b5af3e5732e5935d91847, not stripped
2.进入hadoop解压后的目录修改hadoop-env.sh,主要修改JAVA_HOME
[hadoop@node1 hadoop]$ echo $JAVA_HOME
/usr/java/jdk1..0_75
[hadoop@node1 hadoop]$ vim hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1..0_75
2. 修改hdfs-site.xml,可以参照官档 http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html
<configuration>
<!--配置服务名称,名称可以随意-->
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<!--配置所有NameNode名称,这里名称随意-->
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<!--配置所有NameNode的RPC协议端口-->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>node1.example.com:</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>node2.example.com:i8020</value>
</property>
<!--配置Http协议端口和主机-->
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>node1.example.com:</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>node2.example.com:</value>
</property>
<!--配置JournalNodes 的地址-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node2:8485;node3:8485;node4:8485/mycluster</value>
</property>
<!--配置客户端要使用的类,客户端使用这个类找到Active NodeName-->
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--配置sshfence-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_dsa</value>
</property> <!--配置JournalNodes的工作目录-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/jn/data</value>
</property> <!--开启自动切换,当然手动切换也是可用用的-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property> </configuration>
3.配置core-site.xml
<configuration>
<!--配置NameNode入口,这里配置集群名称,不能配置具体的ip-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<!--配置zk,表明zk在哪些机器上有-->
<property>
<name>ha.zookeeper.quorum</name>
<value>node1:,node2:,node3:</value>
</property>
<!--修改hadoop的临时目录,默认目录在系统的tmp目录下-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop</value>
</property> </configuration>
4.配置zk
initLimit=
syncLimit=
dataDir=/opt/zookeeper
clientPort= server.=node1::
server.=node2::
server.=node3::
在配置的dataDir目录下创建myid文件,在node1上配置,稍后还要在node2,node3做相应配置
[hadoop@node1 zookeeper]$ cat /opt/zookeeper/myid
将node1上的zookeeper目录拷贝的node2,及node3上
[root@node1 opt]# scp -r zookeeper/ root@node2:/opt/
[root@node1 opt]# scp -r zookeeper/ root@node3:/opt/
并在node2及node3上分别修改myid文件,node2修改为2,node3修改为3
将node1上的zk的目录拷贝到node2,node3上
[hadoop@node1 software]$ scp -r zookeeper-3.4. hadoop@node2:/home/hadoop/software/
[hadoop@node1 software]$ scp -r zookeeper-3.4. hadoop@node3:/home/hadoop/software/
配置3台节点的ZK_HOME的环境变量:
[root@node1 bin]# vim /etc/profile
export ZK_HOME=/home/hadoop/software/zookeeper-3.4.
export PATH=$PATH:$ZK_HOME/bin
关闭防火墙,并在3台机器上分别启动zk
# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/hadoop/software/zookeeper-3.4./bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# jps
Jps
QuorumPeerMain
5.配置slaves
[root@node1 hadoop]# vim slaves node2
node3
node4
6,将配置好的hadoop目录拷贝到其他节点
[hadoop@node1 hadoop]$ scp * hadoop@node2:/home/hadoop/software/hadoop-2.5./etc/hadoop/
[hadoop@node1 hadoop]$ scp * hadoop@node3:/home/hadoop/software/hadoop-2.5./etc/hadoop/
[hadoop@node1 hadoop]$ scp * hadoop@node4:/home/hadoop/software/hadoop-2.5./etc/hadoop/
7. 启动JournalNode
分别在node2,node3,node4机器上上启动JournalNode
[hadoop@node2 sbin]$ ./hadoop-daemon.sh start journalnode
starting journalnode, logging to /home/hadoop/software/hadoop-2.5./logs/hadoop-hadoop-journalnode-node2.out
[hadoop@node2 sbin]$ jps
JournalNode
Jps
QuorumPeerMain
[hadoop@node2 sbin]$
8.在其中一台含有Namenode的机器上进行格式化
[hadoop@node1 bin]$ ./hdfs namenode -format
9.将刚才格式化好的元数据文件拷贝到其他的namenode节点上
9.1 先启动刚才格式化后的Namenode节点(只启动NameNode)
[hadoop@node1 sbin]$ ./hadoop-daemon.sh start namenode
[hadoop@node1 sbin]$ jps
QuorumPeerMain
NameNode
Jps
9.2 再在未格式化的节点上执行以下命令:
[hadoop@node2 bin]$ ./hdfs namenode -bootstrapStandby
检查是否有相应目录生成
10.先停止所有的服务,除了ZK
[hadoop@node1 sbin]$ ./stop-dfs.sh
Stopping namenodes on [node1 node2]
node2: no namenode to stop
node1: stopping namenode
node2: no datanode to stop
node4: no datanode to stop
node3: no datanode to stop
Stopping journal nodes [node2 node3 node4]
node3: stopping journalnode
node2: stopping journalnode
node4: stopping journalnode
Stopping ZK Failover Controllers on NN hosts [node1 node2]
node2: no zkfc to stop
node1: no zkfc to stop
[hadoop@node1 sbin]$
11.格式化zkfc ,在任意一台有Namenode机器上进行格式化
[hadoop@node1 bin]$ ./hdfs zkfc -formatZK
12.启动hdfs
[hadoop@node1 sbin]$ ./start-dfs.sh
Starting namenodes on [node1 node2]
node1: starting namenode, logging to /home/hadoop/software/hadoop-2.5./logs/hadoop-hadoop-namenode-node1.out
node2: starting namenode, logging to /home/hadoop/software/hadoop-2.5./logs/hadoop-hadoop-namenode-node2.out
node4: starting datanode, logging to /home/hadoop/software/hadoop-2.5./logs/hadoop-hadoop-datanode-node4.out
node2: starting datanode, logging to /home/hadoop/software/hadoop-2.5./logs/hadoop-hadoop-datanode-node2.out
node3: starting datanode, logging to /home/hadoop/software/hadoop-2.5./logs/hadoop-hadoop-datanode-node3.out
Starting journal nodes [node2 node3 node4]
node3: starting journalnode, logging to /home/hadoop/software/hadoop-2.5./logs/hadoop-hadoop-journalnode-node3.out
node2: starting journalnode, logging to /home/hadoop/software/hadoop-2.5./logs/hadoop-hadoop-journalnode-node2.out
node4: starting journalnode, logging to /home/hadoop/software/hadoop-2.5./logs/hadoop-hadoop-journalnode-node4.out
Starting ZK Failover Controllers on NN hosts [node1 node2]
node1: starting zkfc, logging to /home/hadoop/software/hadoop-2.5./logs/hadoop-hadoop-zkfc-node1.out
node2: starting zkfc, logging to /home/hadoop/software/hadoop-2.5./logs/hadoop-hadoop-zkfc-node2.out
[hadoop@node1 sbin]$ jps
Jps
QuorumPeerMain
NameNode
DFSZKFailoverController
[hadoop@node1 sbin]$
通过jps查看需要的节点是否启动成功
[hadoop@node2 opt]$ jps
JournalNode
DataNode
DFSZKFailoverController
NameNode
Jps
QuorumPeerMain
[hadoop@node2 opt]$
[hadoop@node3 opt]$ jps
JournalNode
QuorumPeerMain
DataNode
Jps
[hadoop@node3 opt]$
[hadoop@node4 sbin]$ jps
Jps
DataNode
JournalNode
[hadoop@node4 sbin]$
13,通过浏览器访问
哪个节点为 Standby,哪个为active是通过CPU竞争机制。
测试创建目录和上传文件:
[hadoop@node1 bin]$ ./hdfs dfs -mkdir -p /usr/file
[hadoop@node1 bin]$ ./hdfs dfs -put /home/hadoop/software/jdk-7u75-linux-x64.rpm /usr/file/
到此 Hadoop2.x HA 就搭建完成。
hadoop 2.x 完全分布式搭建的更多相关文章
- Hadoop简介与伪分布式搭建—DAY01
一. Hadoop的一些相关概念及思想 1.hadoop的核心组成: (1)hdfs分布式文件系统 (2)mapreduce 分布式批处理运算框架 (3)yarn 分布式资源调度系统 2.hadoo ...
- hadoop集群完全分布式搭建
Hadoop环境搭建:完全分布式 集群规划: ip hostname 192.168.204.154 master namenode resour ...
- hadoop集群为分布式搭建
1.准备Linux环境设置虚拟机网络 1.0点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改 ...
- 大数据系列(3)——Hadoop集群完全分布式坏境搭建
前言 上一篇我们讲解了Hadoop单节点的安装,并且已经通过VMware安装了一台CentOS 6.8的Linux系统,咱们本篇的目标就是要配置一个真正的完全分布式的Hadoop集群,闲言少叙,进入本 ...
- Hadoop学习笔记(3)——分布式环境搭建
Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...
- hadoop分布式搭建
1.新建三台机器,分别为: hadoop分布式搭建至少需要三台机器: master extension1 extension2 本文利用在VMware Workstation下安装Linux cent ...
- hadoop完全分布式搭建HA(高可用)
2018年03月25日 16:25:26 D调的Stanley 阅读数:2725 标签: hadoop HAssh免密登录hdfs HA配置hadoop完全分布式搭建zookeeper 配置 更多 个 ...
- Hadoop生态圈-hbase介绍-完全分布式搭建
Hadoop生态圈-hbase介绍-完全分布式搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- 超详细解说Hadoop伪分布式搭建--实战验证【转】
超详细解说Hadoop伪分布式搭建 原文http://www.tuicool.com/articles/NBvMv2原原文 http://wojiaobaoshanyinong.iteye.com/b ...
随机推荐
- insertBefore的兼容性问题
父级.insertBefore(新的元素,被插入的元素)方法 在指定的元素前面插入一个新元素 在ie下如果第二个参数的节点不存在,会报错 在其他浏览器下如果第二个参数不存在,则会以appendChil ...
- PAT 1029. 旧键盘(20)
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在2行中分别给出应该输入的文字.以及实际 ...
- P1835 素数密度_NOI导刊2011提高(04)
题目描述 给定区间[L,R](L≤R≤2147483647,R-L≤1000000),请计算区间中素数的个数. 输入输出格式 输入格式: 两个数L和R. 输出格式: 一行,区间中素数的个数. 输入输出 ...
- 搜索引擎关键词劫持之asp篇
摘要:关键词劫持(黑帽seo)其实原理很简单:搜索引擎关键词劫持的过程实际上就是,修改肉鸡站点(webshell站点)A的首页(希望被搜索引擎收录的页面,一般情况下是首页),使之做出判断... 黑帽S ...
- BZOJ 1066 【SCOI2007】 蜥蜴
Description 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为$1$,蜥蜴的跳跃距离是d,即蜥蜴可以跳 ...
- LINQ 查询表达式(C# 编程指南)
语言集成查询 (LINQ) 是一组技术的名称,这些技术建立在将查询功能直接集成到 C# 语言(以及 Visual Basic 和可能的任何其他 .NET 语言)的基础上. 借助于 LINQ,查询现在 ...
- React Native中设计主题机制
昨天和同事讨论组件隔离性的时候讨论到关于默认样式的问题:很多情况下我们希望能够把组件设计为通用的,然后在具体项目中给他们指定一些通用的样式,譬如:背景颜色.默认字体等等.这听起来在CSS下运作起来就很 ...
- 给大一的学弟学妹们培训java web的后台开发讨论班计划
蓝旭工作室5月大一讨论班课程计划 课时 讨论班性质 讨论班名称 主要内容 主讲人 第一讲 先导课 后台开发工具的使用与MySQL数据库基础 后台开发工具的基本使用方法与工程的创建,MySQL数 ...
- leetcode 315. Count of Smaller Numbers After Self 两种思路(欢迎探讨更优解法)
说来惭愧,已经四个月没有切 leetcode 上的题目了. 虽然工作中很少(几乎)没有用到什么高级算法,数据结构,但是我一直坚信 "任何语言都会过时,只有数据结构和算法才能永恒". ...
- 如何在 apache 中开启 gzip 压缩服务
服务器设置 gzip 压缩是 web 开发里很普遍的做法.假设你要请求一个 100k 的文件,网络传输速度为 50k/s,需要 2s 才能得到数据,但是如果在服务器设置了 gzip 压缩,将服务端的文 ...