博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[hadoop实战3]Hbase安装
阅读量:5911 次
发布时间:2019-06-19

本文共 6504 字,大约阅读时间需要 21 分钟。

一. 名词解释

Hbase:Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

Hive:是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。

Pig:Apache Pig是用来处理大规模数据的高级查询语言,配合Hadoop使用,可以在处理海量数据时达到事半功倍的效果,比使用Java,C++等语言编写大规模数据处理程序的难度要小N倍,实现同样的效果的代码量也小N倍。

以上几点是官方的解释,我想Hbase一定很好理解,就是一个分布式的数据库,而Hive是一种数据仓库基础构架,是说的很玄乎,其实Hive就是一个SQL解析引擎,因为Hbase本身并不提供sql解析功能,它的出现可以将普通的SQL解析成可以在hadoop分布式平台上运行的引擎。换做通俗的话就是,在Hbase中并不能直接输入我们熟悉的SQL语句,需要这个东西来翻译一下。但是Hive和Hbase整合是非常没用的,因为Hive是数据仓库,只提供查询和批量导入等功能,不能支持insert一条语句或者update一条语句。而Pig Latin是一种高级脚本,从名字就可以看粗来哪类的人在使用,个人觉得它的出现并没有多节省分布式程序开发效率,反而增加了学习的成本,在此不表。

二. Hbase的安装

假设我们已经完成前两部分的工作了,那现在就开始吧!!下载hbase-0.94.10.tar,在master主机上用UltralIso传入ubuntu,同样放在hadoop的home中,解压,重命名,修改权限:

sudo tar -zxvf hbase-0.94.10.tarsudo chown -R hadoop:hadoop hbase

1.编辑hbase-env.sh:

export HBASE_OPTS="$HBASE_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"export JAVA_HOME=/opt/jre1.7.0_25export HBASE_MANAGES_ZK=trueexport HBASE_HOME=/home/hadoop/hbase/hbaseexport HADOOP_HOME=/home/hadoop/hadoop/hadoopexport HBASE_HEAPSIZE=3000
配置java目录,hadoop目录和hbase目录,HBASE_MANAGES_ZK指的是否需要zookeeper的支持,hadoop整个项目的取名都非常形象,像zookeeper字面意思是动物园管理员,它负责管理各个子节点的:配置维护、名字服务、分布式同步、组服务等。其实就是封装原语来达到容错、防死锁,同步等目的,这个地方写作true的意思是使用zookeeper来帮我们管理数据库一些事务。hbase对于内存有特别的嗜好,在硬件允许的情况下配足够多的内存给它,把HBASE_HEAPSIZE改为3000m。

2.编辑hbase-site.xml,

hbase.rootdir
hdfs://master:9000/home/hadoop/hadoop/temp
hbase.cluster.distributed
true
hbase.master
hdfs://master:60000
hbase.zookeeper.quorum
slaver1,slaver2,slaver3
hbase.zookeeper.property.dataDir
/data/work/zookeeper
其中:

hbase.rootdir设置hbase在hdfs上的目录,主机名为hdfs的namenode节点所在的主机

hbase.cluster.distributed设置为true,表明是完全分布式的hbase集群

hbase.master设置hbase的master主机名和端口

hbase.zookeeper.quorum设置zookeeper的主机

3.修改conf/regionservers

将所有的datanode添加到这个文件,类似与hadoop中slaves文件

3. 修改所有hadoop的目录下的conf/hdfs-site.xml,添加

dfs.datanode.max.xcievers
4096
4.向所有slaver中复制hbase文件夹:
scp -r hbase hadoop@slaver1:/home/hadoop/hbase

如果出现:permission deny,

需要:

scp -r hbase root@slaver1:/home/hadoop/hbase

然后在每一台slaver上,sudo chown -R hadoop:hadoop hbase

三. Hbase验证

打开hbase

./start-hbase.sh

没有报java错误就可以,然后打开hadoop访问:

http://192.168.101.137:60010/master-status

勿需多试,这么简单的做完之后,我们就马上开始Hive!!

当然,如果你不放心,可以稍微的看一下hbase的基本结构,一句话描述就是列族内有键值对,键便是列,列可以插,列族也可以插。结构就是按行分多个hregion,hregion是一个以上列族组成,可以分布在不同的slaver上。然后再稍微看一下hbase的语法(盗链3个):

四. Hive的仙境之旅

我表示Hive这个东西我确实花了很久,因为中间有点事情磨蹭,没来得及做。

sudo tar -zxvf hbase-0.94.10.tar

sudo chown -R hadoop:hadoop hive

修改

hive-env.sh.template为hive-env.sh

添加:

export HADOOP_HOME=/home/hadoop/hadoop/hadoop

然后居然就结束了!!!!!

放心吧,对于一般的开发项目,Hive是绝对不能应付得来的!

六. 安装zookeeper

我用的zookeeper版本是:zookeeper-3.4.5.tar.gz

sudo tar -zxvf zookeeper-3.4.5.tar.gzsudo chown -R hadoop:hadoop zookeeper
在conf下复制zoo_sample.cfg为zoo.cfg。修改:

