HBase自学笔记.docx
- 文档编号:13281988
- 上传时间:2023-06-12
- 格式:DOCX
- 页数:37
- 大小:543.03KB
HBase自学笔记.docx
《HBase自学笔记.docx》由会员分享,可在线阅读,更多相关《HBase自学笔记.docx(37页珍藏版)》请在冰点文库上搜索。
HBase自学笔记
Hadoop与HBase自学笔记
1、安装jdk
安装eclipse时已经提过,这里略,使用jdk1.6.0_12版本。
2、安装Cygwin以及相关服务
2.1安装Cygwin
cygwin是一个在windows平台上运行的unix模拟环境。
在安装Cygwin之前,得先下载Cygwin安装程序setup.exe。
选择installfrominternet,点next,
默认设置,点next
这里自己选择一个目录。
选择直接连接
然后Add镜像,
点Add
(如果这个镜像下载不了,那就选择163那个吧,我一开始可以,重装就不可以,真奇怪。
)
点下一步
默认是defaul,进入“SelectPackages”对话框后,必须保证“NetCategory”下的“OpenSSL”被安装。
点下一步,
另外,在eclipse上编译Hadoop,还必须安装“BaseCategory”下的“sed”,如
另外,还建议将“EditorsCategory”下的vim安装,以方便在Cygwin上直接修改配置
文件;“DevelCategory”下的subversion建议安装,
点击完成,开始安装
安装完成后,点击完成,至此,cygwin安装完成。
2.2配置环境变量
需要配置的环境变量包括PATH和JAVA_HOME:
JAVA_HOME指向JRE安装目录;JDK
的bin目录。
此外,Cygwin的bin目录,以及Cygwin的usr\sbin目录都必须添加到PATH环境变量中
在path变量增加
C:
\cygwin\bin;C:
\cygwin\usr\sbin
这串字符串即可(默认先前已经配好jdk环境变量,否则,要增加jdk环境变量)
2.3安装sshd服务
点击桌面上的Cygwin图标,启动Cygwin,执行ssh-host-config命令
在执行ssh-host-config时,会要求Shouldprivilegeseparationbeused?
(yes/no),输入yes/no时,选择输入no,当要求Doyouwanttoinstallsshdasaservice?
选择yes
当要求EnterthevalueofCYGWINforthedaemon:
[],输入ntsec
当看到“Havefun”时,一般表示sshd服务安装成功了,如上图所示。
接下来,需要启
动sshd服务。
2.4启动sshd服务
在windows服务里,启动sshd服务,服务名为CYGWINsshd
如果提示启动失败
则
在C:
/cygwin/etc/passwd文件末尾增加一行
sshd:
x:
74:
74:
Privilege-separatedSSH:
/var/empty/sshd:
/sbin/nologin
当CYGWINsshd的状态为“已启动”后,接下来就是配置ssh登录。
2.5配置ssh登录
执行ssh-keygen命令生成密钥文件
在上图所示对话框中,需要输入时,直接按回车键即可,如果不出错,应当是需要三次
按回车键。
接下来生成authorized_keys文件,按下图所示操作即可
完成上述操作后,执行exit命令先退出Cygwin窗口,如果不执行这一步操作,下面的
操作可能会遇到错误。
接下来,重新运行Cygwin,执行sshlocalhost命令,在第一次执行ssh
localhost时,会有如下图所示的提示,输入yes,然后回车即可:
如果是Windows域用户,这步操作可能会遇到问题,错误信息如下:
。
这个错误暂无解决办法,问题的解决情况,可关注Hadoop技术论坛中的贴:
1.7.1版本ssh问题)。
否则,如果成功,
执行who命令时,可以看到如下图所示的信息:
至此,配置ssh登录成功,下面就可以开始安装hadoop了。
3、安装hadoop
hadoop安装包下载地址:
将hadoop安装包hadoop-0.20.1.tar.gz解压到E:
\HSS\hadoop-0.20.1目录(可以修改成其它目录)下,
接下来,需要修改hadoop的配置文件,它们位于conf子目录下,分别是hadoop-env.sh、
core-site.xml、hdfs-site.xml和mapred-site.xml共四个文件。
在Cygwin环境,masters和slaves两个文件不需要修改。
3.1修改hadoop-env.sh
只需要将JAVA_HOME修改成JDK的安装目录即可,请注意JDK必须是1.6或以上版本。
exportJAVA_HOME=C:
/Java/jdk1.6.0_12
注意路径要反斜杠或者双斜杠,因为是要在cygwin那里运行的.
3.2修改core-site.xml
为简化core-site.xml配置,将E:
\HSS\hadoop\run\src\core目录下的core-default.xml文件复制
到E:
\HSS\hadoop-0.20.1\conf目录下,并将core-default.xml文件名改成core-site.xml。
修改
fs.default.name的值,如下所示
hdfs:
//localhost:
8888
上图中的端口号8888,可以改成其它未被占用的端口。
同时还要修改这个值
3.3修改hdfs-site.xml
为简化hdfs-site.xml配置,将E:
\HSS\hadoop-0.20.1\src\hdfs目录下的hdfs-default.xml文件复制到E:
\HSS\hadoop-0.20.1\conf目录下,并将hdfs-default.xml文件名改成hdfs-site.xml。
不需要再做其它修改。
3.4修改mapred-site.xml
为简化mapred-site.xml配置,将E:
\HSS\hadoop-0.20.1\src\mapred目录下的mapred-default.xml
文件复制到E:
\HSS\hadoop-0.20.1\conf目录下,并将mapred-default.xml文件名改成mapred-site.xml。
上图中的端口号9999,可以改成其它未被占用的端口。
到这里,hadoop宣告安装完毕,
可以开始体验hadoop了!
3.5启动hadoop
在Cygwin中,进入hadoop的bin目录,
cd/cygdrive/E/HSS/hadoop-0.20.1/bin
先format文件
输入./hadoopnamenode-format
运行./start-all.sh启动hadoop,
(关闭是用./stop-all.sh)
在启动成功之后,输入jps命令,有三个任务显示,则表示启动成功了。
可以执行./hadoopfs-ls/命令,查看hadoop的根目录,
至此,hadoop安装完毕。
4、安装HBase
4.1HBase介绍
HBase是Hadoop的正式子项目,它是一个面向列的分布式数据库,它在存储数据结构上并非关系型,而是疏松分布式的,持久并按多维排序并索引的map型,其思想源于Google的BigTable论文。
(GoogleBigTable的paper:
由于HBase是一个分布式、大规模的平台,主要安装在类Unix平台上。
但是由于其开发语言是Java,因此它同样具有跨平台的特性,同样也可以安装在Windows操作系统上。
为了方便起见,使用具有类Unix特性的Cygwin来安装HBase。
4.2下载与配置HBase
下载后解压到目录,比如E:
\HSS\hbase-0.90.5
然后在E:
\HSS\hbase-0.90.5文件夹下建立tmp文件夹,再在tmp文件夹里建立hbase文件夹,在hbase里建好tmp和data文件夹
(以后配置时需要用到)
4.2.1配置hbase-env.sh
打开E:
\HSS\hbase-0.90.5\conf下的hbase-env.sh文件,
修改jdk路径以及新增一记录
exportHBASE_IDENT_STRING=127.0.0.1
4.2.2修改hbase-site.xml文件
修改同目录下的hbase-site.xml
内容为:
--
//localhost:
9900/hbase-->
///E:
/HSS/hbase-0.90.5/tmp/hbase/data
/HSS/hbase-0.90.5/tmp/hbase/tmp
如图:
4.3Cygwin终端设置
先打开Cygwin终端
对一些文件和文件夹赋权
Administrator@Liangbinny/etc
$chmod+rpasswd
Administrator@Liangbinny/etc
$chmodu+wpasswd
Administrator@Liangbinny/etc
$chmod+rgroup
Administrator@Liangbinny/etc
$chmodu+wgroup
Administrator@Liangbinny/etc
$chmod755/var
如图:
然后ssh登录
4.4启动hbase
先cd/cygdrive/E/HSS/hbase-0.90.5
执行
./bin/start-hbase.sh
命令
启动hbase
提示时输入Yes
4.5进入shell
执行
./bin/hbaseshell
进入shell
4.6建表与插数据
执行建表与插记录,
create'test','data'
put'test','row1','data:
1','value1'
put'test','row2','data:
2','value2'
put'test','row3','data:
3','value3'
插入数据完毕,可以用
scan'test'
查看刚才插入的数据
至此,Hbase安装完毕。
5、HBase数据库
参考网址
5.1数据类型
HBase数据被建模为多维映射,其中值(表单元)通过4个键索引:
value=Map(TableName,RowKey,ColumnKey,Timestamp)
其中:
TableName是一个字符串。
是表名。
RowKey和ColumnKey是二进制值(Java类型byte[])。
代表行健和列族。
Timestamp是一个64位整数(Java类型long)。
value是一个未解释的字节数组(Java™类型byte[])。
二进制数据被编码为Base64,以便通过网络传输。
行键是表的主键,通常是一个字符串。
行通过行键按字典顺序排序。
存储在表中的信息的结构为列族(columnfamily,就相当于列名),您可以将这种结构视为类别。
每个列族可以拥有任意数量的成员,它们通过标签(或修饰符)识别。
column键(就是每列的值)由族名、:
号和标签组成。
例如,对于系列name和成员first,列键为name:
first。
(这里不是很好理解,看了下面的图可能就比较容易理解了,这个跟数据库有区分,可见,这里一行,不代表就一组数据,往往是多组数据的,一个rowkey可能对应多列的值,而每列的值(可以视为columnkey)是由列族名:
标签组成),又如,name:
last也是一个成员,他们都在于00001行键上,是00001行键的成员,成员值,就是value。
一个HBase表模式定义多个列族,但当您向表中插入一行时,应用程序能够在运行时创建新成员。
对于一个列族,表中的不同行可以拥有不同数量的成员。
换句话说,HBase支持一个动态模式模型。
参考下图更好理解
其实这些记录在hbase是根据TimeStamp排序的,所以这虽然上图看起来很工整,但是实际上载数据库里存放是凌乱的。
000001和000002的成员交错着放,唯一定义一个成员的唯一值的行键+列族:
标签。
以第一个成员为例:
000001是行键,列族是name和contact,列键(column键)是name:
first和name:
last和contact:
http,Value值就是Jeffrey和Dean,还有
如果具体到java代码而言
HTabletable=newHTable(conf,tablename);
Scans=newScan();
ResultScannerrs=table.getScanner(s);
for(Resultr:
rs){
KeyValue[]kv=r.raw();
for(inti=0;i vo=newHBaseVO(); vo.setRow(newString(kv[i].getRow())); vo.setFamily(newString(kv[i].getFamily())); vo.setQualifier(newString(kv[i].getQualifier())); vo.setTimestamp(kv[i].getTimestamp()); vo.setValue(newString(kv[i].getValue())); list.add(vo); } } 这样取数,rs里是有两条记录的,000001和000002,每一个rowKey可以对应多个成员,所以kv数据存放的是成员值,kv[i].getRow()得到的是每个成员的rowKey(000001.。 。 ),Family就是列族,对于第一条记录,kv[0]的family是contact,kv[1],kv[2]是name,Qualifier这个单词比较少见,其实就是标签,对应kv[0]的标签是http,kv[1]是first,kv[2]是last,Timestamp是时间族,这个最简单不过,略,value也是每个成员的值,这个也很好理解,略。 对于任意行,一次只能访问一个列族的一个成员(这与关系数据库不同,在关系数据库中,一个查询可以访问来自一个行中的多个列的单元)。 您可以将一个行中的一个列族的成员视为子行。 (这个是因为一行可以对应多组成员所定,跟数据库最大的不同在于此吧) 表被分解为多个表区域,等同于Bigtable片(tablet)。 一个区域包含某个范围中的行。 将一个表分解为多个区域是高效处理大型表的关键机制。 5.2HBase语法教程 参考: http: //wiki.apache.org/hadoop/Hbase/Shell 如list显示所有的表,describe描述表 如list 非常详细 6、eclipse下开发hbase API说明网址 http: //www.open- 先将E: \HSS\hbase-0.90.5\conf下的hbase-site.xml文件拷贝到工程下的src\main\resource目录 然后将E: \HSS\hbase-0.90.5下的hbase-0.90.5.jar包加入到项目中 新建接口 packagecom.hsbc.hss.dao; publicinterfaceBaseDAO{ } 新建工具类 packagecom.hsbc.hss.util; importorg.apache.hadoop.hbase.KeyValue; importcom.hsbc.hss.vo.HBaseVO; publicclassCommonUtil{ publicstaticHBaseVOchangeKeyValueToHBaseVo(KeyValuekeyValue){ HBaseVOvo=newHBaseVO(); vo.setRow(newString(keyValue.getRow())); vo.setFamily(newString(keyValue.getFamily())); vo.setQualifier(newString(keyValue.getQualifier())); vo.setTimestamp(keyValue.getTimestamp()); vo.setValue(newString(keyValue.getValue())); returnvo; } } 新建基本类HBaseVO(以后新对象可直接继承这个类) /** * * *做hbase查询,首先要对hbase的数据结果比较了解,以下是解释 * *HBase数据被建模为多维映射,其中值(表单元)通过4个键索引: * *value=Map(TableName,RowKey,ColumnKey,Timestamp) * *其中: *TableName是一个字符串。 是表名。 *RowKey和ColumnKey是二进制值(Java类型byte[])。 代表行健和列族。 *Timestamp是一个64位整数(Java类型long)。 *value是一个未解释的字节数组(Java? 类型byte[])。 *二进制数据被编码为Base64,以便通过网络传输。 * * *行键是表的主键,通常是一个字符串。 行通过行键按字典顺序排序。 * *存储在表中的信息的结构为列族(columnfamily,就相当于列名),您可以将这种结构视为类别。 每个列族可以拥有任意数量的成员,它们通过标签(或修饰符)识别。 column键(就是每列的值)由族名、: 号和标签组成。 例如,对于系列name和成员first,列键为name: first。 * *这个跟数据库有区分,可见,这里一行,不代表就一组数据,往往是多组数据的,一个rowkey可能对应多列的值,而每列的值(可以视为columnkey)是由列族名: 标签组成),又如,name: last也是一个成员,他们都在于00001行键上,是00001行键的成员,成员值,就是value。 * * * */ packagecom.hsbc.hss.dao.impl; importjava.io.IOException; importjava.util.ArrayList; importjava.util.List; importorg.apache.hadoop.conf.Configuration; importorg.apache.hadoop.hbase.HBaseConfiguration; importorg.apache.hadoop.hbase.HColumnDescriptor; importorg.apache.hadoop.hbase.HTableDescriptor; importorg.apache.hadoop.hbase.KeyValue; importorg.apache.hadoop.hbase.MasterNotRunningException; importorg.apache.hadoop.hbase.ZooKeeperConnectionException; importorg.apache.hadoop.hbase.client.Delete; importorg.apache.hadoop.hbase.client.Get; importorg.apache.hadoop.hbase.client.HBaseAdmin; importorg.apache.hadoop.hbase.client.HTable; importorg.apache.hadoop.hbase.client.Put; importorg.apache.hadoop.hbase.client.Result; importorg.apache.hadoop.hbase.client.ResultScanner; importorg.apache.hadoop.hbase.client.Scan; importorg.apache.hadoop.hbase.filter.CompareFilter.CompareOp; importorg.apache.hadoop.hbase.filter.FilterList; importorg.apache.hadoop.hbase.filter.SingleColumnValueFilter; importorg.apac
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- HBase 自学 笔记