欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

hadoop +hbase +zookeeper 完全分布搭建 (版本一)

发布时间:2025/6/15 80 豆豆
生活随笔 收集整理的这篇文章主要介绍了 hadoop +hbase +zookeeper 完全分布搭建 (版本一) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFS HA、YARN等。最新的hadoop-2.6.0又增加了YARN HA


注意:apache提供的hadoop-2.6.0的安装包是在32位操作系统编译的,因为hadoop依赖一些C++的本地库,
所以如果在64位的操作上安装hadoop-2.6.0就需要重新在64操作系统上重新编译



一.重新编译 

原因是hadoop-2.6.0.tar.gz安装包是在32位机器上编译的,64位的机器加载本地库.so文件时出错,不影响使用。
解决:
1、重新编译源码后将新的lib/native替换到集群中原来的lib/native
2、修改hadoop-env.sh ,增加
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib:$HADOOP_PREFIX/lib/native"
需要进行编译准备工作:
0.安装JDK,使用 java -version  查看jdk版本,确定JDK版本是64位。 a. 解压jdk $ tar -xvzf jdk-7u60-linux-x64.tar.gz b. 设置环境变量  vim   /etc/profile export JAVA_HOME=/usr/local/jdk1.7 export HADOOP_HOME=/usr/local/hadoop-2.6.0  export MAVEN_HOME=/opt/apache-maven  export FINDBUG_HOME=/opt/findbugs-3.0.0  export ANT_HOME=/opt/apache-ant-1.9.4  export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin :$MAVEN_HOME/bin:$FINDBUG_HOME/bin:$ANT_HOME/bin (备注:不能换行) c.使配置文件生效 $ source /etc/profile 1.安装gcc|gc++   yum install gcc    yum install gcc-c++   验证 2.安装Apache-Maven。 tar -zxvf apache-maven-3.2.1.tar.gz 配置环境变量  vim  /etc/profile   export MAVEN_HOME=/opt/apache-maven export PATH=.:PATH:$MAVEN_HOME/bin 验证: mvn --version 3.安装Apache-ant(重要). tar -zxvf  apache-ant-1.9.4-bin.tar.gz 配置环境变量  vim   /etc/profile   export MAVEN_HOME=/opt/apache-maven  export PATH=$PATH:$MAVEN_HOME/bin 3.安装protobuf(goole序列化工具) tar -zxvf protobuf-2.5.0.tar.gz ./configuration  make  #编译 make install 验证:protoc --version
4.安装CMake2.6  or newer   安装 yum install cmake   安装 yum install openssl-devel   安装 yum install ncurses-devel 验证:cmake --version 5.安装make yum install make 验证: make --version 6.Hadoop - hadoop-common-project中的pom.xml添加依赖(hadoop-2.2.0需要修改,hadoop2.6.0版本不需要) <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-util</artifactId> <scope>test</scope> </dependency> 7.在编译之前防止 java.lang.OutOfMemoryError: Java heap space   堆栈问题,在centos系统中执行命令: $ export MAVEN_OPTS="-Xms256m -Xmx512m"
8.解压压缩包 tar -zxvf hadoop-2.6.0-src.tar.gz  a.执行命令  cd  ${hostname_Local}/hadoop-2.6.0/  目录下    b.编译 mvn package -DskipTests -Pdist,native c.编译好的项目放在  hadoop-2.6.0-src/hadoop-dist/target目录下。 /root/Downloads/hadoop-2.6.0-src/hadoop-dist/target 即  hadoop-2.6.0就是编译好的包。
===================================================================== 编译日志: [INFO] --- maven-jar-plugin:2.3.1:jar (default-jar) @ hadoop-dist --- [WARNING] JAR will be empty - no content was marked for inclusion!  [INFO] Building jar: /root/Downloads/hadoop-2.6.0-src/hadoop-dist/target/hadoop-dist-2.6.0.jar [INFO]  [INFO] --- maven-source-plugin:2.1.2:jar-no-fork (hadoop-java-sources) @ hadoop-dist ---  [INFO] No sources in project. Archive not created. [INFO]  [INFO] --- maven-source-plugin:2.1.2:test-jar-no-fork (hadoop-java-sources) @ hadoop-dist ---  [INFO] No sources in project. Archive not created. [INFO]  [INFO] --- maven-site-plugin:3.3:attach-descriptor (attach-descriptor) @ hadoop-dist --- [INFO]  [INFO] --- maven-antrun-plugin:1.7:run (tar) @ hadoop-dist --- [INFO] Executing tasks main: [INFO] Executed tasks [INFO]  [INFO] --- maven-javadoc-plugin:2.8.1:jar (module-javadocs) @ hadoop-dist ---  [INFO] Building jar: /root/Downloads/hadoop-2.6.0-src/hadoop-dist/target/hadoop-dist-2.6.0-javadoc.jar  [INFO] ------------------------------------------------------------------------  [INFO] Reactor Summary: [INFO] [INFO] Apache Hadoop Main ................................. SUCCESS [ 13.582 s]  [INFO] Apache Hadoop Project POM .......................... SUCCESS [ 9.846 s]  [INFO] Apache Hadoop Annotations .......................... SUCCESS [ 24.408 s] [INFO] Apache Hadoop Assemblies ........................... SUCCESS [ 1.967 s]  [INFO] Apache Hadoop Project Dist POM ..................... SUCCESS [ 6.443 s]  [INFO] Apache Hadoop Maven Plugins ........................ SUCCESS [ 20.692 s]  [INFO] Apache Hadoop MiniKDC .............................. SUCCESS [ 14.250 s]  [INFO] Apache Hadoop Auth ................................. SUCCESS [ 23.716 s]  [INFO] Apache Hadoop Auth Examples ........................ SUCCESS [ 13.714 s]  [INFO] Apache Hadoop Common ............................... SUCCESS [08:46 min]  [INFO] Apache Hadoop NFS .................................. SUCCESS [ 47.127 s]  [INFO] Apache Hadoop KMS .................................. SUCCESS [ 48.790 s]  [INFO] Apache Hadoop Common Project ....................... SUCCESS [ 0.316 s]  [INFO] Apache Hadoop HDFS ................................. SUCCESS [14:58 min]  [INFO] Apache Hadoop HttpFS ............................... SUCCESS [11:10 min]  [INFO] Apache Hadoop HDFS BookKeeper Journal .............. SUCCESS [01:43 min]  [INFO] Apache Hadoop HDFS-NFS ............................. SUCCESS [ 27.438 s]  [INFO] Apache Hadoop HDFS Project ......................... SUCCESS [ 0.146 s]  [INFO] hadoop-yarn ........................................ SUCCESS [ 0.165 s]  [INFO] hadoop-yarn-api .................................... SUCCESS [07:03 min]  [INFO] hadoop-yarn-common ................................. SUCCESS [03:31 min]  [INFO] hadoop-yarn-server ................................. SUCCESS [ 0.827 s]  [INFO] hadoop-yarn-server-common .......................... SUCCESS [01:11 min]  [INFO] hadoop-yarn-server-nodemanager ..................... SUCCESS [02:25 min]  [INFO] hadoop-yarn-server-web-proxy ....................... SUCCESS [ 17.129 s]  [INFO] hadoop-yarn-server-applicationhistoryservice ....... SUCCESS [ 39.350 s]  [INFO] hadoop-yarn-server-resourcemanager ................. SUCCESS [01:44 min]  [INFO] hadoop-yarn-server-tests ........................... SUCCESS [ 32.941 s]  [INFO] hadoop-yarn-client ................................. SUCCESS [ 44.664 s]  [INFO] hadoop-yarn-applications ........................... SUCCESS [ 0.197 s]  [INFO] hadoop-yarn-applications-distributedshell .......... SUCCESS [ 15.165 s]  [INFO] hadoop-yarn-applications-unmanaged-am-launcher ..... SUCCESS [ 9.604 s]  [INFO] hadoop-yarn-site ................................... SUCCESS [ 0.149 s]  [INFO] hadoop-yarn-registry ............................... SUCCESS [ 31.971 s]  [INFO] hadoop-yarn-project ................................ SUCCESS [ 22.195 s]  [INFO] hadoop-mapreduce-client ............................ SUCCESS [ 0.673 s]  [INFO] hadoop-mapreduce-client-core ....................... SUCCESS [02:08 min]  [INFO] hadoop-mapreduce-client-common ..................... SUCCESS [01:38 min]  [INFO] hadoop-mapreduce-client-shuffle .................... SUCCESS [ 24.796 s]  [INFO] hadoop-mapreduce-client-app ........................ SUCCESS [01:02 min]  [INFO] hadoop-mapreduce-client-hs ......................... SUCCESS [ 43.043 s]  [INFO] hadoop-mapreduce-client-jobclient .................. SUCCESS [01:09 min]  [INFO] hadoop-mapreduce-client-hs-plugins ................. SUCCESS [ 9.662 s]  [INFO] Apache Hadoop MapReduce Examples ................... SUCCESS [ 40.439 s]  [INFO] hadoop-mapreduce ................................... SUCCESS [ 13.894 s]  [INFO] Apache Hadoop MapReduce Streaming .................. SUCCESS [ 32.797 s]  [INFO] Apache Hadoop Distributed Copy ..................... SUCCESS [01:00 min]  [INFO] Apache Hadoop Archives ............................. SUCCESS [ 11.333 s]  [INFO] Apache Hadoop Rumen ................................ SUCCESS [ 35.122 s]  [INFO] Apache Hadoop Gridmix .............................. SUCCESS [ 22.939 s]  [INFO] Apache Hadoop Data Join ............................ SUCCESS [ 17.568 s]  [INFO] Apache Hadoop Ant Tasks ............................ SUCCESS [ 12.339 s]  [INFO] Apache Hadoop Extras ............................... SUCCESS [ 18.325 s]  [INFO] Apache Hadoop Pipes ................................ SUCCESS [ 27.889 s]  [INFO] Apache Hadoop OpenStack support .................... SUCCESS [ 30.148 s]  [INFO] Apache Hadoop Amazon Web Services support .......... SUCCESS [01:28 min]  [INFO] Apache Hadoop Client ............................... SUCCESS [ 25.086 s]  [INFO] Apache Hadoop Mini-Cluster ......................... SUCCESS [ 0.657 s]  [INFO] Apache Hadoop Scheduler Load Simulator ............. SUCCESS [ 25.302 s]  [INFO] Apache Hadoop Tools Dist ........................... SUCCESS [ 23.268 s]  [INFO] Apache Hadoop Tools ................................ SUCCESS [ 0.156 s]  [INFO] Apache Hadoop Distribution ......................... SUCCESS [01:06 min]  [INFO] ------------------------------------------------------------------------  [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------  [INFO] Total time: 01:17 h [INFO] Finished at: 2014-12-29T20:45:54-08:00  [INFO] Final Memory: 94M/193M [INFO] ------------------------------------------------------------------------  [root@Master hadoop-2.6.0-src]#

二.hadoop + hbase +zookeeper 环境搭建

1.修改Linux主机名
2.修改IP
3.修改主机名和IP的映射关系
######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机、阿里云主机等)
/etc/hosts里面要配置的是内网IP地址和主机名的映射关系
4.关闭防火墙
5.ssh免登陆
6.安装JDK,配置环境变量等


集群规划:
主机名        IP        安装的软件        运行的进程
  • Master        192.168.1.201        jdk、hadoop        NameNode、DFSZKFailoverController(zkfc)
  • Slave1        192.168.1.202        jdk、hadoop        NameNode、DFSZKFailoverController(zkfc)
  • Slave2        192.168.1.203        jdk、hadoop        ResourceManager
  • Slave3        192.168.1.204        jdk、hadoop        ResourceManager
  • Slave4        192.168.1.205        jdk、hadoop、zookeeper        DataNode、NodeManager、JournalNode、QuorumPeerMain
  • Slave5        192.168.1.206        jdk、hadoop、zookeeper        DataNode、NodeManager、JournalNode、QuorumPeerMain
  • Slave6        192.168.1.207        jdk、hadoop、zookeeper        DataNode、NodeManager、JournalNode、QuorumPeerMain
  • 复制代码

    说明:

    1.在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步active namenode的状态,以便能够在它失败时快速进行切换。
    hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode
    这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active NameNode挂掉了,会自动切换Standby NameNode为standby状态

    2.hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,hadoop-2.4.1解决了这个问题,有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调

    安装步骤:
    1.安装配置zooekeeper集群(在Slave4上)
    1.1解压
  • [root@Master local]#tar -zxvf    zookeeper-3.4.6.tar.g-C /usr/local/
  • [root@Master local]#mv zookeeper-3.4.6/ zookeeper
  • 复制代码
    1.2修改配置
  • [root@Master local]#cd /usr/local/zookeeper/conf/
  • [root@Master local]#cp zoo_sample.cfg zoo.cfg
  • [root@Master local]#vim zoo.cfg
  • 复制代码
    修改:
  • dataDir=/itcast/zookeeper/zkData
  • 复制代码
    在最后添加:
  • server.1=Slave4:2888:3888
  • server.2=Slave5:2888:3888
  • server.3=Slave6:2888:3888
  • 复制代码
    保存退出
    然后创建一个tmp文件夹
  • [root@Master local]#mkdir /usr/local/zookeeper/zkData
  • 复制代码
    再创建一个空文件
  • [root@Master local]#touch /usr/local/zookeeper/zkData/myid
  • 复制代码
    最后向该文件写入ID
  • [root@Master local]#echo 1 > /usr/local/zookeeper/zkData/myid
  • 复制代码
    1.3将配置好的zookeeper拷贝到其他节点(首先分别在Slave5、Slave6根目录:/usr/local/)
  • [root@Master local]#scp -r /usr/local/zookeeper/ Slave5:/usr/local/
  • [root@Master local]#scp -r /usr/local/zookeeper/ Slave6:/usr/local/
  • 复制代码
    注意:修改Slave5、Slave6对应/usr/local/zookeeper/zkData/myid内容
  • Slave5:
  • [root@Master local]#echo 2 > /usr/local/zookeeper/zkData/myid
  • Slave6:
  • [root@Master local]#echo 3 > /usr/local/zookeeper/zkData/myid
  • 复制代码

    2.安装配置hadoop集群(在Master上操作)
    2.1解压

  • [root@Master local]#tar -zxvf hadoop-2.6.0.tar.gz -C /usr/local/
  • 复制代码
    2.2配置HDFS(hadoop2.0所有的配置文件都在$HADOOP_HOME/etc/hadoop目录下)
    #将hadoop添加到环境变量中
  • [root@Master local]#vim /etc/profile
  • export JAVA_HOME=/usr/local/jdk1.7
  • export HADOOP_HOME=/usr/local/hadoop-2.6.0
  • export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
  • 复制代码
    #hadoop2.0的配置文件全部在$HADOOP_HOME/etc/hadoop下
  • [root@Master local]#cd /usr/local/hadoop-2.6.0/etc/hadoop
  • 复制代码
    2.2.1修改hadoo-env.sh
  • export JAVA_HOME=/usr/local/jdk1.7
  • 复制代码
    2.2.2修改core-site.xml
  • <configuration>
  • <!-- 指定hdfs的nameservice为masters -->
  • <property>
  • <name>fs.defaultFS</name>
  • <value>hdfs://masters</value>
  • </property>
  • <!-- 指定hadoop临时目录 -->
  • <property>
  • <name>hadoop.tmp.dir</name>
  • <value>/usr/local/hadoop-2.6.0/tmp</value>
  • </property>
  • <!-- 指定zookeeper地址 -->
  • <property>
  • <name>ha.zookeeper.quorum</name>
  • <value>Slave4:2181,Slave5:2181,Slave6:2181</value>
  • </property>
  • </configuration>
  • 复制代码
    2.2.3修改hdfs-site.xml
  • <configuration>
  •         <!--指定hdfs的nameservice为masters,需要和core-site.xml中的保持一致 -->
  •         <property>
  •                 <name>dfs.nameservices</name>
  •                 <value>masters,ns1,ns2,ns3</value>
  •         </property>
  •         <!-- Master下面有两个NameNode,分别是Master,Slave1 -->
  •         <property>
  •                 <name>dfs.ha.namenodes.masters</name>
  •                 <value>Master,Slave1</value>
  •         </property>
  •         <!-- Master的RPC通信地址 -->
  •         <property>
  •                 <name>dfs.namenode.rpc-address.masters.Master</name>
  •                 <value>Master:9000</value>
  •         </property>
  •         <!-- Master的http通信地址 -->
  •         <property>
  •                 <name>dfs.namenode.http-address.masters.Master</name>
  •                 <value>Master:50070</value>
  •         </property>
  •         <!-- Slave1的RPC通信地址 -->
  •         <property>
  •                 <name>dfs.namenode.rpc-address.masters.Slave1</name>
  •                 <value>Slave1:9000</value>
  •         </property>
  •         <!-- Slave1的http通信地址 -->
  •         <property>
  •                 <name>dfs.namenode.http-address.masters.Slave1</name>
  •                 <value>Slave1:50070</value>
  •         </property>
  •         <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
  •         <property>
  •                 <name>dfs.namenode.shared.edits.dir</name>
  •                 <value>qjournal://Slave4:8485;Slave5:8485;Slave6:8485/masters</value>
  •         </property>
  •         <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
  •         <property>
  •                 <name>dfs.journalnode.edits.dir</name>
  •                 <value>/usr/local/hadoop-2.6.0/journal</value>
  •         </property>
  •         <!-- 开启NameNode失败自动切换 -->
  •         <property>
  •                 <name>dfs.ha.automatic-failover.enabled</name>
  •                 <value>true</value>
  •         </property>
  •         <!-- 配置失败自动切换实现方式 -->
  •         <property>
  •                 <name>dfs.client.failover.proxy.provider.masters</name>
  •                 <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  •         </property>
  •         <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
  •         <property>
  •                 <name>dfs.ha.fencing.methods</name>
  •                 <value>
  •                         sshfence
  •                         shell(/bin/true)
  •                 </value>
  •         </property>
  •         <!-- 使用sshfence隔离机制时需要ssh免登陆 -->
  •         <property>
  •                 <name>dfs.ha.fencing.ssh.private-key-files</name>
  •                 <value>/root/.ssh/id_rsa</value>
  •         </property>
  •         <!-- 配置sshfence隔离机制超时时间 -->
  •         <property>
  •                 <name>dfs.ha.fencing.ssh.connect-timeout</name>
  •                 <value>30000</value>
  •         </property>
  • </configuration>
  • 复制代码


    2.2.4修改mapred-site.xml
  • <configuration>
  • <!-- 指定mr框架为yarn方式 -->
  • <property>
  • <name>mapreduce.framework.name</name>
  • <value>yarn</value>
  • </property>
  • </configuration>
  • 复制代码
    2.2.5修改yarn-site.xml
  • <configuration>
  •         <!-- 开启RM高可靠 -->
  •         <property>
  •                 <name>yarn.resourcemanager.ha.enabled</name>
  •                 <value>true</value>
  •         </property>
  •         <!-- 指定RM的cluster id -->
  •         <property>
  •                 <name>yarn.resourcemanager.cluster-id</name>
  •                 <value>RM_HA_ID</value>
  •         </property>
  •         <!-- 指定RM的名字 -->
  •         <property>
  •                 <name>yarn.resourcemanager.ha.rm-ids</name>
  •                 <value>rm1,rm2</value>
  •         </property>
  •         <!-- 分别指定RM的地址 -->
  •         <property>
  •                 <name>yarn.resourcemanager.hostname.rm1</name>
  •                 <value>Slave2</value>
  •         </property>
  •         <property>
  •                 <name>yarn.resourcemanager.hostname.rm2</name>
  •                 <value>Slave3</value>
  •         </property>
  •         <property>
  •                 <name>yarn.resourcemanager.recovery.enabled</name>
  •                 <value>true</value>
  •         </property>
  •          
  •         <property>
  •                 <name>yarn.resourcemanager.store.class</name>
  •                 <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
  •         </property>
  •         <!-- 指定zk集群地址 -->
  •         <property>
  •                 <name>yarn.resourcemanager.zk-address</name>
  •                 <value>Slave4:2181,Slave5:2181,Slave6:2181</value>
  •         </property>
  •         <property>
  •                 <name>yarn.nodemanager.aux-services</name>
  •                 <value>mapreduce_shuffle</value>
  •         </property>
  • </configuration>
  • 复制代码


    2.2.6修改slaves(slaves是指定子节点的位置,因为要在Master上启动HDFS、在Slave2启动yarn,所以Master上的slaves文件指定的是datanode的位置,slave2上的slaves文件指定的是nodemanager的位置)
  • Slave4
  • Slave5
  • Slave6
  • 复制代码
    2.2.7配置免密码登陆
    #首先要配置Master到Slave1、Slave2、Slave3、Slave4、Slave5、Slave6的免密码登陆
    #在Master上生产一对钥匙
  • [root@Master local]#ssh-keygen -t rsa
  • 复制代码
    #将公钥拷贝到其他节点,包括自己
  • [root@Master local]#ssh-copy-id Master
  • [root@Master local]#ssh-copy-id Slave1
  • [root@Master local]#ssh-copy-id Slave2
  • [root@Master local]#ssh-copy-id Slave3
  • [root@Master local]#ssh-copy-id Slave4
  • [root@Master local]#ssh-copy-id Slave5
  • [root@Master local]#ssh-copy-id Slave6
  • 复制代码
    #配置Slave2到Slave3、Slave4、Slave5、Slave6的免密码登陆
    #在Slave2上生产一对钥匙
  • [root@Master local]#ssh-keygen -t rsa
  • 复制代码
    #将公钥拷贝到其他节点
  • [root@Master local]#ssh-copy-id Slave3
  • [root@Master local]#ssh-copy-id Slave4
  • [root@Master local]#ssh-copy-id Slave5
  • [root@Master local]#ssh-copy-id Slave6
  • 复制代码
    #注意:两个namenode之间要配置ssh免密码登陆,别忘了配置Slave1到Master的免登陆
    在Slave1上生产一对钥匙
  • [root@Master local]#ssh-keygen -t rsa
  • [root@Master local]#ssh-copy-id -i Master
  • 复制代码
    #在Slave3上生产一对钥匙
  • [root@Master local]#ssh-keygen -t rsa
  • 复制代码
    #将公钥拷贝到其他节点
  • [root@Master local]#ssh-copy-id Slave4
  • [root@Master local]#ssh-copy-id Slave5
  • [root@Master local]#ssh-copy-id Slave6
  • 复制代码
    2.4将配置好的hadoop拷贝到其他节点
  • [root@Master local]#scp -r /usr/local/hadoop-2.6.0/ Slave1:/usr/local/
  • [root@Master local]#scp -r /usr/local/hadoop-2.6.0/ Slave2:/usr/local/
  • [root@Master local]#scp -r /usr/local/hadoop-2.6.0/ Slave3:/usr/local/
  • [root@Master local]#scp -r /usr/local/hadoop-2.6.0/ Slave4:/usr/local/
  • [root@Master local]#scp -r /usr/local/hadoop-2.6.0/ Slave5:/usr/local/
  • [root@Master local]#scp -r /usr/local/hadoop-2.6.0/ Slave6:/usr/local/
  • 复制代码
    ###注意:严格按照下面的步骤
    2.5启动zookeeper集群(分别在Slave4、Slave5、Slave6上启动zk)
  • [root@Master local]#cd /usr/local/zookeeper/bin/
  • [root@Master local]#./zkServer.sh start
  • 复制代码
    #查看状态:一个leader,两个follower
  • [root@Master local]#./zkServer.sh status
  • 复制代码
    2.6启动journalnode(分别在Slave4、Slave5、Slave6上执行)
  • [root@Master local]#cd /usr/local/hadoop-2.6.0/sbin
  • [root@Master local]#sbin/hadoop-daemon.sh start journalnode
  • 复制代码
    #运行jps命令检验,Slave4、Slave5、Slave6上多了JournalNode进程

    2.7格式化HDFS
    #在Master上执行命令:
  • [root@Master local]#hdfs namenode -format
  • 复制代码
    #格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/usr/local/hadoop-2.6.0/tmp,
    然后将/usr/local/hadoop-2.6.0/tmp拷贝到Slave1的/usr/local/hadoop-2.6.0/下。
  • [root@Master local]#scp -r tmp/ Slave1:/usr/local/hadoop-2.6.0/
  • 复制代码
    2.8格式化ZK(在Master上执行即可)
  • [root@Master local]#hdfs zkfc -formatZK
  • 复制代码
    2.9启动HDFS(在Master上执行)
  • [root@Master local]#sbin/start-dfs.sh
  • 复制代码
    2.10启动YARN(#####注意#####:是在Slave2上执行start-yarn.sh,把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,所以把他们分开了,他们分开了就要分别在不同的机器上启动)
  • [root@Master local]#Slave2:${HADOOP_HOME}/sbin/start-yarn.sh
  • [root@Master local]#Slave3:${HADOOP_HOME}/sbin/yarn-daemon.sh start resourcemanager
  • 复制代码
    到此,hadoop-2.6.0配置完毕,可以统计浏览器访问:
  • http://192.168.80.100:50070
  • NameNode 'Master:9000' (active)
  • http://192.168.80.101:50070
  • NameNode 'Slave1:9000' (standby)
  • 复制代码
    验证HDFS HA
    首先向hdfs上传一个文件
  • [root@Master local]#hadoop fs -put /etc/profile /profile
  • [root@Master local]#hadoop fs -ls /
  • 复制代码
    然后再kill掉active的NameNode
  • [root@Master local]#kill -9 <pid of NN>
  • 复制代码
    通过浏览器访问:http://192.168.80.101:50070
    NameNode 'Slave1:9000' (active)
    这个时候Slave1上的NameNode变成了active
    在执行命令:
  • [root@Master local]#hadoop fs -ls /
  • -rw-r--r--   3 root supergroup       1926 2014-02-06 15:36 /profile
  • 复制代码
    刚才上传的文件依然存在!!!
    手动启动那个挂掉的NameNode
  • [root@Master local]#sbin/hadoop-daemon.sh start namenode
  • 复制代码
    通过浏览器访问:http://192.168.80.101:50070
  • NameNode 'Master:9000' (standby)
  • 复制代码
    验证YARN:
    运行一下hadoop提供的demo中的WordCount程序:
  • [root@Master local]#hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount /profile /out
  • 复制代码
    hadoop HA集群搭建完成



      hbase-0.98.9-hadoop2  搭建
    4.1 解压缩,并重命名 
  • [root@Master local]#mv  hbase-**   hbase
  • 复制代码
    修改环境变量:
  • export HBASE_HOME=/usr/local/hbase
  • export PATH= .:$PATH:$HBASE_HOME/bin:
  • 复制代码
    保存,退出。  执行 source /etc/profile  生效
    4.1 修改HBase的配置文件#HBASE_HOME/conf/hbase-env.sh 修改内容如下:
  • export JAVA_HOME=usr/local/jdk/
  • export HBASE_MANAGES_ZK=true   //HBase是否管理它自己的ZooKeeper的实例。
  • 复制代码
    保存,退出。
    4.2 修改HBase的配置文件#HBASE_HOME/conf/hbase-site.xml,修改内容如下:
  • <property>
  • <name>hbase.rootdir</name>
  • <value>hdfs://Master:9000/hbase</value>
  • </property>
  • <property>
  • <name>hbase.cluster.distributed</name>
  • <value>true</value>
  • </property>
  • <property>
  • <name>hbase.zookeeper.quorum</name>
  • <value>Master</value>
  • </property>
  • <property>
  • <name>dfs.replication</name>
  • <value>3</value>
  • </property>
  • 复制代码
    注意:$HBASE_HOME/conf/hbase-site.xml的hbase.rootdir的主机和端口号与$HADOOP_HOME/conf/core-site.xml的fs.default.name的主机和端口号一致
    4.3 (可选)文件  regionservers 的内容修改为Master.

    4.4 执行目录到../bin ,执行命令  start-hbase.sh
    ******启动hbase之前,确保hadoop是运行正常的。并且可以写入文件。
    4.5 验证:(1)执行jps,发现新增加了3个Havana进程,分别是HMaster、HRegionServer、HQuorumPeer (HQuorumPeerMain 是ZooKeeper的进程 ) 
    备注:启动HBase时,请先执行  /usr/local/zookeeper/bin zkServer.sh stop 停止ZooKeeper的进程,以免hbase启动失败。

    (2)通过浏览器查看:  http://masters:60010

    5.HBase的集群安装(在原来的Master上的hbase伪分布基础上搭建):
    5.1 集群结构,主节点(hmaster)是Master,从节点(region server)是Slave1,Slave2,Slave3.
    5.2 修改hadoop0上的hbase的几个文件

    (1)修改hbase-env.sh 最后一行 export  HBASE_MANAGES_ZK=false.
    (2)修改hbase-site.xml文件的hbase.zookeeper.quorum的值为Master,Slave1,Slave2,Slave3 
    (3)修改regionservers文件(存放的 region server的hostname),内容修改成Slave1,Slave2,Slave3 。
    5.3 复制Master中的hbase到Slave1,Slave2,Slave3的对应目录下,并复制、Master 的/etc/profile文件到hadoop1 、hadoop2 中。
  • [root@Master local]#scp -r hbase Slave1:/usr/local/
  • [root@Master local]#scp -r /etc/profile  Slave1:/etc/profile
  • [root@Master local]#source /etc/profile
  • 复制代码
    5.4 在HA集群中,首先各个节点启动ZooKeeper集群,其次 Master中启动hadoop集群,最后在Master上启动hbase集群。

    6.测试Hbase是否启动正常:

    1) 在Master主机中执行jps,查看进程。会新增一个 HMaster 进程
    2) 在regionserver 中执行  jps,新增 HRegionServer。

    7.执行hbase脚本命令:
  • [root@Slave2 local]#  hbase shell
  • 复制代码

    总结

    以上是生活随笔为你收集整理的hadoop +hbase +zookeeper 完全分布搭建 (版本一)的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。