非关系型大数据库大作业.docx

上传人:b****2 文档编号:2131172 上传时间:2023-05-02 格式:DOCX 页数:31 大小:1.25MB
下载 相关 举报
非关系型大数据库大作业.docx_第1页
第1页 / 共31页
非关系型大数据库大作业.docx_第2页
第2页 / 共31页
非关系型大数据库大作业.docx_第3页
第3页 / 共31页
非关系型大数据库大作业.docx_第4页
第4页 / 共31页
非关系型大数据库大作业.docx_第5页
第5页 / 共31页
非关系型大数据库大作业.docx_第6页
第6页 / 共31页
非关系型大数据库大作业.docx_第7页
第7页 / 共31页
非关系型大数据库大作业.docx_第8页
第8页 / 共31页
非关系型大数据库大作业.docx_第9页
第9页 / 共31页
非关系型大数据库大作业.docx_第10页
第10页 / 共31页
非关系型大数据库大作业.docx_第11页
第11页 / 共31页
非关系型大数据库大作业.docx_第12页
第12页 / 共31页
非关系型大数据库大作业.docx_第13页
第13页 / 共31页
非关系型大数据库大作业.docx_第14页
第14页 / 共31页
非关系型大数据库大作业.docx_第15页
第15页 / 共31页
非关系型大数据库大作业.docx_第16页
第16页 / 共31页
非关系型大数据库大作业.docx_第17页
第17页 / 共31页
非关系型大数据库大作业.docx_第18页
第18页 / 共31页
非关系型大数据库大作业.docx_第19页
第19页 / 共31页
非关系型大数据库大作业.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

非关系型大数据库大作业.docx

《非关系型大数据库大作业.docx》由会员分享,可在线阅读,更多相关《非关系型大数据库大作业.docx(31页珍藏版)》请在冰点文库上搜索。

非关系型大数据库大作业.docx

非关系型大数据库大作业

实验三HBase环境搭建、sehll操作及JavaAPI编程

实验步骤:

1.搭建Zookeeper和HBase

1.ntp时间同步服务器搭建与使用

安装ntp服务端(master)

#apt-getinstallntp

启动ntp服务

#/etc/init.d/ntpstart

修改配置文件

#vim/etc/ntp.conf

修改容如下:

重启ntp服务

#/etc/init.d/ntprestart

1.2安装ntp客户端(slaver1、slaver2)

使用ntpdate命令,如果不存在这个命令,则先安装apt-getinstallntp

同步服务器时间

#/usr/sbin/ntpdate10.49.85.172

设置定时同步

#vim/etc/crontab

1.3ulimit和nproc设置(集群均配置)

HBase是数据库,会在同一时间使用很多的文件句柄。

大多数Ubuntu系统使用的默认值1024是不能满足的,所以你需要修改你的最大文件句柄限制。

可以设置到10k.你还需要修改hbase用户的nproc,如果过低会造成OutOfMemoryError异常。

需要澄清的,这两个设置是针对操作系统的,不是Hbase本身的。

有一个常见的错误是Hbase运行的用户,和设置最大值的用户不是一个用户。

在Hbase启动的时候,第一行日志会现在ulimit信息,所以你最好检查一下。

1)修改limits.conf文件

#vim/etc/security/limits.conf

添加如下容:

2)修改common-session文件

#vim/etc/pam.d/common-session

添加如下容:

重启系统

1.4Zookeeper集群环境安装过程详解

1)解压zookeeper

tarzxvfzookeeper-3.4.5.tar.gz

2)修改zoo.cfg配置文件

进入到zookeeper的conf目录下将zoo_sample.cfg文件拷贝一份,命名为为zoo.cfg

vimzoo.cfg

修改容如下:

配置文件中"server.id=host:

port:

port"中的第一个port是从机器(follower)连接到主机器(leader)的端口号,第二个port是进行leadership选举的端口号。

接下来在dataDir所指定的目录下创建一个文件名为myid的文件,文件中的容只有一行,为本主机对应的id值,也就是上图中server.id中的id。

例如:

在服务器1中的myid的容应该写入1,在服务器2中的myid的容应该写入2,在服务器3中的myid的容应该写入3。

3)同时创建log目录

#mkdirlog

4)修改环境变量

#vim/etc/profile

#source/etc/profile

#scp-r/root/zookeeper-3.4.5/cc-slaver1:

/root/

#scp-r/root/zookeeper-3.4..5/cc-slaver2:

/root/

在对应slaver节点同时修改profile文件,添加

exportZOOKEEPER_HOME=/root/zookeeper-3.4.5

exportCLASSPATH=.:

${ZOOKEEPER_HOME}/lib:

$CLASSPATH

exportPATH=${ZOOKEEPER_HOME}/bin:

${ZOOKEEPER_HOME}/conf:

$PATH

同时:

在slaver1节点中

#pwd

