hadoop+hbase+zookeeper分布式集群搭建

Hadoop+Hbase+Zookeeper分布式集群搭建

1.安装前的准备

一台虚拟机CentOS7,配置好环境变量、装配好jdk,对其进行克隆,一共3台虚拟机
这里写图片描述
2.分配好ip地址
-192.168.8.128 master
-192.168.8.129 slave1
-192.168.8.130 slave2

2.软件准备:

项目版本
Hadoop2.7.5
Hbase1.2.6
Zookeeper3.3.6

3.Hadoop安装

 3.1. 修改Master主机下hadoop配置文件
vim /etc/profile

export JAVA_HOME=/usr/java/jdk1.8.0_111  
export PATH=$JAVA_HOME/bin:$PATH  
export HADOOP_HOME=/data/yunva/hadoop-2.7.3  
export HADOOP_INSTALL=$HADOOP_HOME  
export HADOOP_MAPRED_HOME=$HADOOP_HOME  
export HADOOP_COMMON_HOME=$HADOOP_HOME  
export HADOOP_HDFS_HOME=$HADOOP_HOME  
export YARN_HOME=$HADOOP_HOME  
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native  
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin  
3.2.Master主机上添加Hosts映射关系
vi etc/hosts

192.168.8.128  master
192.168.8.129  slave1
192.168.8.130  slave2

配好Master主机的hosts文件之后,scp文件到slave1,slave2
scp /etc/hosts slave1:/etc/hosts
scp /etc/hosts slave1:/etc/hosts

3.3 修改core-site.xml
<configuration>
 <property>
  <name>hadoop.tmp.dir</name>
  <value>/root/bigdata/hadoop-2.7.5/tmp</value>
 </property>
 <property>
  <name>fs.default.name</name>
  <value>hdfs://master:9000</value>
 </property>
 <property>
   <name>io.file.buffer.size</name>
   <value>131072</value>
 </property>
</configuration>
3.3 修改hadoop-env.sh、yarn-env.sh,末尾追加下列内容:
export JAVA_HOME=/usr/jdk
3.4 修改hdfs-site.xml
# 先创建hadoop的数据和用户目录
# mkdir -p /root/bigdata/hadoop-2.7.5/hadoop/name
# mkdir -p /root/bigdata/hadoop-2.7.5/hadoop/data

------------------------------------------------------------
<configuration>
   <property>
        <name>dfs.name.dir</name>
        <value>/root/bigdata/hadoop-2.7.5/hadoop/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/root/bigdata/hadoop-2.7.5/hadoop/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
   <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:9001</value>
   </property>
   <property>
     <name>dfs.webhdfs.enabled</name>
     <value>true</value>
   </property>
   <property>
        <name>dfs.permissions</name>
        <value>false</value>
   </property>
</configuration>
3.5 修改mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
3.6 修改master的slave文件,实现hadoop自动化启动集群
# vi  /root/bigdata/hadoop-2.7.5/etc/hadoop/slave
slave1
slave2

至此,Master主机上的hadoop已经配置完毕,我们需要将其复制到slave1,2主机

# scp -r /root/bigdata/hadoop-2.7.5/  slave1:/root/bigdata
# scp -r /root/bigdata/hadoop-2.7.5/  slave2:/root/bigdata

确定好上述的各个环节都ok之后,进行启动hadoop集群操作
master主机:
格式化namenode,第一次启动服务前执行的操作,以后不需要执行
# cd /root/bigdata/hadoop-2.7.5/bin
# hadoop namenode -format
# cd ../sbin
# start-all.sh #启动hadoop集群
# jps #查看进程

hadoop自带的web控制台GUI
1.资源管理GUI:http://localhost:8088/
2.节点管理GUI:http://localhost:50070/

若上面的操作无误,进去web页面无效,校验一下防火墙是否出了问题!

单机版的hadoop和伪分布式版本人尚未尝试,还是贴近实战的分布式集群入手学习来的实在,虽然很多坑.

4.Zookeeper集群安装配置

 4.1 host映射配置:

保持hadoop的配置即可:
192.168.8.128 master
192.168.8.129 slave1
192.168.8.130 slave2

 4.2 目录conf/zoo_sample.cfg文件复制一份为zoo.cfg,追加参数配置
