准备

系统:CentOS 6或者RedHat 6(这里用的是64位操作)

软件:JDK 1.7、hadoop-2.3.0、native64位包(可以再csdn上下载,这里不提供了)

部署规划

192.168.1.11 C6H1 NameNode、DataNode、ResourceManager、NodeManager、JournalNode

192.168.1.12 C6H2 NameNode、DataNode、JournalNode、NodeManager

192.168.1.13 C6H3 DataNode、JourNode、NodeManager

配置过程
1、关闭相关服务、配置HOSTS文件、解压缩包

chkconfig iptables off

service iptables stop #关闭防火墙

vi /etc/selinux/config

SELINUX=disabled #注销以前的,添加这个或者直接改。

:wq

setenforce 0 #强制关闭selinux

#设置hosts,每台都设置

vi /etc/hosts

192.168.1.11 C6H1

192.168.1.12 C6H2

192.168.1.13 C6H3

tar –zxvf hadoop-2.3.0.tar.gz –C /usr/local

目录改名为hadoop2

2、安装JDK

tar –zxvf jdk-1.7.xx.tar.gz –C /usr/src

cd /usr/src

mv /usr/src/jdk-1.7.xx /usr/local/jdk

vi /etc/profile

添加环境变量,这里一次性把所有的环境变量都添加了

export JAVA_HOME=/usr/local/jdk

export ZOOKEEPER_HOME=/usr/local/zk

export HADOOP_HOME=/usr/local/hadoop2

export PATH=.:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

:wq #保存退出

source /etc/profile #立即生效

验证

java –version

java version "1.7.0_51"

Java(TM) SE Runtime Environment (build 1.7.0_51-b13)

Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

3、配置密钥登陆

ssh-keygen –t rsa #生成密钥,一路回车。每台机器上都执行一遍

scp /root/.ssh/id_rsa.pub root@C6H1:/root/C6H2_key #分别将C6H2\C6H3上的公钥传到C6H1中。

在C6H1上操作:

cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys

cat /root/C6H2_key >> /root/.ssh/authorized_keys #>>代表追加,一个>覆盖了内容

cat /root/C6H3_key >> /root/.ssh/authorized_keys

将C6H1中的文件拷贝到C6H2\C6H3机器的/root/.ssh/目录下,这样机器之间免密码可以登陆了。

4、配置core-site.xml

<configuration>

<!—设置集群的名称 -- >

<property>

<name>fs.defaultFS</name>

<value>hdfs://cluster1</value>

</property>

<! – 设置目录存储的位置,默认namenode、datanode都存储在这里目录下 -- >

<property>

<name>hadoop.tmp.dir</name>

<value>/data/dfs/hadoop</value>

</property>

<property>

</configuration>

5、配置hdfs-site.xml

<configuration>

<! – 副本数,默认3个 -- >

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

<! – 设置集群名称 -- >

<property>

<name>dfs.nameservices</name>

<value>cluster1</value>

</property>

<! – 设置集群中的NameNode节点-- >

<property>

<name>dfs.ha.namenodes.cluster1</name>

<value>C6H1,C6H2</value>

</property>

<! –- 设置集群中的C6H1的namenode的rpc访问地址和端口 -- >

<property>

<name>dfs.namenode.rpc-address.cluster1.C6H1</name>

<value>C6H1:9000</value>

</property>

<! –- 设置集群中的C6H2的namenode的rpc访问地址和端口 -- >

<property>

<name>dfs.namenode.rpc-address.cluster1.C6H2</name>

<value>C6H2:9000</value>

</property>

<! –- 设置集群中的C6H1的namenode的http访问地址和端口 -- >

<property>

<name>dfs.namenode.http-address.cluster1.C6H1</name>

<value>C6H1:50070</value>

</property>

<! –- 设置集群中的C6H2的namenode的rpc访问地址和端口 -- >

<property>

<name>dfs.namenode.http-address.cluster1.C6H2</name>

<value>C6H2:50070</value>

</property>

<! –- 设置namenode的元数据信息都保存在journal集群中 -- >

