非关系型大数据库大作业Word下载.docx
- 文档编号:3978458
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:31
- 大小:1.25MB
非关系型大数据库大作业Word下载.docx
《非关系型大数据库大作业Word下载.docx》由会员分享,可在线阅读,更多相关《非关系型大数据库大作业Word下载.docx(31页珍藏版)》请在冰点文库上搜索。
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:
在对应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节点中
3"
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
配置如下:
<
configuration>
property>
name>
hbase.rootdir<
/name>
value>
hdfs:
//10.49.85.172:
9000/hbase<
/value>
/property>
hbase.master<
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<
/configuration>
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:
配置环境变量
在末尾添加如下容
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"
"
9000/hbase"
);
//conf.set("
"
//ns/hbas"
hbase.zookeeper.property.clientPort"
2181"
//hbase.zookeeper.quorum值不能采用IP方式,必须使用名称
hbase.zookeeper.quorum"
cc-master,cc-slaver1,cc-slaver2"
hbase.master"
60000"
//System.setProperty("
//ns/hbase"
}
//Hbase获取所有的表信息
publicstaticListgetAllTables()throwsMasterNotRunningException,ZooKeeperConnectionException,IOException{
HBaseAdminadmin=newHBaseAdmin(conf);
List<
String>
tables=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<
family.length;
i++){
desc.addFamily(newHColumnDescriptor(family[i]));
if(admin.tableExists(tableName)){
System.out.println("
tableExists!
"
System.exit(0);
}else{
System.out.println("
admin.createTable(desc);
createtableSuccess!
*为表添加数据(适合知道有多少列族的固定表)
*rowKeyrowKey
*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();
columnFamilies.length;
StringfamilyName=columnFamilies[i].getNameAsString();
//获取列族名
if(familyName.equals("
article"
)){//article列族put数据
for(intj=0;
j<
column1.length;
j++){
put.add(Bytes.toBytes(familyName),
Bytes.toBytes(column1[j]),Bytes.toBytes(value1[j]));
author"
)){//author列族put数据
column2.length;
Bytes.toBytes(column2[j]),Bytes.toBytes(value2[j]));
table.put(put);
adddataSuccess!
*根据rwokey查询
publicstaticResultgetResult(StringtableName,StringrowKey)
Getget=newGet(Bytes.toBytes(rowKey));
//获取表
//Resultresult=table.get(get);
//for(KeyValuekv:
result.list()){
family:
+Bytes.toString(kv.getFamily()));
//System.out
//.println("
qualifier:
+Bytes.toString(kv.getQualifier()));
value:
+Bytes.toString(kv.getValue()));
Timestamp:
+kv.getTimestamp());
-------------------------------------------"
//}
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表
publicstaticvoidgetResultScann(StringtableName)throwsIOException{
Scanscan=newScan();
ResultScannerrs=null;
try{
rs=table.getScanner(scan);
for(Resultr:
rs){
for(KeyValuekv:
r.list()){
row:
+Byte
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关系 数据库 作业