壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3244|回复: 12

[其他] [分享知识 原创连载]谁说菜鸟不会HBase,分享自己由浅到深、循序渐进学习HBase的过程

[复制链接]
发表于 2013/7/27 18:52:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
个人简介:我工作两年,一直从事数据仓库的开发工作,工作中由于处理的数据量较大,会用到hadoop、hive,后续想由浅到深的学习hbase。
连载主题谁说菜鸟不会hbase
发布计划
:首次发布计划:详细讲述hbase开发环境的搭建
更新周期:1~2周
本连载的亮点是
分享自己由浅到深、循序渐进的学习hbase的整个过程
其他要说的话
:每一个hbase大神都是从菜鸟开始的,自己也想成为hbase大神吗?跟着我的脚步,向hbase神坛进发,Follow me!!!

本帖被以下淘专辑推荐:

 楼主| 发表于 2013/7/27 20:46:55 | 显示全部楼层

开篇

本帖最后由 zhangyongni888 于 2013/7/28 12:22 编辑

在进行hbase分享之前,先对hbase进行一个简单的介绍:
简介
HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。下图描述Hadoop EcoSystem中的各层系统其中,HBase位于结构化存储层,Hadoop HDFS为HBase提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制。
  
此外,Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。 Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。
hbase.jpg
    后续进行分享连载有一个大的脉络,分享的内容都会是《hbase权威指南》中学习到的内容,所以分享的脉络和《hbase权威指南》该书的章节一一对应。下面是分享的章节说明:
第一章:介绍
第二章:安装
第三章:基本的客户端API
第四章:客户端API的高级特征
第五章:客户端API:管理特称
第六章:可用的客户端
第七章:MapReduce结合
第八章:体系结构
第九章:高级用法
第十章:集群监控
第十一章:性能调整
第十二章:集群管理

如果想对hadoop深入了解:“数据中国大讲坛”欢迎您,hadoop视频讲座: http://www.db365.net/forum.php?mod=viewthread&tid=1837

点评

不懂的飘过,希望看过你的连载,让我这个门外汉也懂点!  发表于 2013/7/27 23:46
你这个连载内容很丰富,希望你能够坚持下来;  发表于 2013/7/27 21:11

评分

参与人数 1努力值 +100 收起 理由
纵横四海 + 100 赞一个!

查看全部评分

发表于 2013/7/28 08:00:41 | 显示全部楼层
请问HBase 和 Hadoop之间是什么关系?和大数据又是什么关系?
 楼主| 发表于 2013/7/28 10:35:45 | 显示全部楼层
纵横四海 发表于 2013/7/28 08:00
请问HBase 和 Hadoop之间是什么关系?和大数据又是什么关系?