<property>

<name>dfs.namenode.shared.edits.dir</name>

<value>qjournal://C6H1:8485;C6H2:8485;C6H3:8485/cluster1</value>

</property>

<!-- 设置cluster1故障时,哪一个实现类指定故障切换 -- >

<property>

<name>dfs.client.failover.proxy.provider.cluster1</name>

<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

</property>

<! -- 设置NameNode切换的操作方式,使用ssh操作 -- >

<property>

<name>dfs.ha.fencing.methods</name>

<value>sshfence</value>

</property>

<!-- 设置密钥保存位置 -- >

<property>

<name>dfs.ha.fencing.ssh.private-key-file</name>

<value>/root/.ssh/id_rsa</value>

</property>

<! -- 指定journalNode集群对NameNode的目录进行共享时,自己存储在磁盘的路径-- >

<property>

<name>dfs.journalnode.edits.dir</name>

<value>/data/dfs/journal</value>

</property>

<! -- 设置namenode存储在磁盘的路径 -->

<property>

<name>dfs.namenode.name.dir</name>

<value>/data/dfs/name</value>

</property>

<! -- 设置datanode存储在磁盘的路径 -- >

<property>

<name>dfs.datanode.data.dir</name>

<value>/data/dfs/data</value>

</property>

<! -- 开启web端访问FS -- >

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

</configuration>

6、配置mapred-site.xml

<configuration>

<! -- 与Hadoop1不一样的这里设置yarn方式执行mapreduce -- >

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

7、配置yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->

<! -- 设置reourcemanager主机,这里只能设置一个,有单点隐患! -- >

<property>

<name>yarn.resourcemanager.hostname</name>

<value>C6H1</value>

</property>

<! -- 设置aux-services,mapreduce_shuffle -- >

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

</configuration>

8、配置yarn-env.sh

export JAVA_HOME=/usr/local/jdk #设置hadoop调用的JAVA_HOME路径

9、配置mapred-env.sh

export JAVA_HOME=/usr/local/jdk #设置hadoop调用的JAVA_HOME路径

10、配置hadoop-env.sh

export JAVA_HOME=/usr/local/jdk #设置hadoop调用的JAVA_HOME路径

11、配置slaves

vi /usr/local/hadoop2/etc/hadoop/slaves

C6H1

C6H2

C6H3

每行一个主机名

12、第一次初始化启动过程

初始化跟hadoop1不同,按照步骤来操作,如果重复格式化需要删除 /data/dfs/中的所有目录,也就是hadoop.tmp.dir设置的路径。

1、分别在三台机器上启动JournalNode

hadoop-daemon.sh start journalnode

2、在C6H1格式化NameNode

hdfs namenode –format

3、在C6H1上启动namenode

hadoop-daemon.sh start namenode

4、在C6H2上格式化另一个NameNode,需要同步C6H1上的NameNode数据。

hdfs namenode –bootstrapStandby

5、启动另一个NameNode

hadoop-daemon.sh start namenode

6、关闭NameNode,启动所有的hadoop所有服务

stop-all.sh

start-all.sh #以后启动直接使用这个命令就行,第一次初始化必须按照以上步骤操作。

启动HDFS 的HA自动切换

hdfs haadmin –failover –forceactive CH61 C6H2

Failover from C6H1 to C6H2 successful

13、测试HDFS

SHELL测试创建文件夹

hadoop fs –mkdir /data

hadoop fs –ls /

14、测试MapReduce

vi /root/word.text

hello you

hello me

上传一个文本文件

hadoop fs –put /root/word.text /

使用自带的测试包测试wordcount

格式 hadoop jar jar包路径 wordcount hdfs输入路径 输出路径(必须不存在的,会自动创建)

[root@C6H1 hadoop]# hadoop jar /usr/local/hadoop2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.3.0.jar wordcount /word.text /word_out1

14/03/16 09:36:21 INFO client.RMProxy: Connecting to ResourceManager at C6H1/192.168.1.11:8032

