HBase集群基于HDFS

HBase集群安装-HDFS模式

即将hbase的数据保存到hdfs上,只需要指定:hbase.rootdir=hdfs://ip:port/hbase即可。

前置条件:

1:SSH信任。建议使用ssh-agent。

2:配置好JDK及环境变量。

3:关闭防火墙。

4:配置/etc/hosts文件主机影射。

5:在配置好hadoop以后,配置hadoop的环境变量。

步1、配置表

步2、配置hadoop完全分布式

hadoop的配置文件

hadoop-env.sh

export JAVA_HOME=/usr/jdk1.8_171

core-site.xml

fs.defaultFS

hdfs://hadoop41:8020

hdfs-site.xml

/app/hadoop/dfs/name,/app/hadoop/dfs2/name

/app/hadoop/edits,/app/hadoop/edits2

/app/hadoop/dfs/datas,/app/hadoop/dfs2/datas

hadoop41:50070

hadoop43:50091

hadoop43:50090

dfs.stream-buffer-size

131072

mapred-site.xml

yarn

50

默认为100M

/app/hadoop/mapreduce-cluster-local-dir

溢出目录,可以使用逗号分开设置多个目录

/app/hadoop/mapreduce-jobtracker-system-dir

保存mapreduce的控制文件

512

mapred运行所需要的内存,默认为1024M

512

reduce运行时所需要的内存,默认为1024M

yarn-site.xml

mapreduce_shuffle

hadoop42

/app/hadoop/nm-local-dir

nodemanager计算数据保存的目录,可以使用逗号分开多个目录

2048

slaves

hadoop41

hadoop42

hadoop43

配置好以后,启动hadoop并进行基本的测试,如执行hdfs命令,和执行一个mapreduce的wordcount程序。

步3、配置hbase

1、解压hbase

[wangjian@hadoop41 /app]$ tar -zxvf ~/hbase-2.0.1-bin.tar.gz -C .

2、配置hbase

hbase-env.sh

export JAVA_HOME=/usr/jdk1.8.0_171

hbase-site.xml

hbase.rootdir

hdfs://hadoop41:8020/hbase

true

/app/hbase/local

/app/hbase/zookeeper

hadoop41:2181,hadoop42:2181,hadoop43:2181

regionservers

hadoop41

hadoop42

hadoop43

3、配置hbase的环境变量

export HBASE_HOME=/app/hbase-2.0.1

export PATH=$PATH:$HBASE_HOME/bin

配置好以后,查看版本:

[wangjian@hadoop41 app]$ hbase version

HBase 2.0.1

4、分发hbase安装文件和环境变量配置文件

[wangjian@hadoop41 app]$ scp -r hbase-2.0.1/ hadoop42:/app/

[wangjian@hadoop41 app]$ scp -r hbase-2.0.1/ hadoop43:/app/

环境变量配置文件:

$ scp /etc/profile.d/hbase.sh root@hadoop42:/etc/profile.d/

$ scp /etc/profile.d/hbase.shroot@hadoop43:/etc/profile.d/

步4、启动hbase

启动hbase之前,先确定已经启动了Hadoop集群。

[wangjian@hadoop41 app]$ start-hbase.sh

hadoop42: running zookeeper, logging to /app/hbase-2.0.1/logs/hbase-wangjian-zookeeper-hadoop42.out

hadoop43: running zookeeper, logging to /app/hbase-2.0.1/logs/hbase-wangjian-zookeeper-hadoop43.out

hadoop41: running zookeeper, logging to /app/hbase-2.0.1/logs/hbase-wangjian-zookeeper-hadoop41.out

running master, logging to /app/hbase-2.0.1/logs/hbase-wangjian-master-hadoop41.out

hadoop43: running regionserver, logging to /app/hbase-2.0.1/logs/hbase-wangjian-regionserver-hadoop43.out

hadoop42: running regionserver, logging to /app/hbase-2.0.1/logs/hbase-wangjian-regionserver-hadoop42.out

hadoop41: running regionserver, logging to /app/hbase-2.0.1/logs/hbase-wangjian-regionserver-hadoop41.out

[wangjian@hadoop41 app]$ jps

2673 HRegionServer

2770 Jps

1780 DataNode

2550 HMaster

1399 NodeManager

1671 NameNode

2460 HQuorumPeer

启动以后检查每一个节点上的进程是否与配置表的进程相同。如果有不同,请查找问题。

第二台服务器:

[wangjian@hadoop42 app]$ jps

12289 HQuorumPeer

12547 Jps

11740 NodeManager

12092 DataNode

11631 ResourceManager

12399 HRegionServer

第三台服务器:

[wangjian@hadoop43 app]$ jps

2307 NodeManager

3047 Jps

2473 DataNode

2601 SecondaryNameNode

2890 HRegionServer

2783 HQuorumPeer

现在观察16010端口的webui:

查看hdfs上的文件:

[wangjian@hadoop41 app]$ hdfs dfs -ls /

Found 4 items

drwxr-xr-x - wangjian supergroup 0 2018-06-26 11:08 /hbase

...

步5、操作表测试

创建一个表:

hbase(main):002:0> create "t01","info"

Created table t01

Took 2.5490 seconds

=> Hbase::Table - t01

再创建一个表,并指定预分区:

hbase(main):003:0> create "t02","info",

Created table t02

Took 1.3505 seconds

=> Hbase::Table - t02

使用命令,将一个region移动到另一个regionserver上去:

hbase(main):004:0> move 'c6a83c9d712cde5f076c72d8eac3e007','hadoop41,16020,1529982477434'

Took 1.2674 seconds

现在通过16010查看表的信息和状态:

上面的命令中,最后一个命令move是将其中一个分区regin移动到hadoop41服务器上去,移动完成以后查看这个region的状态:

移动完成。(上次在file:///下使用)

步6、JavaAPI测试

publicclassDemo03_Cluster {

Configurationconfig;

Connectioncon;

HBaseAdminadmin;

@Before

publicvoidbefore()throwsException {

config= HBaseConfiguration.create();

con= ConnectionFactory.createConnection(config);

admin= (HBaseAdmin)con.getAdmin();

}

@After

publicvoidafter()throwsException {

admin.close();

con.close();

}

@Test

publicvoidtest1()throwsException {

TableName[]tns=admin.listTableNames();

for(TableNamen:tns) {

}

}

以上测试都成功,现在就可以愉快的玩耍了!!!

其他:

也能显示表的详细信息了:

登录zkcli的测试:

[wangjian@hadoop43 app]$ hbase zkcli

[zk: hadoop41:2181,hadoop42:2181,hadoop43:2181(CONNECTED) 0] ls /

[zookeeper, hbase]

在hadoop42上启动一个standby的hmaster:

[wangjian@hadoop42 app]$ hbase-daemon.sh start master

running master, logging to /app/hbase-2.0.1/logs/hbase-wangjian-master-hadoop42.out

查看webui:

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180626G0TFAO00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券