千家信息网

hadoop中如何搭建分布式环境

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了hadoop中如何搭建分布式环境,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一。分布式环境搭建下载:http://
千家信息网最后更新 2026年11月03日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)                              获取对应列的最新值                                List listCells = 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()); //针对全表的查询器                Iterator results = 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安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 江苏根荣互联网科技 疫情对互联网科技公司影响 工业互联网科技新基建 互联网科技开发公司 互联网科技排名 成都互联网科技公司 北京互联网络科技有限公司 小马过河互联网科技 狮子座互联网科技有限公司 一五八零互联网科技 互联网 科技服务平台 北京大学互联网科技怎么样 顶级互联网科技成果有哪些 湖南一路畅行互联网科技 群盈汇互联网科技有限公司 广州富喜互联网络科技 互联网领先科技活动 互联网科技职业技能培训学校 科技互联网专业工作会议发言稿 互联网的科技创新 上游互联网科技 互联网金融 科技创新 人人互联网科技是培训 互联网风格科技公司名称 广州有谷有贝互联网科技有限公司 版纳互联网科技选哪家 互联网金融运营模式中的金融科技 银川新华互联网科技学校原画 小牛互联网科技有限公司地址
0