hadoop2.74+zookeeper3.4.10+hbase1.2.6完全分布式搭建

hadoop集群搭建至少3台以上节点,这里用VMware,虚拟出以5台centenOS6.5,
分别为:node01~node05(hostname)

1、基础配置

(1)配置好每台机器ip,修改hostname,配置dns

node01为master,node05作为 backup-master,
node02、node03、node04作为slaves

node01、node02、node03上安装zookeeper

backup-master主要用于HA集群,会再后续文章中介绍。


配置ip,编辑vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
TYPE=Ethernet
UUID=5bb4cc10-358d-46b0-9714-ab58106fe502
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.71 #ip
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.1.2  #网关


修改hostname,编辑 vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=node01

配置dns,编辑vi /etc/resolv.conf

nameserver 8.8.8.8


每台机器上都配置一下,配置完重启生效,当然如果你已经好了那就没必要了


(2)配置hosts,vim /etc/profile/hosts,加入

192.168.1.71  node01
192.168.1.72  node02
192.168.1.73  node03
192.168.1.74  node04
192.168.1.75  node05

(3)ssh免密码登录

master、backup-master互相免密码登录,master、backup-master免密码登录slaves,
同时每个节点实现自身免密码登录,具体参见:http://blog.csdn.net/lzxlfly/article/details/77916842

(4)配置jdk环境变量 (因为hadoop、hbase版本较高,采用jdk1.8)

vi /etc/profile ,加入以下内容

export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

执行source /etc/profile 命令使其生效(以后每次改动都要执行此操作)

(5)安装ntp服务校正各个节点之间的时间一致

具体参见:http://blog.csdn.net/lzxlfly/article/details/78018595

(6)端口太多,为了方便直接关闭防火墙

chkconfig iptables off   重启后生效 
service iptables stop  即时生效,重启后失效  

2、hadoop安装配置

(1)配置hadoop环境变量

 编辑vi /etc/profile ,添加以下内容

export HADOOP_HOME=/opt/hadoop/hadoop-2.7.4 #hadoop安装路径
export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$HADOOP_HOME/bin

编辑vi /opt/hadoop/hadoop-2.7.4/etc/hadoop/hadoop-env.sh 添加以下内容

# The java implementation to use.
export JAVA_HOME=/usr/local/jdk1.8 #jdk路径

(2)配置相关xml

进入 cd /opt/hadoop/hadoop-2.7.4/etc/hadoop下,进行配置

core-site.xml配置,默认文件core-default.xml在hadoop-common-2.5.1.jar

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node01:9000</value>
	<description>NameNode URI</description>
    </property>
   <property>
    <name>io.file.buffer.size</name>
    <value>131072</value><!--默认4096 bytes-->
    <description>Size of read/write buffer used inSequenceFiles</description>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/data</value><!--建议重新设置,默认路径重启集群后会失效-->
    <description>A base for other temporary directories</description>
 </property>
</configuration>

hdfs-site.xml配置,默认文件hdfs-default.xml在hadoop-hdfs-2.5.1.jar

<configuration>
   <property>
  	<name>dfs.namenode.name.dir</name><!--这个属性可以省略,默认路径file:///${hadoop.tmp.dir}/dfs/name-->
    	<value>file:///data/dfs/name</value>
    	<description>Path on the local filesystem where the NameNodestores the namespace and transactions logs persistently</description>
   </property>
   <property>
    	<name>dfs.namenode.secondary.http-address</name>
    	<value>node05:9868</value><!--secondaryNameNode设置在node05上,建议生产环境专门设置在一台机器上-->
     	<description>The secondary namenode http server address andport,默认port50090</description>
   </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value><!--备份默认为3,不能超过datanode的数量-->
    </property>
   <property>
         <name>dfs.datanode.data.dir</name><!--这个属性可以省略,默认路径file:///${hadoop.tmp.dir}/dfs/data-->
         <value>file:///data/dfs/data</value>       
	<description>Comma separated list of paths on the local filesystemof a DataNode where it should store its blocks</description>
   </property>