/soft/zookeeper

#mkdirdata

#echo"2">myid

在slaver2节点中

#pwd

/soft/zookeeper

#mkdirdata

#echo"3">myid

1.5启动zookeeper集群

在ZooKeeper集群的每个结点上,执行启动ZooKeeper服务的脚本:

#zkServer.shstart

如下图所示:

其中,QuorumPeerMain是zookeeper进程,启动正常。

出现错误可以通过

#tail-f/soft/zookeeper/zookeeper.out

如上依次启动了所有机器上的Zookeeper之后可以通过ZooKeeper的脚本来查看启动状态,包括集群中各个结点的角色(或是Leader,或是Follower),如下所示,是在ZooKeeper集群中的每个结点上查询的结果:

通过上面状态查询结果可见,cc-slaver1是集群的Leader,其余的两个结点是Follower。

另外,可以通过客户端脚本,连接到ZooKeeper集群上。

对于客户端来说,ZooKeeper是一个整体(ensemble),连接到ZooKeeper集群实际上感觉在独享整个集群的服务,所以,你可以在任何一个结点上建立到服务集群的连接,例如:

#zkCli.sh-servercc-slaver2:

2181

1.6停止zookeeper进程

在ZooKeeper集群的每个结点上,执行停止ZooKeeper服务的脚本:

#zkServer.shstop

至此,Zookeeper集群安装完成。

1.7HBase的安装和配置

#tar-zxvfhbase-1.2.4.tar.gz

1)配置conf/hbase-env.sh

修改容如下:

一个分布式运行的Hbase依赖一个zookeeper集群。

所有的节点和客户端都必须能够访问zookeeper。

默认的情况下Hbase会管理一个zookeep集群,即Hbase默认自带一个zookeep集群。

这个集群会随着Hbase的启动而启动。

而在实际的商业项目常自己管理一个zookeeper集群更便于优化配置提高集群工作效率,但需要配置Hbase。

需要修改conf/hbase-env.sh里面的HBASE_MANAGES_ZK来切换。

这个值默认是true的,作用是让Hbase启动的时候同时也启动zookeeper.在本实验中,我们采用独立运行zookeeper集群的方式,故将其属性值改为false。

2)配置conf/hbase-site.xml

配置如下:

hbase.rootdir

hdfs:

//10.49.85.172:

9000/hbase

hbase.master

hdfs:

//10.49.85.172:

60000

hbase.master.info.port

60010

hbase.regionserver.info.port

60030

hbase.zookeeper.property.dataDir

file:

/root/zookeeper-3.4.5/data

hbase.cluster.distributed

true

hbase.zookeeper.quorum

cc-master,cc-slaver1,cc-slaver2

3)配置conf/regionservers

写入:

cc-slaver1、cc-slaver2

在这里列出了你希望运行的全部HRegionServer,一行写一个host(就像Hadoop里面的slaver一样).列在这里的server会随着集群的启动而启动,集群的停止而停止。

4)hadoop配置文件拷入

#cp~/hadoop-2.6.5/etc/hadoop/hdfs-site.xml~/hbase-1.2.4/conf

#cp~/hadoop-2.6.5/etc/hadoop/core-site.xml~/hbase-1.2.4/conf

5)分发hbase

#scp-r/root/hbase-1.2.4cc-slaver1:

/root

#scp-r/root/hbase-1.2.4cc-slaver2:

/root

配置环境变量

#vim/etc/profile

在末尾添加如下容

6)运行和测试

在master上执行:

(1)#start-all.sh

(2)#zkServer.shstart(各个节点均执行)

(3)#start-hbase.sh(涵盖web管理界面的启动)

使用jps查看进程

通过浏览器查看60010,60030端口查看

10.49.85.172:

60010/

浏览器主节点信息

7)多节点启动HMaster

#hbase-daemon.shstartmaster

在其他子节点同时启动HMaster

可以做等待备份作用;

2.使用HBaseshell命令进行表的创建,增加删除修改操作。

Hbase脚本

启动:

hbase shell

创建表

在member表中添加几条数据

修改表数据

删除数据

3使用JavaAPI进行表的创建,增加删除修改操作。

向表中添加数据:

更新表updateTable:

删除所有列deleteAllColumn:

删除列deleteColumn:

删除表deleteTable:

删除所有表getAllTables:

获取结果getResult:

获取某一列的值getResultByColumn:

查询某列的多版本getResultByVersion:

遍历查询getResultByScann:

具体代码如下:

importjava.io.IOException;

importjava.util.ArrayList;

importjava.util.List;

importorg.apache.hadoop.conf.Configuration;

importorg.apache.hadoop.hbase.Cell;

importorg.apache.hadoop.hbase.CellUtil;

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.TableName;

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.util.Bytes;

