`

Hadoop2.x安装 HA(Quorum Journal Manager)

 
阅读更多

一、Hadoop集群角色

IP
hostname 
Name
Node
Journal Node
Data
Node
Resource Manager
Node
Manager
ZooKeeper
172.16.219.122
LAB122 JN1 ZK1 NN1
Active 
NN
172.16.219.123
LAB123 JN2 ZK2 NN2
StandbyNN
172.16.219.124
LAB124 JN3 ZK3
 
注:生产环境中DataNode和共享NodeManage一台机器,HA的NN1和NN2两台机器,JN[1-3]各占一台机器(或者其它两台和NN共用),ZK[1-3]各占一台机器。
    ZooKeeper的安装配置参见《02.ZooKeeper安装配置》之安装配置(集群) 部分
//TODO 猜想:NN和JN共用一台机器可能会性能稍高点,因为本地Socket。暂无空试验。
 

二、环境配置

1、防火墙关闭
2、SeLinux关闭
3、添加用户和组
4、用户文件数
5、host配置
6、ssh无密码登录
7、jdk安装

三、Hadoop配置

Hadoop的下载与解压

到hadoop.apache.org上下载Hadoop的安装文件,笔者使用的是 “hadoop-1.0.3.tar.gz”。
在发布式安装模式下,所有服务器Hadoop的安装目录需要一样。笔者安装的位置为/opt/hadoop,使用解压命令如下:
tar  -zxvf  hadoop-2.2.0.tar.gz  -C /opt/
ln -s  /opt/hadoop-2.2.0 /opt/hadoop
chown -R hadoop:hadoop /opt/hadoop
su hadoop

配置Hadoop

修改hadoop目录下 etc/hadoop/hadoop-env.sh的环境变量:
export JAVA_HOME=/opt/java/jdk
注:/opt/java/jdk为JAVA_HOME
此文件可根据实际情况进行JVM内存配置参数的调整
 

core-site.xml

修改hadoop目录下etc/hadoop/core-site.xml的配置文件,在<configuration>标签中添加如下内容:
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/${user.name}/tmp</value>
</property>
<property> 
    <name>fs.trash.interval</name> 
    <value>1440</value> 
</property>
 
说明:
fs.defaultDFS:这里mycluster即为自定义的NameServiceID
hadoop.tmp.dir:设置Hadoop临时目录,(默认/tmp,机器重启会丢失数据!)
fs.trash.interval:开启Hadoop回收站
 

hdfs-site.xml

修改hadoop目录下conf/hdfs-site.xml的配置文件,在<configuration>标签中添加如下内容:
<!-- enable ha -->
<property>
  <name>dfs.ha.automatic-failover.enabled</name>
  <value>true</value>
</property>
<!-- name for logic ns, and nn host key -->
<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
  <description>提供服务的NS逻辑名称,与core-site.xml里的对应</description>   
</property>
<property>
    <name>dfs.ha.namenodes.mycluster</name>
    <value>nn1,nn2</value>
    <description>列出该逻辑名称下的NameNode逻辑名称</description>
</property>
<!-- rpc & http -->
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>NN1:8020</value>
  <description>指定NameNode的RPC位置</description>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>NN1:50070</value>
  <description>指定NameNode的Web Server位置</description>  
</property> 
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>NN2:8020</value>
  <description>指定NameNode的RPC位置</description>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>NN2:50070</value>
  <description>指定NameNode的Web Server位置</description>  
</property>
<!-- journal -->
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://JN1:8485;JN2:8485;JN3:8485/mycluster</value>
  <description>指定用于HA存放edits的共享存储</description>
</property>
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/home/${user.name}/jn_data</value>
</property>
<!-- fencing -->
<property>
    <name>dfs.ha.fencing.methods</name>
    <value>sshfence</value>
    <description>指定HA做隔离的方法,缺省是ssh,可设为shell</description>
</property>
<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/home/hadoop/.ssh/id_dsa</value>
  <description>id_dsa或id_rsa,具体与SSH无密码登录的密钥类型有关</description>
</property>
<!-- zookeeper -->
<property>
  <name>ha.zookeeper.quorum</name>
  <value>ZK1:2181,ZK2:2181,ZK3:2181</value>
  <description>指定用于HA的ZooKeeper集群机器列表</description>
</property>
<property>
    <name>ha.zookeeper.session-timeout.ms</name>
    <value>5000</value>
    <description>指定ZooKeeper超时间隔,单位毫秒</description>
</property>
<!-- failover -->
<property>
    <name>dfs.client.failover.proxy.provider.mycluster</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    <description>指定客户端用于HA切换的代理类,不同的NS可以用不同的代理类 </description> 
</property>
 
<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>/home/${user.name}/dfs_name</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>/home/${user.name}/dfs_data</value>
</property>
<property>
        <name>dfs.support.append</name>
        <value>true</value>
</property>
<property> 
        <name>dfs.datanode.max.xcievers</name> 
        <value>4096</value> 
</property>
 
说明:
dfs.replication:文件复本数
dfs.namenode.name.dir:设置NameNode存储元数据(fsimage)的本地文件系统位置
dfs.datanode.data.dir:设置DataNode存储数据的本地文件系统位置
dfs.support.append:设置HDFS是否支持在文件末尾追加数据
dfs.datanode.max.xcievers:设置datanode可以创建的最大xcievers数

yarn-site.xml

修改hadoop目录下etc/hadoop/yarn-site.xml的配置文件,在<configuration>标签中添加如下内容:
  
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>NN1</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>  
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property> 
 
注:属性名为mapred.job.tracker来配置job tracker交互端口,

mapred-site.xml

修改hadoop目录下etc/hadoop/mapred-site.xml的配置文件,在<configuration>标签中添加如下内容:
  
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
 
 

slave

配置子节点:修改hadoop目录etc/hadoop/slave文件,每行一个节点,伪分布式修改内容为:
master 

执行

1、启动journalnode

在JN1,JN2,JN3上分别启动journalnode:
    sbin/hadoop-daemon.sh start journalnode

2、在使用一个分布式文件系统前需要对其进行格式化

ActiveNN:
    bin/hdfs namenode –format
    sbin/hadoop-daemon.sh start namenode
StandbyNN:
    hdfs namenode -bootstrapStandby
 

3、启动ZooKeeper

    参考ZooKeeper的安装配置

初始化ZooKeeper

    bin/hdfs zkfc -formatZK
 

启动Hadoop守护进程

./sbin/start-all.sh
Hadoop守护进程的日志写入到${HADOOP_LOG_DIR}目录(默认为logs下)。
 
完成全部操作后,停止Hadoop守护进程
$ sbin/stop-all.sh
 

验证集群

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.0.jar randomwriter out
 
Hadoop自带的WEB管理界面
浏览NameNode和JobTracker的WEB管理界面,它们的地址默认为:
   NameNode - http://master :50070/dfshealth.jsp
   Yarn - http://master:8088
 eclipse:
ant jar -Dversion=2.4.0 -Declipse.home=D:\WorkTools\MyEclipse10\Common -Dhadoop.home=D:\SDK\hadoop-2.4.0
ant jar -Dversion=2.4.0
 
参考:
http://www.sqlparty.com/hdfs%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA-namenode-ha%E6%90%AD%E5%BB%BA%E5%AE%9E%E5%BD%95/
http://www.sqlparty.com/hdfs%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA-namenode-ha%E5%8E%9F%E7%90%86%E4%B8%8E%E5%9F%BA%E6%9C%AC%E9%85%8D%E7%BD%AE/
//TODO 从已使用的集群安装HA(Ambari)
 
 本人原创,转载保留链接:http://taoistwar.iteye.com/blog/2092015
分享到:
评论

相关推荐

    hadoop2.x 安装文档

    ### Hadoop 2.x 安装与配置详解 #### 一、准备工作 在开始Hadoop 2.x集群的搭建之前,需要确保以下条件已经满足: 1. **操作系统环境**: 所有的服务器节点均应安装Linux操作系统。 2. **Java Development Kit ...

    hadoop用Quorum Journal Manager(QJM)实现高可用

    在Hadoop 2.x版本之后,引入了Quorum Journal Manager (QJM) 来增强NameNode的高可用性,使得在NameNode故障时能够无缝切换,保持集群的正常运行。 Quorum Journal Manager是Hadoop HDFS(Hadoop Distributed File ...

    hadoop-2.7.1.tar.gz

    - HA(High Availability):在2.7.1版本中,HDFS支持NameNode的高可用性,通过使用Secondary NameNode和Quorum Journal Manager实现,确保了服务的连续性。 - HDFS Federation:允许多个独立的命名空间并行运行在...

    hadoop搭建.docx

    在Hadoop 2.0中,有两种实现HDFS HA的方法:NFS和Quorum Journal Manager(QJM)。QJM更常用,因为它无需额外的硬件支持。在QJM方案中,NameNode通过JournalNode集群同步元数据,多数JournalNode确认即视为写入成功。...

    Hadoop HA搭建笔记和配置文件

    4. **设置共享存储**:NameNode的元数据需要存储在一个共享的存储系统中,如NFS或Quorum Journal Manager(QJM)。在`hdfs-site.xml`中配置`dfs.journalnode.edits.dir`指向共享存储路径。 5. **配置Zookeeper**:...

    hadoop版本差异详解.doc

    备份NameNode通过共享存储系统与主NameNode保持元数据同步,Hadoop提供了NFS、Quorum Journal Manager (QJM)和BookKeeper等多种选择。 c) **HDFS Federation**:通过Federation,Hadoop的HDFS集群可以拥有多个...

    hadoop HA高可用性完全分布式集群安装

    为了解决这一问题,Hadoop引入了HA机制,通过设置两个NameNode实例(一个主动、一个被动),并利用共享存储(如Quorum Journal Manager,QJM)来同步状态信息,实现了NameNode的故障自动转移功能。 #### 集群环境...

    Hadoop2.2.0集群安装

    可以选择的共享存储方案包括NFS、QJM(Quorum Journal Manager)或BookKeeper。其中,QJM是一种较为常用的选择,因为它提供了更强大的容错能力和一致性保证。 #### 三、基于QJM的HA解决方案 在基于QJM的HA解决方案...

    Hadoop第四版英文版+第三版中文版

    此外,还详细介绍了HDFS(Hadoop Distributed File System)的高可用性特性,如HA Namenode和Quorum Journal Manager,这些都是确保Hadoop集群稳定运行的关键组件。 第四版还涉及了MapReduce 2.0,它是Hadoop处理大...

    hadoop2.7.1安装手册.docx

    7. **配置 High Availability (HA) 或 Quorum Journal Manager (QJM)** - HA 提供 NameNode 高可用性,QJM 用于数据同步 8. **验证 Hadoop 安装** - 启动 Hadoop 服务并运行测试任务 9. **安装其他组件** - ...

    hadoop+HA+zookeeper+hbase配置文件

    5. `dfs.namenode.shared.edits.dir`: 指定共享编辑日志的目录,通常是Quorum Journal Manager(QJM)。 6. `dfs.client.failover.proxy.provider.mycluster`: 配置客户端使用的Failover Proxy Provider类。 接下来...

    Hadoop-2.8.0分布式安装手册

     本文的目的是为当前最新版本的Hadoop 2.8.0提供最为详细的安装说明,以帮助减少安装过程中遇到的困难,并对一些错误原因进行说明,hdfs配置使用基于QJM(Quorum Journal Manager)的HA。本文的安装只涉及了hadoop-...

    hadoop_HA版本的配置

    在本文中,我们将详细讨论如何配置Hadoop HA版本,特别是使用Quorum Journal Manager (QJM) 实现HDFS的HA。 首先,我们需要理解Hadoop HA的基本架构。Hadoop HA主要涉及两个关键组件:NameNode和ResourceManager。...

    hadoop2.7安装演示

    - 使用Quorum Journal Manager (QJM)实现NameNode的高可用性。 - 高可用性集群需要硬件对等的NameNode和JournalNode机器。JournalNode应为奇数数量,如3、5或7台,以保证Quorum的形成。 - 配置`hdfs-site.xml`以...

    Hadoop HA(QJM)高可集群性配置

    通过使用Quorum Journal Manager(QJM),Hadoop实现了对共享存储设备的高可用访问,这允许Active NameNode和Standby NameNode对共享数据进行日志追加,而不会造成数据冲突。QJM使用一组JournalNode节点来确保日志的...

    hadoop版本差异详解.docx.doc

    不过,每个NameNode仍然是单点故障,需要额外的备份机制,如Quorum Journal Manager(QJM)或BookKeeper来确保高可用。 此外,Hadoop 2.2.0及以后的版本还引入了NameNode HA(High Availability),即主备NameNode...

    Hadoop CDH5.5.0 配置(Hdfs/Yarn HA)

    - **NameNode HA**:需要至少两台机器作为主NameNode,通过Quorum Journal Manager (QJM) 实现日志同步,确保数据的一致性。 - **Secondary NameNode**:不再承担主NameNode的备份角色,而是转变为CheckPoint Node...

    hadoop 2.2 安装包

    这通过增加JournalNode角色和共享编辑日志(QJM, Quorum Journal Manager)来实现。 2. ** Federation**:Hadoop 2.2支持NameNode Federation,将单个全局命名空间划分为多个独立的命名空间,每个都有自己的...

    Hadoop分布式(高可用)部署配置文件

    这两个NameNode共享相同的元数据,并通过一种称为"Quorum Journal Manager"(QJM)的日志同步机制保持一致。 2. **JournalNodes**:QJM是日志同步的关键组件,它由多个JournalNode组成,负责存储NameNode的编辑日志...

    Hadoop-2.0-NameNode-HA和Federation实践1

    Cloudera的Quorum Journal Manager(QJM)进一步提高了这种一致性,减少了对单一共享存储的依赖。 Federation则是为了解决随着集群规模扩大,单个NN处理元数据的能力不足的问题。在Federation中,HDFS被划分为多个...

Global site tag (gtag.js) - Google Analytics