# 服务器与客户端之间交互的基本时间单元(ms) 
tickTime=2000
# The number of ticks that the initial 
# zookeeper所能接受的客户端数量 
initLimit=5
# The number of ticks that can pass between 
# 服务器和客户端之间请求和应答之间的时间间隔 
syncLimit=2
# 保存zookeeper数据,日志的路径
dataDir=/root/bigdata/zookeeper-3.3.6/data
dataLogDir=/root/bigdata/zookeeper-3.3.6/logs
# 客户端与zookeeper相互交互的端口 
clientPort=2181

server.1=master:2888:3888  
server.2=slave1:2888:3888  
server.3=slave2:2888:3888 
#server.A=B:C:D  其中A是一个数字,代表这是第几号服务器;B是服务器的IP地址;#C表示服务器与群集中的“领导者”交换信息的端口;当领导者失效后,D表示用来执行选#举时服务器相互通信的端口。
4.3 创建对应的日志路径和数据路径

根据zoo.cfg里面的dataDir和dataLogDir路径,创建对应的路径,
并在dataDir下创建myid,根据server.A=B:C:D在对应的节点下echo A > myid

4.4 scp当前的zookeeper文件到slave1和slave2主机上
#scp /root/bigdata/zookeeper slave1:/root/bigdata/zookeeper
#scp /root/bigdata/zookeeper slave2:/root/bigdata/zookeeper
4.5 启动节点,master主机在bin目录下执行zkServer.sh start-foreground,之后在每个节点下,有序的启动,忽略一段报错信息,等平稳下来后,查看这块Server.sh status状态.

可能遇到的问题,请参考这个网址:
http://blog.csdn.net/weixin_37550903/article/details/78091670

5. HBase集群安装配置

5.1 修改追加conf下hbase-env.sh
export JAVA_HOME=/usr/jdk
export HBASE_LOG_DIR=/root/bigdata/hbase-1.2.6/logs
export HBASE_MANAGES_ZK=false #关闭HBase自带的Zookeeper,使用自己搭建的Zookeeper集群
export HADOOP_HOME=/root/bigdata/hadoop-2.7.5 
export HBASE_PID_DIR=/root/bigdata/hbase-1.2.6/pids   #hbase的pid,用做关闭hbase识别
5.2 修改conf下hbase-site.xml
<property>
        <name>hbase.tmp.dir</name>
        <value>/root/bigdata/hbase-1.2.6/tmp</value>
    </property>
    <property> 
        <name>zookeeper.session.timeout</name> 
        <value>3600000</value> 
    </property>

    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://master:9000/hbase</value>
    </property>
    <property>
        <name>hbase.master</name>
        <value>master</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master,slave1,slave2</value>
    </property>
    <property>
        <name>zookeeper.session.timeout</name>
        <value>60000000</value>
    </property>
    <property>
        <name>dfs.support.append</name>
        <value>true</value>
    </property>

    <!--禁止magor compaction-->
    <property>
        <name>hbase.hregion.majorcompaction</name>
        <value>0</value>
    </property>
    <!--禁止split-->
     <property>
        <name>hbase.hregion.max.filesize</name>
        <value>536870912000</value>
     </property>
     <!---->
     <property>
        <name>hbase.hstore.blockingStoreFiles</name>
        <value>2100000000</value>
     </property>
     <property>
        <name>hbase.regionserver.handler.count</name>
        <value>100</value>
     </property>
    <property>  
        <name>hbase.master.info.port</name>  
        <value>60010</value>  
    </property>
5.3 修改conf下的regionservers文件,文档末尾追加:
slave1
slave2
5.4 scp远程复制hbase到slave1,1主机上
#scp /root/bigdata/hbase-1.2.6 slave1:/root/bigdata/hbase-1.2.6
#scp /root/bigdata/hbase-1.2.6 slave2:/root/bigdata/hbase-1.2.6
5.5 在master的bin目录执行start-hbase.sh,启动集群。备注:如果遇到无关关闭hbase的情况,kill -9 暴力解决


5.6 测试:http://192.168.8.128:60010/master-status,能看到下图说明就成功啦 如果看不到的话,就查看hbase-site.xml是否有这段配置代码:
<property>  
    <name>hbase.master.info.port</name>  
    <value>60010</value>  