dataDir=/home/hadoop/zookeeper/temp

clientPort=3181

server.1=master:2888:3888

server.2=slaver1:2888:3888

server.3=slaver2:2888:3888

server.4=slaver3:2888:3888 

然后拷贝到每一台机器中:

scp -r zookeeper hadoop@slaver1:/home/hadoop/zookeeper

如果出现:permission deny

需要:

scp -r zookeeper root@slaver1:/home/hadoop/zookeeper

然后在每一台slaver上,

sudo chown -R hadoop:hadoop zookeeper

接下来在dataDir=/home/hadoop/zookeeper/temp 文件夹下新建myid文件。每一个填写要对应其server.x的数字,比如master主机是server.1,myid就要填写1 。

进入每一个bin目录分别 ./zkServer.sh start,zookeeper从这个版本开始之后就单点启动不报错了。会出现如下:

JMX enabled by default

Using config: /home/hadoop/zookeeper/zookeeper/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

当启动完所有节点的zookeeper,在任意机器上敲:./zkServer.sh status ,会出现如下:

JMX enabled by default

Using config: /home/hadoop/zookeeper/zookeeper/bin/../conf/zoo.cfg

Mode: follower

证明已经投完票确定各自角色了。

七. Java 直连接Hbase

用的是在win7/8环境下,使用ubuntu,Hbase内置zookeeper直连java。非常简单,首先修改本机windows的host文件,添加:

192.168.101.137 master

192.168.101.138 slaver1

192.168.101.139 slaver2

192.168.101.140 slaver3

然后使用修改所有节点的hbase hbase-site.xml文件

hbase.rootdir
hdfs://192.168.101.137:9000/home/hadoop/hadoop/temp
hbase.cluster.distributed
true
hbase.master
hdfs://192.168.101.137:60000
hbase.zookeeper.quorum
192.168.101.138,192.168.101.139,192.168.101.140,192.168.101.137
hbase.zookeeper.property.dataDir
hdfs://192.168.101.137:9000/home/hadoop/zookeeper/temp
hbase.zookeeper.sission.timeout
60000
hbase.zookeeper.property.clientPort
2181
hbase.regionserver.lease.period
60000
hbase.rpc.timeout
60000
新建JAVA项目,添加的包有:

有关Hadoop的hadoop-core-0.20.204.0.jar

有关Hbase的hbase-0.90.4.jar、hbase-0.90.4-tests.jar以及Hbase资源包中lib目录下的所有jar包

Configuration configuration = HBaseConfiguration.create();configuration.set("hbase.zookeeper.property.clientPort", "2181");configuration.set("hbase.rootdir","hdfs://192.168.101.137:9000/home/hadoop/hadoop/temp");configuration.set("hbase.zookeeper.property.dataDir","hdfs://192.168.101.137:9000/home/hadoop/zookeeper/temp");configuration.set("hbase.zookeeper.quorum","192.168.101.138,192.168.101.139,192.168.101.140");configuration.set("hbase.master", "192.168.101.137:60000");System.out.println("start create table ......");HBaseAdmin hBaseAdmin = new HBaseAdmin(configuration);if (hBaseAdmin.tableExists("firstTable")) {hBaseAdmin.disableTable("firstTable");hBaseAdmin.deleteTable("firstTable");System.out.println("firstTable" + " is exist,detele....");}HTableDescriptor tableDescriptor = new HTableDescriptor("firstTable");tableDescriptor.addFamily(new HColumnDescriptor("column1"));tableDescriptor.addFamily(new HColumnDescriptor("column2"));tableDescriptor.addFamily(new HColumnDescriptor("column3"));hBaseAdmin.createTable(tableDescriptor);System.out.println("end create table ......");hBaseAdmin.close();
成功之后查看是否已经建成表。

转载于:https://www.cnblogs.com/laodiao/p/3541487.html

你可能感兴趣的文章
BZOJ2216: [Poi2011]Lightning Conductor(DP 决策单调性)
查看>>
js 终止 forEach 循环
查看>>
js数组实现不重复插入数据
查看>>
vim配置
查看>>
VS 远程发布IIS
查看>>
基于winner 滤波平稳降噪效果
查看>>
Oracle_spatial的空间操作符介绍
查看>>
git分享(二)git checkout
查看>>
查看mysql语句运行时间
查看>>
start_kernel——mm_init_owner
查看>>
剑指 offer set 24 扑克牌的顺子
查看>>
纪念逝去的岁月——C/C++字符串反转
查看>>
Cocos2dx3.4 VS2013无法打开包括文件extensions/ExtensionExport.h解决的方法
查看>>
【原】数据分析/数据挖掘 入门级选手建议
查看>>
jquery.validate ajax提交
查看>>
Mybatis配置返回为修改影响条数
查看>>
SharePoint中List的大Version和小Version的区别
查看>>
初学者学Java(十五)
查看>>
《富爸爸 辞职创业前的10堂课》文摘
查看>>
[转] 常用SQL查询语句
查看>>