</configuration>

mapred-site.xml配置,默认文件mapred-default.xml在hadoop-mapreduce-client-core-2.5.1.jar中

<configuration>
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value><!--这里设置为yarn框架,默认local-->
    <description>The runtime framework for executing MapReduce jobs. Can be one of local, classic or yarn.</description>
  </property>
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>node01:10020</value>
    <description>MapReduce JobHistoryServer IPC host:port</description>
  </property>
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>node01:19888</value>
    <description>MapReduce JobHistoryServer Web UI host:port</description>
  </property>
</configuration>

yarn-site.xml配置,默认文件yarn-default.xml在hadoop-yarn-common-2.5.1.jar中

<configuration>
<!-- Site specific YARN configuration properties -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node01</value>
    <description>The hostname of theRM</description>
 </property>
<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
  <description>Shuffle service that needs to be set for Map Reduceapplications</description>
  </property>
</configuration>

编辑vi slaves,去掉localhost,添加slaves节点

node02
node03
node04

(3)将配置好的hadoop分发到其它节点对应目录下

scp -r /opt/hadoop/hadoop2.7.4 node02:`pwd`
scp -r /opt/hadoop/hadoop2.7.4 node03:`pwd`
scp -r /opt/hadoop/hadoop2.7.4 node04:`pwd`
scp -r /opt/hadoop/hadoop2.7.4 node05:`pwd`

 (4)启动hadoop集群

启动前要先进行格式化文件系统,在主节点node01上输入:hdfs namenode -format,等待格式化完成

无误后在node01上输入:start-all.sh启动hadoop,也可以start-dfs.sh、start-yarn.sh分别启动

This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [node01]
node01: starting namenode, logging to /opt/hadoop/hadoop-2.7.4/logs/hadoop-root-namenode-node01.out
node03: starting datanode, logging to /opt/hadoop/hadoop-2.7.4/logs/hadoop-root-datanode-node03.out
node02: starting datanode, logging to /opt/hadoop/hadoop-2.7.4/logs/hadoop-root-datanode-node02.out
node04: starting datanode, logging to /opt/hadoop/hadoop-2.7.4/logs/hadoop-root-datanode-node04.out
Starting secondary namenodes [node05]
node05: starting secondarynamenode, logging to /opt/hadoop/hadoop-2.7.4/logs/hadoop-root-secondarynamenode-node05.out
starting yarn daemons
starting resourcemanager, logging to /opt/hadoop/hadoop-2.7.4/logs/yarn-root-resourcemanager-node01.out
node02: starting nodemanager, logging to /opt/hadoop/hadoop-2.7.4/logs/yarn-root-nodemanager-node02.out
node03: starting nodemanager, logging to /opt/hadoop/hadoop-2.7.4/logs/yarn-root-nodemanager-node03.out
node04: starting nodemanager, logging to /opt/hadoop/hadoop-2.7.4/logs/yarn-root-nodemanager-node04.out


待启动完成后,在node01~node05分别输入jps命令查看进程

node01 :NameNode、ResourceManager
node02~node04:DataNode、NodeManager
node05:SecondaryNameNode

出现这些进程表明hadoop集群基本启动成功


在浏览器输入http://node01:50070可查看集群状态

输入:stop-all.sh,停止hadoop集群,等待几秒便会停止

hadoop配置可参见http://hadoop.apache.org/docs/r2.7.4/hadoop-project-dist/hadoop-common/ClusterSetup.html

3、zookeeper安装配置

(1)配置zookeeper环境变量

编辑vi /etc/profile ,添加以下内容

export ZOOKEEPER_HOME=/opt/hadoop/zookeeper-3.4.10 #zookeeper安装路径
export PATH=$ZOOKEEPER_HOME/bin:$PATH