hadoop是一个开源的分布式存储与计算系统,hadoop的hdfs(Hadoop Distributed File System)是一个分布式存储系统,支持海量数据的存储(理论上可以支持任意大的数据量的存储,PB级别以上,可以进行线性扩充容量与计算能力(只需要增加机器就可以扩充存储与计算能力),hadoop的map/reduce用来对存储的数据进行计算。hadoop是大数据的存储与计算的一种解决方案。hadoop有一个缺陷(也不能算作缺陷)是,对数据的存储与计算需要去写map/reduce程序(hadoop提供的对外编程接口),虽然对各种语言都提供编程接口,但还是不是很方便。hadoop之后,facebook开发了hive,之后将其开源,hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。hive支持sql,底层通过将sql转换成map/recuce程序,从而降低了用户的学习成本。但hive也有缺陷,不支持数据的点更新(想更新某一行,hive不支持),查询的响应时间在分钟级别,所以不支持线上的需要快速做出响应的系统。HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,其底层的存储与计算也是依赖于hadoop。hbase是一种nosql数据库,不支持sql,因为底层都是hadoop,所以支持大数据量的存储,hbase在hdfs之上定义了自己的数据结构,数据的存储与查询都是实时的,快速响应的,支持线上业务数据的存储、更新、查询。

综上所述,hadoop是一种大数据存储与计算的解决方案,在其之上,又有很多针对于不同种类需求的解决方案的产生。hive支持sql,通过写sql语句,就可以对数据进行存储与计算,降低了学习成本,缺陷是:不支持数据的点更新、响应速度为分钟级别,不支持需要实时响应系统,因为数据仓库中的数据不需要实时响应,所以一般用来做数据仓库数据的存储、计算。hbase是一种基于hadoop实时响应的数据库,支持数据的点更新、查询、存储,不支持sql,是一种nosql类型的数据库,可以用来做线上应用数据的存储,也可以用来做对hive中的数据进行点更新。

点评

很有意思;  发表于 2013/7/28 11:03
感谢分享;学习了  发表于 2013/7/28 10:57

评分

参与人数 1努力值 +200 收起 理由
纵横四海 + 200 很给力!

查看全部评分

 楼主| 发表于 2013/8/12 08:24:51 | 显示全部楼层
最近工作忙,更新周期延长,计划2013-08-18日晚更新第一章节hbase的介绍,敬请期待!如果想对hbase快速入门的朋友请查看资料《HBase 官方文档-中文翻译》

HBase_官方文档-中文翻译-leonarding.pdf

4.84 MB, 下载次数: 0, 下载积分: 努力值 -5 点

点评

节选自: http://wenku.baidu.com/view/acfb028aa0116c175f0e482d.html  发表于 2013/8/19 06:23
好的;期待你的好文;  发表于 2013/8/12 11:59
 楼主| 发表于 2013/8/19 00:38:42 | 显示全部楼层
第一章:介绍
在我们开始介绍hbase之前,先停下来考虑下为什么我们需要另外一种存储架构。 rdbms 关系型数据库管理系统从70年代初期,帮助无数企业公司解决了问题,直到今天依然相当有用。有一些场景关系型模型非常有用,但是也有些特定的问题并不太适合使用关系型数据库。
大数据的黎明
我们生活在一个时代,在那里,我们都连接在互联网上,期望实时的获取到结果,我们关心的问题是最好的火鸡配方或在妈妈的生日为她买什么样的礼物。我们还期望结果是有用的,适合我们的需求。
正因为如此,很多公司已成为专注于提供更有针对性的信息,例如有针对性的推荐或网上广告,他们这样做的能力直接影响其作为一个企业的成功。像Hadoop这样的系统有能力收集和处理PB级别的数据,并且收集持续增加的更多数据。
以前很多公司自由地忽略某些数据源,因为存储所有信息没有效益,然而他们现在可能已经失去了竞争力。现在越来越需要存储和分析每一个产生数据点。让分析的结果直接应用到他们的电子商务平台上。
在过去,保留所有收集到的数据的唯一选择是修剪它,例如,保留过去N天的数据。虽然这是一个在短期内可行的方法,但是它缺乏所有的数据.。

谷歌或亚马逊在实现数据的价值的公司中作为领头羊,他们已经开发了满足他们需求的解决方案。例如,在一系列技术出版物中,谷歌描述一个基于廉价硬件可扩展的存储和处理系统。谷歌的大数据解决方案的论文发表后,被谷歌之外的人实现,成为了开源的Hadoop项目的一部分:HDFS和MapReduce。Hadoop适合存储半结构化或非结构化的数据,因为它让你在任何时候都可以自己来决定如何解释数据,允许你在任何时候改变数据的分类方式:一旦你已经更新了算法,你只需简单的再次运行分析。
待续...
 楼主| 发表于 2013/9/9 00:49:15 | 显示全部楼层
hadoop的安装

1.       安装redhat
1)         安装2台虚拟机,一个为master,一个slave
1.png
2)         修改启动级别为3,默认控制台登陆
2.png
设置hosts:修改/etc/hosts
192.168.1.103 master
192.168.1.102 slave
2.       master无密码登陆slave
2.1   Master slave生成公钥、密钥:
执行: ssh-keygen    回车到底
2.2 master上公钥复制到slave上:
slave.ssh目录下建立 authorized_keys文件,复制masterid_rsa.pub文件内容到authorized_keys
3.       安装java
3.1. java安装包上传到masterslave
redhat安装好后,默认会安装sshd服务,安装。安装secureFx,建立会话
3.png
4.png
上传文件到masterslave上,安装jdk
使用secureCRT远程连接到master
5.png
上传jdkmaster
rz –y  (如果这种方式长传出错,则使用secureFX进行文件上传)
3.2 解压:
tar –zxvf jdk-7u25-linux-i586.tar.gz
复制jdkslave
scp jdk-7u25-linux-i586.tar.gz  slave:/root/
解压之后,执行java --version可能会遇到这个错误:
Error: dl failure on line 864
Error: failed /usr/jdk/jdk1.7.0_05/jre/lib/i386/client/libjvm.so, because /usr/jdk/jdk1.7.0_05/jre/lib/i386/client/libjvm.so: cannot restore segment prot after reloc: Permission denied
执行下面语句可解决:
setenforce 0
3.3 设置环境变量:JAVA_HOMEPATH
vi /etc/profile
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/binPATH
source  /etc/profile
3.4 验证java安装正确:
执行:java
显示:
6.png
4.       配置hadoop(1.2版本)
4.1.配置hadoop使用的JAVA_HOME,修改conf/hadoop-env.sh
JAVA_HOME=$JAVA_HOME
export JAVA_HOME
4.2.配置hdfs:修改conf/core-site.xml
<configuration>
<property>
     <name>hadoop.tmp.dir</name>
     <value>/usr/local/hadoop/tmp/hadoop-${user.name}</value>
     <description>A base for other temporarydirectories.</description>
   </property>
   <property>
     <name>fs.default.name</name>
     <value>hdfs://master:9000</value>
     <description>The name of the default file system.  A URI whose
     scheme and authority determine the FileSystem implementation.  The
     uri's scheme determines the config property (fs.SCHEME.impl) naming
     the FileSystem implementation class.  The uri's authority is used to
     determine the host, port, etc. for a filesystem.
     </description>
   </property>
