设为首页 收藏本站
查看: 549|回复: 0

[经验分享] [hadoop实战3]Hbase安装

[复制链接]
累计签到:8 天
连续签到:1 天
发表于 2015-7-13 08:26:46 | 显示全部楼层 |阅读模式
  一. 名词解释
  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.tar
sudo 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_25
export HBASE_MANAGES_ZK=true
export HBASE_HOME=/home/hadoop/hbase/hbase
export HADOOP_HOME=/home/hadoop/hadoop/hadoop
export 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个):
  http://jiajun.iteye.com/blog/899632
  http://blog.iyunv.com/freelongren/article/details/7842495
  http://blog.iyunv.com/scutshuxue/article/details/6988348
  四. 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.gz
sudo 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();成功之后查看是否已经建成表。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-85935-1-1.html 上篇帖子: html调用hadoop WebHDFS REST API 下篇帖子: Hadoop相关的考题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表