14/03/16 09:36:22 INFO input.FileInputFormat: Total input paths to process : 1

14/03/16 09:36:22 INFO mapreduce.JobSubmitter: number of splits:1

14/03/16 09:36:23 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1394933446304_0001

14/03/16 09:36:23 INFO impl.YarnClientImpl: Submitted application application_1394933446304_0001

14/03/16 09:36:23 INFO mapreduce.Job: The url to track the job: http://C6H1:8088/proxy/application_1394933446304_0001/

14/03/16 09:36:23 INFO mapreduce.Job: Running job: job_1394933446304_0001

14/03/16 09:36:31 INFO mapreduce.Job: Job job_1394933446304_0001 running in uber mode : false

14/03/16 09:36:31 INFO mapreduce.Job: map 0% reduce 0%

14/03/16 09:36:38 INFO mapreduce.Job: map 100% reduce 0%

14/03/16 09:36:44 INFO mapreduce.Job: map 100% reduce 100%

14/03/16 09:36:45 INFO mapreduce.Job: Job job_1394933446304_0001 completed successfully

14/03/16 09:36:45 INFO mapreduce.Job: Counters: 49

File System Counters

FILE: Number of bytes read=48

FILE: Number of bytes written=173817

FILE: Number of read operations=0

FILE: Number of large read operations=0

FILE: Number of write operations=0

HDFS: Number of bytes read=108

HDFS: Number of bytes written=26

HDFS: Number of read operations=6

HDFS: Number of large read operations=0

HDFS: Number of write operations=2

Job Counters

Launched map tasks=1

Launched reduce tasks=1

Data-local map tasks=1

Total time spent by all maps in occupied slots (ms)=4262

Total time spent by all reduces in occupied slots (ms)=3556

Total time spent by all map tasks (ms)=4262

Total time spent by all reduce tasks (ms)=3556

Total vcore-seconds taken by all map tasks=4262

Total vcore-seconds taken by all reduce tasks=3556

Total megabyte-seconds taken by all map tasks=4364288

Total megabyte-seconds taken by all reduce tasks=3641344

Map-Reduce Framework

Map input records=2

Map output records=4

Map output bytes=34

Map output materialized bytes=48

Input split bytes=90

Combine input records=4

Combine output records=4

Reduce input groups=4

Reduce shuffle bytes=48

Reduce input records=4

Reduce output records=4

Spilled Records=8

Shuffled Maps =1

Failed Shuffles=0

Merged Map outputs=1

GC time elapsed (ms)=152

CPU time spent (ms)=1330

Physical memory (bytes) snapshot=308592640

Virtual memory (bytes) snapshot=1708167168

Total committed heap usage (bytes)=136450048

Shuffle Errors

BAD_ID=0

CONNECTION=0

IO_ERROR=0

WRONG_LENGTH=0

WRONG_MAP=0

WRONG_REDUCE=0

File Input Format Counters

Bytes Read=18

File Output Format Counters

Bytes Written=26

 

集群搭建参考吴超-沉思录博客,转载请注明出处,谢谢!

