`
longzhun
  • 浏览: 370009 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hadoop2.6.0 + zookeeper集群环境搭建

 
阅读更多

前提:已安装好centos6.5操作系统

                                            Hadoop HA(QJM)集群配置规划

IP

Hostname

备注

192.168.100.101

h1m1

NN(active)、RM、ZKFC

192.168.100.102

h1m2

NN(standby)、RM、ZKFC

192.168.100.103

h1s1

DN、NM、JN、QPM

192.168.100.104

h1s2

DN、NM、JN、QPM

192.168.100.105

h1s3

DN、NM、JN、QPM

192.168.100.106

h1s4

DN、NM、JN、QPM

192.168.100.107

h1s5

DN、NM、JN、QPM


说明:
        NN: NameNode
        RM: ResourceManager
        ZKFC: DFSZKFailoverController
        DN: DataNode
        NM: NodeManager
        JN: JournalNode
        QPM: QuorumPeerMain


1. 系统环境设置(先配置master节点h1m1)

1.1修改主机名
# vim /etc/sysconfig/network
    1 NETWORKING=yes
    2 HOSTNAME=h1m1
    3 NTPSERVERARGS=iburst


1.2 修改IP地址
进入Linux图形界面 -> 右键点击右上方的网络连接->点击“编辑连接…” ->添加一个新网络“主机连接” ->选择IPv4 ->方法选择为手动 ->点击添加按钮 ->添加IP:192.168.100.101子网掩码:255.255.255.0网关:192.168.100.254 ->应用

 
1.3修改主机名和IP的映射关系(hosts)
# vim/etc/hosts
添加:192.168.100.100 h1m1~192.168.100.107 h1s5

1.4关闭防火墙

# service iptables status        //查看防火墙状态
# service iptables stop           //关闭防火墙
# chkconfig iptables --list       //查看防火墙开机启动状态
# chkconfig iptables off          //关闭防火墙开机启动

1.5重启系统
# reboot


2.安装jdk 
下载地址:http://pan.baidu.com/s/1i34B3JB

2.1上传
 
2.2解压jdk

# mkdir /usr/lib/jdk        //创建目录
# tar -zxvf jdk-8u40-linux-x64.tar.gz           //解压
# mv jdk1.8.0_40 /usr/lib/jdk
                 
2.3将Java添加到环境变量中
# vim /etc/profile
//在文件最后添加
export JAVA_HOME=/usr/java/jdk1.8.0_40
export PATH=.:$JAVA_HOME/bin:$PATH

# source /etc/profile           //刷新配置
# java -version


3. 配置ssh免登陆
# cd ~      //进入到我的home目录
# ssh-keygen -t rsa -P ''(四个回车)
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免登陆的机器上

# ssh-copy-id h1m1 (或# cat ~/.ssh/id_rsa.pub>> ~/.ssh/ authorized_keys) 
# cat ~/.ssh/authorized_keys       //查看rsa



注:为方便在集群中针对多节点执行命令,在此提供一个简单脚本供大家使用:

[plain] view plain copy
 
  1. #!/usr/bin/env bash  
  2.   
  3. doCommand() {  
  4.     hosts=`sed -n '/^[^#]/p' hostlist`  
  5.     for host in $hosts  
  6.     do  
  7.         echo ""  
  8.         echo HOST $host  
  9.         ssh $host "$@"  
  10.     done  
  11.     return 0  
  12. }   
  13.   
  14. if [ $# -lt 1 ]; then  
  15.     echo "$0 cmd"  
  16.     exit  
  17. fi   
  18.   
  19. doCommand "$@"  
  20. echo "return from doCommand"  


用法:将本脚本保存并修改权限(chmod 775 doCommand.sh). 在脚本目录下创建一个hostlist文件,其中保存要执行命令的host主机列表. 
使用命令:./doCommand.sh “<command>”
e.g. ./doCommand.sh “ls”

 


4.在h1m1上安装hadoop2.6.0(注:为方便操作,使用xshell远程登录到linux)
按安装java方式把hadoop解压到/usr/lib/hadoop

4.1配置hadoop
将hadoop添加到环境变量中
# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_40
export HADOOP_HOME=/usr/lib/hadoop
export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH

4.1.1 配置hadoop-env.sh
# cd /usr/lib/hadoop
# vim etc/hadoop/hadoop-env.sh(注意,此处不是系统的etc目录)
将JAVA_HOME修改为刚才配置的位置

 
4.1.2配置core-site.xml
# vim etc/hadoop/core-site.xml
添加以下内容:

[plain] view plain copy
 
  1. <configuration>  
  2.     <!-- 指定hdfs的nameservice为ns1 -->  
  3.     <property>  
  4.         <name>fs.defaultFS</name>  
  5.         <value>hdfs://mycluster</value>  
  6.     </property>  
  7.   
  8.     <!-- 指定hadoop临时目录 -->  
  9.     <property>  
  10.         <name>hadoop.tmp.dir</name>  
  11.         <value>/usr/lib/hadoop/tmp</value>  
  12.     </property>  
  13.   
  14.     <!-- 指定zookeeper地址 -->  
  15.     <property>  
  16.         <name>ha.zookeeper.quorum</name>  
  17.         <value>h1s1:2181,h1s2:2181,h1s3:2181,h1s4:2181,h1s5:2181</value>  
  18.     </property>  
  19. </configuration>  


4.1.3 配置hdfs-site.xml
HA主要配置是在本文件中,参考官网:http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html
# vim etc/hadoop/hdfs-site.xml
添加以下内容:

[plain] view plain copy
 
  1. <configuration>  
  2.     <!--指定hdfs的nameservice为mycluster,需要和core-site.xml中的保持一致 -->  
  3.     <property>  
  4.         <name>dfs.nameservices</name>  
  5.         <value>mycluster</value>  
  6.     </property>  
  7.       
  8.     <!-- mycluster下面有两个NameNode,分别是nn1,nn2 -->  
  9.     <property>  
  10.         <name>dfs.ha.namenodes.mycluster</name>  
  11.         <value>nn1,nn2</value>  
  12.     </property>  
  13.       
  14.     <!-- nn1的RPC通信地址 -->  
  15.     <property>  
  16.         <name>dfs.namenode.rpc-address.mycluster.nn1</name>  
  17.         <value>h1m1:9000</value>  
  18.     </property>  
  19.       
  20.     <!-- nn1的http通信地址 -->  
  21.     <property>  
  22.         <name>dfs.namenode.http-address.mycluster.nn1</name>  
  23.         <value>h1m1:50070</value>  
  24.     </property>  
  25.       
  26.     <!-- nn2的RPC通信地址 -->  
  27.     <property>  
  28.         <name>dfs.namenode.rpc-address.mycluster.nn2</name>  
  29.         <value>h1m2:9000</value>  
  30.     </property>  
  31.       
  32.     <!-- nn2的http通信地址 -->  
  33.     <property>  
  34.         <name>dfs.namenode.http-address.mycluster.nn2</name>  
  35.         <value>h1m2:50070</value>  
  36.     </property>  
  37.       
  38.     <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->  
  39.     <property>  
  40.         <name>dfs.namenode.shared.edits.dir</name>  
  41.         <value>qjournal://h1s1:8485;h1s2:8485;h1s3:8485;h1s4:8485;h1s5:8485/mycluster</value>  
  42.     </property>  
  43.       
  44.     <!-- 指定JournalNode在本地磁盘存放数据的位置 -->  
  45.     <property>  
  46.         <name>dfs.journalnode.edits.dir</name>  
  47.         <value>/usr/lib/hadoop/journal</value>  
  48.     </property>  
  49.       
  50.     <!-- 开启NameNode失败自动切换 -->  
  51.     <property>  
  52.         <name>dfs.ha.automatic-failover.enabled</name>  
  53.         <value>true</value>  
  54.     </property>  
  55.       
  56.     <!-- 配置失败自动切换实现方式 -->  
  57.     <property>  
  58.         <name>dfs.client.failover.proxy.provider.mycluster</name>  
  59.         <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>  
  60.     </property>  
  61.       
  62.     <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->  
  63.     <property>  
  64.         <name>dfs.ha.fencing.methods</name>  
  65.         <value>  
  66.             sshfence  
  67.             shell(/bin/true)  
  68.         </value>  
  69.     </property>  
  70.       
  71.     <!-- 使用sshfence隔离机制时需要ssh免登陆 -->  
  72.     <property>  
  73.         <name>dfs.ha.fencing.ssh.private-key-files</name>  
  74.         <value>/home/hadoop/.ssh/id_rsa</value>  
  75.     </property>  
  76.       
  77.     <!-- 配置sshfence隔离机制超时时间 -->  
  78.     <property>  
  79.         <name>dfs.ha.fencing.ssh.connect-timeout</name>  
  80.         <value>30000</value>  
  81.     </property>  
  82. </configuration>  


4.1.4配置mapred-site.xml
# cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
# vim etc/hadoop/mapred-site.xml
添加以下内容:

[plain] view plain copy
 
  1. <configuration>  
  2.     <property>  
  3.         <name>mapreduce.framework.name</name>  
  4.         <value>yarn</value>  
  5.         <final>true</final>  
  6.      </property>  
  7. </configuration>  


4.1.5配置yarn-site.xml
# vim etc/hadoop/yarn-site.xml
添加以下内容:

[plain] view plain copy
 
  1. <configuration>  
  2.     <!-- 开启RM高可靠 -->  
  3.     <property>  
  4.         <name>yarn.resourcemanager.ha.enabled</name>  
  5.         <value>true</value>  
  6.     </property>  
  7.   
  8.     <!-- 指定RM的cluster id -->  
  9.     <property>  
  10.         <name>yarn.resourcemanager.cluster-id</name>  
  11.         <value>yrc</value>  
  12.     </property>  
  13.   
  14.     <!-- 指定RM的名字 -->  
  15.     <property>  
  16.         <name>yarn.resourcemanager.ha.rm-ids</name>  
  17.         <value>rm1,rm2</value>  
  18.     </property>  
  19.   
  20.     <!-- 分别指定RM的地址 -->  
  21.     <property>  
  22.         <name>yarn.resourcemanager.hostname.rm1</name>  
  23.         <value>h1m1</value>  
  24.     </property>  
  25.   
  26.     <property>  
  27.         <name>yarn.resourcemanager.hostname.rm2</name>  
  28.         <value>h1m2</value>  
  29.     </property>  
  30.   
  31.     <!-- 指定zk集群地址 -->  
  32.     <property>  
  33.         <name>yarn.resourcemanager.zk-address</name>  
  34.         <value>h1s1:2181,h1s2:2181,h1s3:2181,h1s4:2181,h1s5:2181</value>  
  35.     </property>  
  36.   
  37.     <property>  
  38.         <name>yarn.nodemanager.aux-services</name>  
  39.         <value>mapreduce_shuffle</value>  
  40.     </property>  
  41. </configuration>  


4.2 修改slaves
slaves是指定子节点的位置,因为要在h1m1上启动HDFS、yarn,所以h1m1上的slaves文件指定的是datanode的位置和nodemanager的位置
# vim /usr/lib/hadoop/etc/hadoop/slaves
h1s1
h1s2
h1s3
h1s4
h1s5

4.3 配置免密码登陆
#配置h1m1到h1m2、h1s1、h1s2、h1s3、h1s4、h1s5的免密码登陆
#在h1m1上生产一对钥匙
ssh-keygen -t rsa -P ''
#将公钥拷贝到其他节点,包括自己
ssh-coyp-id h1m1
ssh-coyp-id h1m2
ssh-coyp-id h1s1
ssh-coyp-id h1s2
ssh-coyp-id h1s3
ssh-coyp-id h1s4
ssh-coyp-id h1s5


5. 安装zookeeper

 

5.1 下载安装zookeeper
下载地址:http://pan.baidu.com/s/1hq2BEBi
安装过程参考hadoop

5.2 配置zookeeper
添加一个zoo.cfg配置文件
# cd /usr/lib/zookeeper/conf
# mv zoo_sample.cfg zoo.cfg

修改配置文件(zoo.cfg)
dataDir=/usr/lib/zookeeper/data 
server.3=h1s1:2888:3888
server.4=h1s2:2888:3888
server.5=h1s3:2888:3888
server.6=h1s4:2888:3888
server.7=h1s5:2888:3888

在(/usr/lib/zookeeper/data)创建一个myid文件,里面内容是server.N中的N(server.3里面内容为3)
# echo "3" > myid

将配置好的zk拷贝到其他节点
# scp -r /usr/lib/zookeeper/ h1s2:/usr/lib/
# scp -r /usr/lib/zookeeper/ h1s3:/usr/lib/
# scp -r /usr/lib/zookeeper/ h1s4:/usr/lib/
# scp -r /usr/lib/zookeeper/ h1s5:/usr/lib/

注意:在其他节点上一定要修改myid的内容
在h1s2应该讲myid的内容改为4 (# echo "4" > myid)
在h1s3应该讲myid的内容改为5 (# echo "5" > myid)
在h1s4应该讲myid的内容改为6 (# echo "6" > myid)
在h1s5应该讲myid的内容改为7 (# echo "7" > myid)


6. 启动集群

 

6.1 启动zookeeper集群(分别在h1s1、h1s2、h1s3、h1s4、h1s5上启动zk)
# cd /usr/lib/zookeeper/bin/
# ./zkServer.sh start
# ./zkServer.sh status #查看状态:一个leader,四个follower

6.2 启动journalnode(分别在h1s1、h1s2、h1s3、h1s4、h1s5上执行)
# cd /usr/lib/hadoop
# sbin/hadoop-daemon.sh start journalnode #运行jps命令检验,h1s1、h1s2、h1s3、h1s4、h1s5上多了JournalNode进程

6.3 格式化HDFS
# hdfs namenode -format #在h1m1上执行命令:
# scp -r tmp/ h1m2:/usr/lib/hadoop/ #格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/usr/lib/hadoop/tmp,然后将/usr/lib/hadoop/tmp拷贝到h1m2的/usr/lib/hadoop/下。

6.4 格式化ZK(在h1m1上执行即可) 
# hdfs zkfc -formatZK 

6.5 启动HDFS(在h1m1上执行)
# sbin/start-dfs.sh


6.6 启动YARN
在此我们是在h1m1上配置RM,所以在h1m1执行
# sbin/start-yarn.sh

 
到此,hadoop-2.6.0配置完毕,可以统计浏览器访问:
http://h1m1:50070
NameNode 'h1m1:9000' (active)
http://h1m2:50070
NameNode 'h1m2:9000' (standby)


验证HDFS HA
首先向hdfs上传一个文件
hadoop fs -put /etc/profile /profile
hadoop fs -ls /


 然后再kill掉active的NameNode
kill -9 <pid of NN>
通过浏览器访问:http://h1m2:50070
NameNode 'h1m2:9000' (active)
这个时候h1m2上的NameNode变成了active


 在执行命令:
hadoop fs -ls /
-rw-r--r-- 3 root supergroup 1926 2015-05-14 15:36 /profile
刚才上传的文件依然存在!!!

 


 手动启动那个挂掉的NameNode
sbin/hadoop-daemon.sh start namenode
通过浏览器访问:http://h1m1:50070
NameNode 'h1m1:9000' (standby)

验证YARN:
运行一下hadoop提供的demo中的WordCount程序:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /profile /out

OK,大功告成!!!

分享到:
评论

相关推荐

    hadoop+HA+zookeeper+hbase配置文件

    Hadoop 2.6.0版本引入了高可用性(HA)特性,增强了系统的稳定性,而Zookeeper则作为协调服务,确保了分布式环境中的有序和一致性。HBase是基于Hadoop的数据存储系统,适用于实时读写的大数据操作。本文将详细阐述...

    hadoop-2.6.0-cdh5.7.0版本.zip

    6. **Hadoop安装与配置**: 安装Hadoop-2.6.0-cdh5.7.0版本需要配置集群环境,包括设置环境变量、配置集群节点间通信、初始化HDFS和YARN等。同时,还需要考虑安全性、监控和性能优化等方面。 7. **Hadoop应用开发**:...

    hadoop-2.6.0-cdh5.7.0.tar.gz

    总的来说,这个“hadoop-2.6.0-cdh5.7.0.tar.gz”压缩包为用户提供了全面的Hadoop环境,可以支持大数据的存储、处理和分析。同时,结合Kafka这样的实时数据处理工具,可以构建一个强大的大数据处理平台,满足各种...

    hadoop-2.6.0-cdh5.14.0-with-windows.rar

    在使用这个压缩包时,开发者首先需要解压文件,然后根据提供的文档或指南配置环境,可能包括安装Java运行环境、配置Hadoop环境变量、设置集群配置等。之后,可以通过编译源代码生成可执行的JAR文件,并在Hadoop集群...

    hadoop-2.6.0-cdh5.10.1.tar.gz

    这个压缩包包含了一整套大数据处理所需的环境和工具,适合用于搭建一个全面的Hadoop测试或开发环境。用户可以通过解压安装这些组件,进行大数据的存储、处理、分析和管理实践。同时,对这些技术的学习和掌握,对于...

    hadoop-2.6.0.zip

    除了这些核心组件,Hadoop 2.6.0还包含了其他辅助工具和库,如Hadoop ZooKeeper(分布式协调服务)、Hadoop Pig(数据分析平台)、Hadoop Sqoop(数据导入导出工具)等。这些工具共同构建了一个完整的生态系统,使得...

    hadoop-2.6.0-cdh5.5.4.tar.gz

    解压“hadoop-2.6.0-cdh5.5.4.tar.gz”后,用户可以按照官方文档或社区指南进行安装和配置,搭建起一个运行在本地或云端的大数据处理环境。在实际应用中,根据业务需求,可以选择合适的组件组合,构建高效、稳定的...

    Hadoop分布式集群搭建

    编辑`/usr/hadoop/hadoop-2.6.0/etc/hadoop/core-site.xml`文件,设置HDFS的默认名称节点地址、临时目录及Zookeeper集群地址: ```xml &lt;name&gt;fs.defaultFS &lt;value&gt;hdfs://paohui &lt;name&gt;hadoop.tmp.dir ...

    Hadoop-2.0.0-cdh4.3.0安装手册.

    1. **主机**:确保你有至少两台或更多的服务器来搭建Hadoop集群,这些主机应具有足够的硬件资源,如内存、CPU和磁盘空间。 2. **用户**:通常,我们使用非root用户来运行Hadoop服务,以避免权限问题。创建一个新...

    hadoop-cdh-2.6.0

    Hadoop CDH 2.6.0 是一个重要的大数据处理框架,由Cloudera公司维护,它是Apache Hadoop的一个企业级发行版。CDH(Cloudera Distribution Including Apache Hadoop)集成了多个开源项目,提供了大数据处理、存储和...

    spark 分布式集群搭建

    ./bin/spark-submit --master spark://client:7077 --class org.apache.spark.examples.SparkPi lib/spark-examples-1.6.1-hadoop2.6.0.jar ``` 该命令指定了 Job 的 Master 地址、类名及 JAR 包的位置。 #### ...

    hadoop搭建.docx

    在Master节点上编辑`core-site.xml`,设置`fs.defaultFS`为HDFS的nameservice(如`hdfs://ns`),`hadoop.tmp.dir`为HDFS临时目录,`io.file.buffer.size`为缓冲大小,`ha.zookeeper.quorum`为Zookeeper集群地址。...

    Hadoop集群部署相关资源

    VMware-workstation-full-15.5.1-15018445.exe ...sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz flink-1.10.1-bin-scala_2.12.tgz kafka_2.11-2.3.1.tgz zookeeper-3.4.5.tar.gz apache-hive-2.3.9-bin.tar.gz

    HBase单机环境搭建(超细)

    在搭建 HBase 伪集群之前,需要先安装配置好 Hadoop 的伪集群环境。虽然本文档没有详细介绍 Hadoop 的安装过程,但一般步骤包括下载 Hadoop 安装包、解压、配置环境变量、修改 Hadoop 的配置文件等。 ##### 3.2 ...

    hadoop安装文档

    1. ZooKeeper: 用于集群协调,这里选择的是zookeeper-3.4.5-cdh5.5.0.tar.gz。 2. HBase: 面向大数据的分布式数据库,选用hbase-1.0.0-cdh5.5.0.tar.gz。 3. Hadoop: 分布式计算框架,本文选用的是hadoop-2.6.0-cdh...

    hadoop-cdh4.6配置文件

    总之,配置Hadoop、HBase、Hive、ZooKeeper和Spark的CDH4.6.0集群是一项复杂的任务,需要综合考虑多个因素,包括硬件资源、网络环境、安全性以及业务需求。每个组件的配置文件都是关键,正确理解和调整这些配置是...

    Zookeeper安装文档

    在大数据环境中,Zookeeper 的正确配置和稳定运行至关重要,因为它为 HBase、Hadoop、Kafka 等组件提供了可靠的分布式协调服务。安装完成后,还需要进行监控和维护,确保 ZooKeeper 集群的高可用性和性能。这包括...

    Hadoop伪分布式安装及配置参考步骤.docx

    完全分布运行模式通常被用于生产环境,使用N台主机组成一个Hadoop集群,Hadoop守护进程运行在每台主机之上。这里会存在Namenode运行的主机、Datanode运行的主机,以及SecondaryNameNode运行的主机。在完全分布式环境...

Global site tag (gtag.js) - Google Analytics