publicclassHbase{

//声明静态配置

staticConfigurationconf=null;

static{

conf=HBaseConfiguration.create();

conf.set("hadoop.home.dir","hdfs:

//10.49.85.172:

9000/hbase");

//conf.set("hadoop.home.dir","hdfs:

//ns/hbas");

conf.set("hbase.zookeeper.property.clientPort","2181");

//hbase.zookeeper.quorum值不能采用IP方式,必须使用名称

conf.set("hbase.zookeeper.quorum","cc-master,cc-slaver1,cc-slaver2");

//conf.set("hbase.master","60000");

//System.setProperty("hadoop.home.dir","hdfs:

//ns/hbase");

}

//Hbase获取所有的表信息

publicstaticListgetAllTables()throwsMasterNotRunningException,ZooKeeperConnectionException,IOException{

HBaseAdminadmin=newHBaseAdmin(conf);

Listtables=null;

if(admin!

=null){

try{

HTableDescriptor[]allTable=admin.listTables();

if(allTable.length>0)

tables=newArrayList();

for(HTableDescriptorhTableDescriptor:

allTable){

tables.add(hTableDescriptor.getNameAsString());

System.out.println(hTableDescriptor.getNameAsString());

}

}catch(IOExceptione){

e.printStackTrace();

}

}

returntables;

}

/*

*创建表

*

*tableName表名

*

*family列族列表

*/

publicstaticvoidcreatTable(StringtableName,String[]family)

throwsException{

HBaseAdminadmin=newHBaseAdmin(conf);

//HTableDescriptordesc=newHTableDescriptor(tableName);

HTableDescriptordesc=newHTableDescriptor(TableName.valueOf(tableName));

//System.out.println("=========");

for(inti=0;i

desc.addFamily(newHColumnDescriptor(family[i]));

}

if(admin.tableExists(tableName)){

System.out.println("tableExists!

");

System.exit(0);

}else{

System.out.println("=========");

admin.createTable(desc);

System.out.println("createtableSuccess!

");

}

}

/*

*为表添加数据(适合知道有多少列族的固定表)

*

*rowKeyrowKey

*

*tableName表名

*

*column1第一个列族列表

*

*value1第一个列的值的列表

*

*column2第二个列族列表

*

*value2第二个列的值的列表

*/

publicstaticvoidaddData(StringrowKey,StringtableName,

String[]column1,String[]value1,String[]column2,String[]value2)

throwsIOException{

Putput=newPut(Bytes.toBytes(rowKey));//设置rowkey

HTabletable=newHTable(conf,Bytes.toBytes(tableName));

//HTabel负责跟记录相关的操作如增删改查等

//获取所有的列族

HColumnDescriptor[]columnFamilies=table.getTableDescriptor()

.getColumnFamilies();

for(inti=0;i

StringfamilyName=columnFamilies[i].getNameAsString();//获取列族名

if(familyName.equals("article")){//article列族put数据

for(intj=0;j

put.add(Bytes.toBytes(familyName),

Bytes.toBytes(column1[j]),Bytes.toBytes(value1[j]));

}

}

if(familyName.equals("author")){//author列族put数据

for(intj=0;j

put.add(Bytes.toBytes(familyName),

Bytes.toBytes(column2[j]),Bytes.toBytes(value2[j]));

}

}

}

table.put(put);

System.out.println("adddataSuccess!

");

}

/*

*根据rwokey查询

*

*rowKeyrowKey

*

*tableName表名

*/

publicstaticResultgetResult(StringtableName,StringrowKey)

throwsIOException{

Getget=newGet(Bytes.toBytes(rowKey));

HTabletable=newHTable(conf,Bytes.toBytes(tableName));//获取表

//Resultresult=table.get(get);

//for(KeyValuekv:

result.list()){

//System.out.println("family:

"+Bytes.toString(kv.getFamily()));

//System.out

//.println("qualifier:

"+Bytes.toString(kv.getQualifier()));

//System.out.println("value:

"+Bytes.toString(kv.getValue()));

//System.out.println("Timestamp:

"+kv.getTimestamp());

//System.out.println("-------------------------------------------");

//}

Resultresult=table.get(get);

for(Cellcell:

result.rawCells()){

System.out.println(

"Rowkey:

"+Bytes.toString(result.getRow())+

"Familiy:

Quilifier:

"+Bytes.toString(CellUtil.cloneQualifier(cell))+

"Value:

"+Bytes.toString(CellUtil.cloneValue(cell))+

"Timestamp:

"+cell.getTimestamp()

);

}

returnresult;

}

/*

*遍历查询hbase表

*

*tableName表名

*/

publicstaticvoidgetResultScann(StringtableName)throwsIOException{

Scanscan=newScan();

ResultScannerrs=null;

HTabletable=newHTable(conf,Bytes.toBytes(tableName));

try{

rs=table.getScanner(scan);

for(Resultr:

rs){

for(KeyValuekv:

r.list()){

System.out.println("row:

"+Byte

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2