Hadoop2学习记录(1) |HA完全分布式集群搭建的更多相关文章

  1. [过程记录]Centos7 下 Hadoop分布式集群搭建

    过程如下: 配置hosts vim /etc/hosts 格式: ip hostname ip hostname 设置免密登陆 首先:每台主机使用ssh命令连接其余主机 ssh 用户名@主机名 提示是 ...

  2. HBase HA的分布式集群部署(适合3、5节点)

    本博文的主要内容有: .HBase的分布模式(3.5节点)安装    .HBase的分布模式(3.5节点)的启动 .HBase HA的分布式集群的安装 .HBase HA的分布式集群的启动    .H ...

  3. HBase HA分布式集群搭建

    HBase HA分布式集群搭建部署———集群架构 搭建之前建议先学习好HBase基本构架原理:https://www.cnblogs.com/lyywj170403/p/9203012.html 集群 ...

  4. Hadoop上路-01_Hadoop2.3.0的分布式集群搭建

    一.配置虚拟机软件 下载地址:https://www.virtualbox.org/wiki/downloads 1.虚拟机软件设定 1)进入全集设定 2)常规设定 2.Linux安装配置 1)名称类 ...

  5. Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)

    声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.服务器环境 主机名 IP 用户名 密码 安装目录 master188 192.168.29.188 hadoop hadoop /home/ha ...

  6. Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建

    目录 目录 1.前言 1.1.什么是 Hadoop? 1.1.1.什么是 YARN? 1.2.什么是 Zookeeper? 1.3.什么是 Hbase? 1.4.什么是 Hive 1.5.什么是 Sp ...

  7. 分布式实时日志系统(四) 环境搭建之centos 6.4下hbase 1.0.1 分布式集群搭建

    一.hbase简介 HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java.它是Apache软件基金会的Hadoop项目的一部分,运行 ...

  8. Hadoop HA高可用集群搭建(2.7.2)

    1.集群规划: 主机名        IP                安装的软件                            执行的进程 drguo1  192.168.80.149 j ...

  9. Hadoop完全分布式集群搭建

    Hadoop的运行模式 Hadoop一般有三种运行模式,分别是: 单机模式(Standalone Mode),默认情况下,Hadoop即处于该模式,使用本地文件系统,而不是分布式文件系统.,用于开发和 ...

随机推荐

  1. python 内建函数 type() 和 isinstance() 介绍

    Python 不支持方法或函数重载, 因此你必须自己保证调用的就是你想要的函数或对象.一个名字里究竟保存的是什么?相当多,尤其是这是一个类型的名字时.确认接收到的类型对象的身份有很多时候都是很有用的. ...

  2. poj - 3225 Roadblocks(次短路)

    http://poj.org/problem?id=3255 bessie 有时会去拜访她的朋友,但是她不想走最快回家的那条路,而是想走一条比最短的路长的次短路. 城镇由R条双向路组成,有N个路口.标 ...

  3. 加密解密(7)*PKI基础知识(完整)

    PKI 基础知识 摘要 本白皮书介绍了加密和公钥基本结构(PKI)的概念和使用 Microsoft Windows 2000 Server 操作系统中的证书服务的基础知识.如果您还不熟悉加密和公钥技术 ...

  4. supersocket中quickstart文件夹下的MultipleCommandAssembly的配置文件分析

    首先确认下配置文件中的内容 第一部分configSections[需要注意的是name=superSocket] <configSections> <section name=&qu ...

  5. Linq 学习笔记

    简介: LINQ 提供一种统一的方式,让我们能在C#语言中直接查询和操作各种数据.​​ LINQ是用来描述数据访问总体方式的术语.LINQ to Object是针对实现了IEnumerable< ...

  6. 二维线性表 list实现

    class Coordinate{ private int x; private int y; } List<Coordinate> list=new ArrayList<Coord ...

  7. UVa 12100 (模拟) Printer Queue

    用一个队列模拟,还有一个数组cnt记录9个优先级的任务的数量,每次找到当前最大优先级的任务然后出队,并及时更新cnt数组. #include <iostream> #include < ...

  8. 51nod1199 Money out of Thin Air

    链剖即可.其实就是利用了链剖后子树都在一段连续的区间内所以可以做到O(logn)查询和修改. 线段树细节打错了..要专心!肉眼差错都能找出一堆出来显然是不行的!. #include<cstdio ...

  9. PHP几个几十个G大文件数据统计并且排序处理

    诸多大互联网公司的面试都会有这么个问题,有个4G的文件,如何用只有1G内存的机器去计算文件中出现次数最多的数字(假设1行是1个数组,例如QQ号 码).如果这个文件只有4B或者几十兆,那么最简单的办法就 ...

  10. VS启用IIS调试的方法及可能碰到的问题。

    经常有这种情况, 开发机本地正常, 但是一旦发布到服务上后, 就出现各种问题. 这是由于开发机和服务器环境不一样造成的, 所以开发时要尽可能的模拟真实性.  这时候, VS的这个功能就帮大忙了. 如何 ...