(2)配置zoo.cfg

编辑 vi /opt/hadoop/zookeeper-3.4.10/conf/zoo.cfg,修改默认路径

dataDir=/data/zookeeper #默认路径为/tmp/zookeeper

并添加以下内容,zookeeper集群的通信地址,端口

server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888

分别在node01、node02、node03上/data/zookeeper,即dataDir对应目录下建立myid文件,

文件内容分别为1、2、3,也即server对应的1、2、3

由于机器有限,和hadoop、hbase部署在一起了,生产环境最好把zookeeper部署到独立的机器上
zookeeper一般为奇数个,这是由其选举算法决定的。

(3)将配置好的zookeeper分发到其它节点对应路劲下

scp -r /opt/hadoop/zookeeper3.4.10 node01:`pwd`
scp -r /opt/hadoop/zookeeper3.4.10 node02:`pwd`
scp -r /opt/hadoop/zookeeper3.4.10 node03:`pwd`

(4)启动zookeeper集群

在node01、node02、node03上分别执行 zkServer.sh start 命令

ZooKeeper JMX enabled by default
Using config: /opt/hadoop/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

启动完成后,分别在三个节点上执行jps命令,

看到 QuorumPeerMain进程表明zookeeper启动成功。

在node01、node02、node03上分别执行 zkServer.sh status命令

node01显示:

ZooKeeper JMX enabled by default
Using config: /opt/hadoop/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower
node02显示:
ZooKeeper JMX enabled by default
Using config: /opt/hadoop/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower
  node03显示:
ZooKeeper JMX enabled by default
Using config: /opt/hadoop/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader
可以看出node03是集群中的leader,node01、node02为follower

zookeeper部署可参见http://zookeeper.apache.org/doc/r3.4.10/zookeeperStarted.html

4、hbase安装配置

(1)配置hbase环境变量

编辑vi /etc/profile ,添加以下内容

export  HBASE_HOME=/opt/hadoop/hbase-1.2.6 #hbase安装路径
export  PATH=$HBASE_HOME/bin:$PATH
编辑 vi /opt/hadoop/hbase-1.2.6/conf/hbase-env.sh
去掉export前的注释,填写jdk路径

export JAVA_HOME=/usr/local/jdk1.8 #jdk路径

去掉export前的注释,设置为false,不用hbase内置的zookeeper
 
export HBASE_MANAGES_ZK=false

如果jdk1.8,还要注释以下两行

# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
#export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
#export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"

若不注释的话,启动hbase会报以下警告,Java HotSpot(TM) 64-Bit Server VM warning。

starting master, logging to /opt/hadoop/hbase-1.2.6/logs/hbase-root-master-node01.out
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
node02: starting regionserver, logging to /opt/hadoop/hbase-1.2.6/bin/../logs/hbase-root-regionserver-node02.out
node03: starting regionserver, logging to /opt/hadoop/hbase-1.2.6/bin/../logs/hbase-root-regionserver-node03.out
node04: starting regionserver, logging to /opt/hadoop/hbase-1.2.6/bin/../logs/hbase-root-regionserver-node04.out
node02: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
node02: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
node03: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
node03: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
node04: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
node04: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
node05: starting master, logging to /opt/hadoop/hbase-1.2.6/bin/../logs/hbase-root-master-node05.out
node05: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
node05: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0

(2)配置hbase-site.xml

配置hbase-site.xml,默认文件hbase-site.xml在hbase-common-1.2.6.jar中

<configuration>
	<property> 
        <name>hbase.rootdir</name> <!-- hbase存放数据目录 ,默认值${hbase.tmp.dir}/hbase-->
        <value>hdfs://node01:9000/data/hbase_db</value><!-- 端口要和Hadoop的fs.defaultFS端口一致-->
      </property> 
      <property> 
        <name>hbase.cluster.distributed</name> <!-- 是否分布式部署 -->
        <value>true</value> 
      </property> 
      <property> 
        <name>hbase.zookeeper.quorum</name> <!-- list of  zookooper -->
        <value>node01,node02,node03</value> 
     </property> 