</configuration>
4.3.配置hdfs副本数:修改hdfs-site.xml
<configuration>
<property>
     <name>dfs.replication</name>
     <value>2</value>
     <description>Default block replication.
     The actual number of replications can be specified when the file iscreated.
     The default is used if replication is not specified in create time.
     </description>
   </property>
</configuration>
4.4.配置jobtracker地址:修改 mapred-site.xml
<configuration>
<property>
     <name>mapred.job.tracker</name>
     <value>master:9001</value>
     <description>The host and port that the MapReduce job trackerruns
     at.  If "local", then jobs are run in-process as a singlemap
     and reduce task.
     </description>
</property>
</configuration>
4.5.配置secondary namenode:修改 masters
Master
4.6.配置slave:修改slaves
master
slave
4.7.配置HADOOP_HOME
Vi /ect/profile
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
HADOOP_HOME=/usr/local/hadoop
export JAVA_HOME PATH HADOOP_HOME
4.8格式化文件系统
hadoop namenode –format
4.9.启动集群
7.png
Master上执行:jps,看到如下图所示:
master上运行了NameNodeDataNodeJobTrackerTaskTrackerSecondaryNameNode
8.png
Slave上执行:jps,看到如下图所示:
9.png
4.10.查看hadoopjobtracker地址:
http://192.168.1.103:50030/jobtracker.jsp
如果不能直接打开,可能是防火墙的问题,需要在master上开启50030端口
10.png
Vi  /etc/sysconfig/iptables
添加:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50030 -j ACCEPT
是防火墙生效:
iptables-restore <  /etc/sysconfig/iptables
4.11.查看hdfsweb地址:如果直接查看不了,确定是否是防火墙未开启,才处理方法同上。
http://192.168.1.103:50070/dfshealth.jsp
Hadoop安装成功。
注:本次hadoop的安装用例,没有涉及到mapreduce任务槽的设置、hadoop调度器的设置、hdfs容量的配置、hdfs块的配置等,只是作为测试使用,用于生产,还需上面及其他参数进行设计,对hadoop集群进行调优。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/28 22:30 , Processed in 0.046108 second(s), 22 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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