hadoop中如何搭建分布式环境
发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,这篇文章主要介绍了hadoop中如何搭建分布式环境,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一。分布式环境搭建下载:http://
千家信息网最后更新 2024年11月24日hadoop中如何搭建分布式环境
这篇文章主要介绍了hadoop中如何搭建分布式环境,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
一。分布式环境搭建
下载:http://www.apache.org/dyn/closer.cgi/hbase/ ,hbase-0.98.0-hadoop2-bin.tar.gz。
1.在master主控机安装HBase
1)解压
SHELL$ tar -zxvf hbase-0.98.0-hadoop2-bin.tar.gz
SHELL$ mv hbase-0.98.0-hadoop2 ~/hbase0.98.0hadoop2
2)配置环境变量
(1)修改/etc/profile文件
SHELL$ sudo gedit /etc/profile
(2)验证
3)修改%HBASE%/conf/hbase-env.sh
4)修改$HBASE_HOME/conf/hbase-site.xml
hbase.master hdfs://192.168.1.240:60000 hbase.rootdir hdfs://192.168.1.240:9000/hbase hbase.cluster.distributed true hbase.zookeeper.quorum 192.168.1.241,192.168.1.242,192.168.1.243 hbase.tmp.dir /home/hadoop/hbase0.98.0hadoop2/hbase-tmp hbase.zookeeper.property.dataDir /home/hadoop/hbase0.98.0hadoop2/zookeeper-temp
5)$HBASE_HOME/conf/regionservers 文件增加
2.把HBase复制到slave从属机
SHELL$ sudo scp -rpv /home/hadoop/hbase0.98.0hadoop2/ hadoop@hapslave*:/home/hadoop/
3.启动HBase集群
在Hadoop集群启动后,再启动HBase集群。
SHELL$ start-hbase.sh
在主控机通过web界面查看(本例配置4个节点):
4.停止HBase集群
SHELL$ stop-hbase.sh
二。HBase Shell
SHELL$ hbase shell
1.建表create
2.列出全部表list
3.表描述describe
4.删除表disable,drop
5.插入条目put
6.展示全表scan
7.查询条目get
8.更新条目put
9.删除条目delete
清空表:
truncate是一个能够快速清空资料表内所有资料的SQL语法。并且能针对具有自动递增值的字段,做计数重置归零重新计算的作用
10.统计参数
三。JavaAPI
全部API在%HBase%/docs目录里,完全是英文的。
本例所须全部jar都可以在%HBase安装目录%/lib目录中找到。图省事,我一股脑儿全导入了。
1.创建一张表
package com.cuiweiyou.test;import java.io.IOException;import java.util.Iterator;import java.util.List;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.Cell;import org.apache.hadoop.hbase.CellUtil;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.HColumnDescriptor;import org.apache.hadoop.hbase.HTableDescriptor;import org.apache.hadoop.hbase.TableName;import org.apache.hadoop.hbase.client.Delete;import org.apache.hadoop.hbase.client.Get;import org.apache.hadoop.hbase.client.HBaseAdmin;import org.apache.hadoop.hbase.client.HTable;import org.apache.hadoop.hbase.client.Put;import org.apache.hadoop.hbase.client.Result;import org.apache.hadoop.hbase.client.ResultScanner;import org.apache.hadoop.hbase.client.Scan;import org.apache.hadoop.hbase.util.Bytes;import org.junit.Test;public class HBaseTest { //创建表 @Test public void creatTable() throws Exception { String strTBName = "tb_test"; //表 String strColFamily = "cf"; //列族 //配置 Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "192.168.1.241,192.168.1.242,192.168.1.243"); //管理员 HBaseAdmin hbaseAdmin = new HBaseAdmin(conf); //addColumn(String tableName, HColumnDescriptor column) //向一个已经存在的表添加咧 //checkHBaseAvailable(HBaseConfiguration hbaseConf) //静态函数,查看HBase是否处于运行状态 //deleteTable(byte[] tableName) //删除一个已经存在的表 //enableTable(byte[] tableName) //使表处于有效状态 //disableTable(byte[] tableName) //使表处于无效状态 //HTableDescriptor[] listTables() //列出所有用户控件表项 //modifyTable(byte[] tableName, HTableDescriptor tableDesc) //修改表的模式,是异步的操作,耗时 //tableExists(String tableName) //检查表是否存在 //表名称 TableName tableName = TableName.valueOf(strTBName); //表描述器 HTableDescriptor tableDesc = new HTableDescriptor(tableName); //removeFamily(byte[] column) //移除一个列族 //getName() //获取表的名字 //getValue(byte[] key) //获取属性的值 //setValue(String key, String value) //设置属性的值 tableDesc.addFamily(new HColumnDescriptor(strColFamily));//添加列族 //创建一个表,同步操作 hbaseAdmin.createTable(tableDesc); System.out.println("创建表" + strTBName + "成功"); }}
2.添加一条记录
//为表添加数据 @Test public void addData() throws IOException { String strTBName = "tb_test"; String strColFamily = "cf"; String strColumn = "col"; //列名 String strRowKey = "row1"; //行号 String strValue = "values"; //值 Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "192.168.1.241,192.168.1.242,192.168.1.243"); //表实例 HTable table = new HTable(conf, strTBName); //close() 释放所有的资源或挂起内部缓冲区中的更新 //exists(Get get) 检查Get实例所指定的值是否存在于HTable的列中 //get(Get get) 获取指定行的某些单元格所对应的值 //getEndKeys() 获取当前一打开的表每个区域的结束键值 //getScanner(byte[] family) 获取当前给定列族的scanner实例 //getTableDescriptor() 获取当前表的HTableDescriptor实例 //getTableName() 获取表名 //isTableEnabled(HBaseConfiguration conf, String tableName) 检查表是否有效 // 获取所有的列族 HColumnDescriptor[] columnFamilies = table.getTableDescriptor().getColumnFamilies(); //HColumnDescriptor的常用方法: //getName() //获取列族的名字 //getValue(byte[] key) //获取对应的属性的值 //setValue(String key, String value) //设置对应属性的值 //插入器 Put put = new Put(Bytes.toBytes(strRowKey));// 设置行号,RowKey //add(byte[] family, byte[] qualifier, byte[] value) 将指定的列和对应的值添加到Put实例中 //add(byte[] family, byte[] qualifier, long ts, byte[] value) 将指定的列和对应的值及时间戳添加到Put实例中 //getRow() 获取Put实例的行 //getRowLock() 获取Put实例的行锁 //getTimeStamp() 获取Put实例的时间戳 //isEmpty() 检查familyMap是否为空 //setTimeStamp(long timeStamp) 设置Put实例的时间戳 for (int i = 0; i < columnFamilies.length; i++) { String familyName = columnFamilies[i].getNameAsString(); // 获取列族名 //指定列族 if (familyName.equals(strColFamily)) { //插入 put.add(Bytes.toBytes(familyName), Bytes.toBytes(strColumn), Bytes.toBytes(strValue)); } } table.put(put); //运行插入器 System.out.println("存入数据完毕"); }
3.读取指定行记录
//根据RowKey查询整行 @Test public void getRow() throws IOException { String strTBName = "tb_test"; String strRowKey = "row1"; Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "192.168.1.241,192.168.1.242,192.168.1.243"); HTable table = new HTable(conf, strTBName); //获取表实例 //查询器 Get get = new Get(Bytes.toBytes(strRowKey)); //查询指定行 //addColumn(byte[] family, byte[] qualifier) 获取指定列族和列修饰符对应的列 //addFamily(byte[] family) 通过指定的列族获取其对应列的所有列 //setTimeRange(long minStamp,long maxStamp) 获取指定取件的列的版本号 //setFilter(Filter filter) 当执行Get操作时设置服务器端的过滤器 Result result = table.get(get); //containsColumn(byte[] family, byte[] qualifier) 检查指定的列是否存在 //getFamilyMap(byte[] family) 获取对应列族所包含的修饰符与值的键值对 //getValue(byte[] family, byte[] qualifier) 获取对应列的最新值 ListlistCells = result.listCells(); //指定行、全部列族的全部列 for (Cell cell : listCells) { System.out.println("列 族:" + Bytes.toString(CellUtil.cloneFamily(cell))); System.out.println("列 名:" + Bytes.toString(CellUtil.cloneQualifier(cell))); System.out.println("列 值:" + Bytes.toString(CellUtil.cloneValue(cell))); System.out.println("时间戳:" + cell.getTimestamp()); } } |
4.显示所有数据
//遍历全部条目 @Test public void getAllRows() throws IOException { String strTBName = "tb_test"; Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "192.168.1.241,192.168.1.242,192.168.1.243"); HTable table = new HTable(conf, strTBName); //获取表实例 //扫描器 ResultScanner resultScanner = table.getScanner(new Scan()); //针对全表的查询器 Iteratorresults = resultScanner.iterator(); while(results.hasNext()) { Result result = results.next(); List cells = result.listCells(); for(Cell cell : cells) { System.out.println("列 族:" + Bytes.toString(CellUtil.cloneFamily(cell))); System.out.println("列 名:" + Bytes.toString(CellUtil.cloneQualifier(cell))); System.out.println("列 值:" + Bytes.toString(CellUtil.cloneValue(cell))); System.out.println("时间戳:" + cell.getTimestamp() + "\n------------------"); } } } |
5.更新条目
//更新表中某行的某一列 @Test public void updateTable() throws IOException { String strTBName = "tb_test"; String strColFamily = "cf"; String strColumn = "col"; String strRowKey = "row1"; String strNewValue = "NewValues"; Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "192.168.1.241,192.168.1.242,192.168.1.243"); HTable table = new HTable(conf, strTBName); //获取表实例 Put put = new Put(Bytes.toBytes(strRowKey)); //仍然是插入操作(已知列族,已知列,新值) put.add(Bytes.toBytes(strColFamily), Bytes.toBytes(strColumn), Bytes.toBytes(strNewValue)); table.put(put); System.out.println("更新结束"); }
6.删除单元格
//删除指定行的指定的列(删除单元格) @Test public void deleteColumn() throws IOException { String strTBName = "tb_test"; String strColFamily = "cf"; String strColumn = "col"; String strRowKey = "row1"; Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "192.168.1.241,192.168.1.242,192.168.1.243"); HTable table = new HTable(conf, strTBName); //获取表实例 //删除器 Delete del = new Delete(Bytes.toBytes(strRowKey)); del.deleteColumns(Bytes.toBytes(strColFamily), Bytes.toBytes(strColumn)); table.delete(del); System.out.println("行:" + strRowKey + ",列族:"+ strColFamily +",列:"+ strColumn +",删除完毕"); }
7.删除整行
//删除整行 @Test public void deleteAllColumn() throws IOException { String strTBName = "tb_test"; String strRowKey = "row1"; Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "192.168.1.241,192.168.1.242,192.168.1.243"); HTable table = new HTable(conf, strTBName); //获取表实例 Delete deleteAll = new Delete(Bytes.toBytes(strRowKey)); table.delete(deleteAll); System.out.println("这一行全删除了"); }
8.删除表单
//删除表 @Test public void deleteTable() throws IOException { String strTBName = "tb_test"; Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "192.168.1.241,192.168.1.242,192.168.1.243"); HBaseAdmin admin = new HBaseAdmin(conf); admin.disableTable(strTBName); admin.deleteTable(strTBName); System.out.println(strTBName + "表 删除了"); }
感谢你能够认真阅读完这篇文章,希望小编分享的"hadoop中如何搭建分布式环境"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
实例
条目
时间
更新
查询
检查
环境
属性
篇文章
集群
分布式
单元
数据
状态
目录
配置
有效
名字
文件
资料
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
cisp和数据库怎么选
数据库desc 的反义词
网络安全与数据
光明网 网络安全
科技互联网网络小说
网络安全宣传海报2019
用哪个数据库查股票每日股价
中医古籍数据库包括
制作数据库表的结构图
软件开发计算机培训学校去哪家好
中纪委网络技术中心
数据库连接12543
4K服务器还是放映机
上海觅糖互联网科技公司
机械建模软件开发方法
美国农业生物数据库
05年前可以入部队数据库么
挑战杯软件开发范文
服务器存储扩容方案
软件开发群买什么
打电话为什么会服务器繁忙
关系型数据库软件有哪些
腾讯云的云数据库有什么优势
软件开发笔试资料
是ftp服务器的地址
南海农商行软件开发岗位
编程 服务器
数据库管理技术的产生与发展
数据库安全通常通过
ibm服务器蓝屏重启不了