</configuration>

(3)配置regionservers、backup-masters

vi regionservers,去掉localhost,添加slaves节点

node02
node03
node04

 backup-masters不存在,需要手动创建并添加备份节点

node05 #可以有多个,一般一个备份就够了

(4)把hadoop的hdfs-site.xml复制一份到hbase的conf目录下

因为hbase的数据最终要写入hdfs中,要把hbase的路径链接到hsfs中

cp /opt/hadoop/hadoop2.7.4/etc/haddop/hdfs-site.xml /opt/hadoop/hbase-1.2.6/conf

(5)将配置好的hbase分发到其它节点

scp -r /opt/hadoop/hbase1.2.6 node02:`pwd`
scp -r /opt/hadoop/hbase1.2.6 node03:`pwd`
scp -r /opt/hadoop/hbase1.2.6 node04:`pwd`
scp -r /opt/hadoop/hbase1.2.6 node05:`pwd

(6)启动hbase集群

在node01上输入:start-hbase.sh,hbase会开始启动

starting master, logging to /opt/hadoop/hbase-1.2.6/logs/hbase-root-master-node01.out
node02: starting regionserver, logging to /opt/hadoop/hbase-1.2.6/bin/../logs/hbase-root-regionserver-node02.out
node03: starting regionserver, logging to /opt/hadoop/hbase-1.2.6/bin/../logs/hbase-root-regionserver-node03.out
node04: starting regionserver, logging to /opt/hadoop/hbase-1.2.6/bin/../logs/hbase-root-regionserver-node04.out
node05: starting master, logging to /opt/hadoop/hbase-1.2.6/bin/../logs/hbase-root-master-node05.out

等待启动完成,在每个节点上输入jps命令,查看进程

node01,node05:HMaster、

node02~node04:HRegionServer

出现以上进程表hbase明启动成功了


在浏览器输入http://node01:16010 可查看hbase集群状态


在node01上输入:stop-hbase.sh,hbase集群会等待几秒就会停止了


hbase配置可参见:http://hbase.apache.org/book.html#_introduction


5、注意事项及常见问题

(1)每个节点上目录以及文件路径都要相同

一般hadoop、zookeeper、hbase都是在一台机器上配置好,直接分发到其他节点上,便于操作,
所以要提前建好相同的相关目录。

(2)hadoop格式化问题

执行hadoop namenode -format 格式化一般首次执行就行了。

若要重新格式化,首先,停止集群,删除namenode和datanode对应的持久化数据存储目录,再格式化新文件系统。

因为重新格式化,namenode的数据会重新生成,datanode的数据不会重新生成,仍是原来的数据,

这样namenode和datanode不在一个集群,从而导致datanode启动不成功

(3)hbase环境变量配置问题

hbase环境变量配置出错,会出现以下问题:

Error: Could not find or load main class org.apache.hadoop.hbase.util.HBaseConfTool
Error: Could not find or load main class org.apache.hadoop.hbase.zookeeper.ZKServerTool
starting master, logging to /opt/hadoop/zookeeper-3.4.10/logs/hbase-root-master-node01.out
nice: /opt/hadoop/zookeeper-3.4.10/bin/hbase: No such file or directory
cat: /opt/hadoop/zookeeper-3.4.10/conf/regionservers: No such file or directory
cat: /opt/hadoop/zookeeper-3.4.10/conf/regionservers: No such file or directory

出现这个问题一般都是hbase环境变量配置出错了,请认真检查环境变量配置

(4)hadoop、hbase、jdk的版本要匹配,

 hadoop与jdk,hadoop2.7要求jdk7以上

 hbase与jdk对照

 hadoop与hbase对照


而hase1.2.x要求zookeeper3.4.x以上



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值