• 解决半岛问题 中美对话合作必不可少 2019-03-21
  • 阳泉计划今年在全省率先整体脱贫 2019-03-21
  • 《王者荣耀》Switch版正式公布 今年秋季推出 2019-03-16
  • 十多次告病危 2岁高危白血病男童盼来“生命火种” 2019-03-16
  • 摄艳|本网摄影师赤壁、竹林创作人像尽显侠客风 2019-03-16
  • 我在吃饭,重点在那?重点在饭,难道我只能吃饭吗?看着就想笑 2019-03-10
  • 人民日报社习近平新闻思想理论研讨会发言摘编 2019-03-10
  • 建始白云草地音乐节:醉了游人,火了产业,牵动慈善 2019-03-01
  • “直播政务述职”是与民沟通良机 2019-02-22
  • 熊猫启航计划即将启动 让世界聆听大熊猫声音 2018-12-28
  • 三星侵犯一大学专利 被判支付罚金4亿美元 2018-12-04
  • 以政府拟严打“乱拍摄”以军行为 最高10年监禁 2018-12-04
  • 今天看啥
      热点:

        新疆35选7的开奖号 www.ts3ne.com

        重温HBaes部署与java客户端访问,重温hbaes部署java


        好久没搭起来测测了,今天顺手搭起来用用。结果遇到了很多问题,下面一一说明

        一、部署

        简单起见,我使用了stand-alone模式。直接下载解压即可,注意的是需要改动hbase-site.xml:

        <configuration>
                <property>
                        <name>hbase.rootdir</name>
                        <value>file:///root/zhangtieying/hbase</value>
                </property>
                <property>
                        <name>hbase.zookeeper.property.dataDir</name>
                        <value>/root/zhangtieying/zookeeper</value>
                </property>
        </configuration>

        另外,注意修改/etc/hosts

        127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
        10.1.102.104 ccf04
        10.20.14.16 dt16
        10.20.14.17 dt17
        10.20.14.18 dt18
        10.20.14.19 dt19
        10.20.14.20 dt20
        10.20.14.21 dt21
        10.20.14.22 dt22
        10.20.14.23 dt23
        10.20.14.24 dt24
        10.20.14.25 dt25

        一定注意:ccf04为主机名,要和实际ip10.1.102.104对应上

        ccf04添加为主机名的方法:vim /etc/sysconfig/network:

        NETWORKING=yes
        HOSTNAME=ccf04

        二、java客户端连接

        这里给出我的测试代码(部分代码是copy的)

        /**
         * Created by Michael on 2015/6/20.
         */
        
        import java.util.ArrayList;
        import java.util.List;
        
        import org.apache.hadoop.conf.Configuration;
        import org.apache.hadoop.hbase.HBaseConfiguration;
        import org.apache.hadoop.hbase.HColumnDescriptor;
        import org.apache.hadoop.hbase.HTableDescriptor;
        import org.apache.hadoop.hbase.KeyValue;
        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;
        
        public class TestHbase {
        
            static Configuration conf=null;
            static{
        
                conf=HBaseConfiguration.create();//hbase的配置信息
                conf.set("hbase.zookeeper.quorum", "10.1.102.104:2181");  //zookeeper的地址
        
            }
        
            public static void main(String[] args)throws Exception {
        
                TestHbase t=new TestHbase();
                t.createTable("test-zty", new String[]{"name","age"});
                //t.insertRow("test-zty", "2", "age", "myage", "100");
                // t.getOneDataByRowKey("test-zty", "2");
                //t.showAll("test");
        
            }
        
            /***
             * 创建一张表
             * 并指定列簇
             * */
            public void createTable(String tableName,String cols[])throws Exception{
                HBaseAdmin admin=new HBaseAdmin(conf);//客户端管理工具类
                if(admin.tableExists(tableName)){
                    System.out.println("此表已经存在.......");
                }else{
                    HTableDescriptor table=new HTableDescriptor(tableName);
                    for(String c:cols){
                        HColumnDescriptor col=new HColumnDescriptor(c);//列簇名
                        table.addFamily(col);//添加到此表中
                    }
        
                    admin.createTable(table);//创建一个表
                    admin.close();
                    System.out.println("创建表成功!");
                }
            }
        
            /**
             * 添加数据,
             * 建议使用批量添加
             * @param tableName 表名
             * @param row  行号
             * @param columnFamily 列簇
             * @param column   列
             * @param value   具体的值
             *
             * **/
            public  void insertRow(String tableName, String row,
                                   String columnFamily, String column, String value) throws Exception {
                HTable table = new HTable(conf, tableName);
                Put put = new Put(Bytes.toBytes(row));
                // 参数出分别:列族、列、值
                put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column),
                        Bytes.toBytes(value));
        
                table.put(put);
                table.close();//关闭
                System.out.println("插入一条数据成功!");
            }
        
            /**
             * 删除一条数据
             * @param tableName 表名
             * @param row  rowkey
             * **/
            public void deleteByRow(String tableName,String rowkey)throws Exception{
                HTable h=new HTable(conf, tableName);
                Delete d=new Delete(Bytes.toBytes(rowkey));
                h.delete(d);//删除一条数据
                h.close();
            }
        
            /**
             * 删除多条数据
             * @param tableName 表名
             * @param row  rowkey
             * **/
            public void deleteByRow(String tableName,String rowkey[])throws Exception{
                HTable h=new HTable(conf, tableName);
        
                List<Delete> list=new ArrayList<Delete>();
                for(String k:rowkey){
                    Delete d=new Delete(Bytes.toBytes(k));
                    list.add(d);
                }
                h.delete(list);//删除
                h.close();//释放资源
            }
        
            /**
             * 得到一条数据
             *
             * @param tableName 表名
             * @param rowkey 行号
             * ***/
            public void getOneDataByRowKey(String tableName,String rowkey)throws Exception{
                HTable h=new HTable(conf, tableName);
        
                Get g=new Get(Bytes.toBytes(rowkey));
                Result r=h.get(g);
                for(KeyValue k:r.raw()){
        
                    System.out.println("行号:  "+Bytes.toStringBinary(k.getRow()));
                    System.out.println("时间戳:  "+k.getTimestamp());
                    System.out.println("列簇:  "+Bytes.toStringBinary(k.getFamily()));
                    System.out.println("列:  "+Bytes.toStringBinary(k.getQualifier()));
                    //if(Bytes.toStringBinary(k.getQualifier()).equals("myage")){
                    //  System.out.println("值:  "+Bytes.toInt(k.getValue()));
                    //}else{
                    String ss=  Bytes.toString(k.getValue());
                    System.out.println("值:  "+ss);
                    //}
        
        
        
                }
                h.close();
            }
        
            /**
             * 扫描所有数据或特定数据
             * @param tableName
             * **/
            public void showAll(String tableName)throws Exception{
        
                HTable h=new HTable(conf, tableName);
        
                Scan scan=new Scan();
                //扫描特定区间
                //Scan scan=new Scan(Bytes.toBytes("开始行号"),Bytes.toBytes("结束行号"));
                ResultScanner scanner=h.getScanner(scan);
                for(Result r:scanner){
                    System.out.println("==================================");
                    for(KeyValue k:r.raw()){
        
                        System.out.println("行号:  "+Bytes.toStringBinary(k.getRow()));
                        System.out.println("时间戳:  "+k.getTimestamp());
                        System.out.println("列簇:  "+Bytes.toStringBinary(k.getFamily()));
                        System.out.println("列:  "+Bytes.toStringBinary(k.getQualifier()));
                        //if(Bytes.toStringBinary(k.getQualifier()).equals("myage")){
                        //  System.out.println("值:  "+Bytes.toInt(k.getValue()));
                        //}else{
                        String ss=  Bytes.toString(k.getValue());
                        System.out.println("值:  "+ss);
                        //}
                    }
                }
                h.close();
            }
        }
        

        工程使用maven,其pom.xml如下:

        <?xml version="1.0" encoding="UTF-8"?>
        <project xmlns="https://maven.apache.org/POM/4.0.0"
                 xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
            <modelVersion>4.0.0</modelVersion>
        
            <groupId>com.codesolid</groupId>
            <artifactId>HelloJUnit</artifactId>
            <version>1.0</version>
        
            <dependencies>
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>4.11</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                    <version>1.2.17</version>
                    <scope>compile</scope>
                </dependency>
                <dependency>
                    <groupId>org.apache.hadoop</groupId>
                    <artifactId>hadoop-core</artifactId>
                    <version>1.0.4</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.hbase</groupId>
                    <artifactId>hbase</artifactId>
                    <version>0.94.5</version>
                </dependency>
            </dependencies>
        
        </project>


        三、遇到的问题

        This server is in the failed servers list: localhost/127.0.0.1:60718

        出现该问题的原因是没有在服务端配置主机名和真实ip的映射,因此需要再/etc/hosts中加上10.1.102.104 ccf04(ccf04为服务器的主机名)

        同时,需要在你跑程序的机器上添加ccf04的映射,我的是在windows上跑的java程序,需要修改windows的host文件,最后一行加入10.1.102.104 ccf04即可

        新疆35选7的开奖号 www.ts3ne.comtrue//www.ts3ne.com/sybase/1236555.htmlTechArticle重温HBaes部署与java客户端访问,重温hbaes部署java 好久没搭起来测测了,今天顺手搭起来用用。结果遇到了很多问题,下面一一说明 一、部...

        相关文章

        相关搜索: 客户端

        帮客评论

        视觉看点
      • 解决半岛问题 中美对话合作必不可少 2019-03-21
      • 阳泉计划今年在全省率先整体脱贫 2019-03-21
      • 《王者荣耀》Switch版正式公布 今年秋季推出 2019-03-16
      • 十多次告病危 2岁高危白血病男童盼来“生命火种” 2019-03-16
      • 摄艳|本网摄影师赤壁、竹林创作人像尽显侠客风 2019-03-16
      • 我在吃饭,重点在那?重点在饭,难道我只能吃饭吗?看着就想笑 2019-03-10
      • 人民日报社习近平新闻思想理论研讨会发言摘编 2019-03-10
      • 建始白云草地音乐节:醉了游人,火了产业,牵动慈善 2019-03-01
      • “直播政务述职”是与民沟通良机 2019-02-22
      • 熊猫启航计划即将启动 让世界聆听大熊猫声音 2018-12-28
      • 三星侵犯一大学专利 被判支付罚金4亿美元 2018-12-04
      • 以政府拟严打“乱拍摄”以军行为 最高10年监禁 2018-12-04