</property>
没有的话加上,重启hbase即可,另外提一下,hbase启动之前,hadoop和zookeeper最好先开着,至于原因日后再深究`
![这里写图片描述](https://img-blog.csdn.net/20180402135028237?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTM1NTMzMDk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

5.7 6.进入控制台 sbin目录下,输入hbase shell
Hbase代码调试:

hadoop自带的web控制台GUI
1.资源管理GUI:http://localhost:8088/
2.节点管理GUI:http://localhost:50070/

查看HBase状态:
http://192.168.1.128:60010/master-status

获取jar包:
/opt/cloudera/parcels/CDH/lib/hbase


进入命令行
[root@hadoop1 ~]# hbase shell

退出命令行
hbase(main):001:0> exit

查看所有表
hbase(main):001:0> list
TABLE
0 row(s) in 1.9500 seconds
=> []


create '表名称','列名称1',...,'列名称n'

eg:建立一个表scores,有两个列族grad和courese。
hbase(main):004:0> create 'scores','grad','courese'
0 row(s) in 1.5820 seconds
=> Hbase::Table - scores

hbase(main):005:0> list
TABLE
scores
1 row(s) in 0.0080 seconds
=> ["scores"]

添加记录
put '表名','行键名','列名','单元格值','时间戳'
时间戳可以省略。

hbase(main):009:0> put 'scores','Tom','grad:','5'
hbase(main):011:0> put 'scores','Tom','courese:math','100'
hbase(main):012:0> put 'scores','Tom','courese:art','100'

hbase(main):013:0> put 'scores','Mark','grad','6'

hbase(main):014:0> put 'scores','Mark','courese:english','120'

hbase(main):015:0> put 'scores','Mark','courese:chinese','108'



查看表所有记录(全面扫描)
scan 'scores'

查找某条记录
hbase(main):020:0> get 'scores','Mark'
COLUMN             CELL
 courese:chinese   timestamp=1435491529683, value=108
 courese:english   timestamp=1435491508206, value=120
 grad:             timestamp=1435491484521, value=6
3 row(s) in 0.0520 seconds

hbase(main):021:0> get 'scores','Mark','grad'
COLUMN             CELL
 grad:             timestamp=1435491484521, value=6
1 row(s) in 0.0390 seconds


base> count 'ns1:t1'
 hbase> count 't1'
 hbase> count 't1', INTERVAL => 100000
 hbase> count 't1', CACHE => 1000
 hbase> count 't1', INTERVAL => 10, CACHE => 1000
统计一般比较耗时,使用mapreduce进行统计,统计结果会缓存,默认是10行,统计间隔默认是1000行。

hbase(main):038:0> count 'scores'
2 row(s) in 0.0290 seconds
=> 2


增加一列族
hbase(main):048:0> alter 'scores',NAME=>'info'
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.4330 seconds

删除一个列族
hbase(main):053:0> alter 'scores',NAME=>'NAME=info',METHOD=>'delete'
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.4670 seconds
hbase(main):055:0> alter 'scores','delete'=>'courese'



不过不能删除掉,先disable 'scores',修改完之后再enable 'scores'。

删除表
先禁用表
hbase(main):057:0> disable 'scores'
然后删除表
hbase(main):057:0> drop 'scores'



删除指定数据
delete 'scores','Mark','courese:english'
1

删除整行
deleteall '表名','行键'
deleteall 'scores','Mark'(慎用)
1
2
清空表
表结构仍然在。
truncate 'scores'

启动集群的顺序

  • 1.hadoop/hdfs ———–任意一个节点,启动start-dfs.sh, 出现NameNode或者DataNode代表启动成功
  • 2.zookeeper ———–挨个启动zkServer.sh 出现QuorumPeerMain代表启动成功
  • 3.hbase ———–任意一个节点启动bin/hbase-start.sh 主节点出现HMaster和HRegionServer,子节点只出现HRegionServer代表启动成功
  • 4.PS:高并发集群的启动顺序,会将zookeeper最开始执行,后续的组件顺序不变
    如果hbase启动不成功,注意下hadoop是否处于安全模式中,如果是的话执行:dfsadmin -safemode leave离开安全模式
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值