hbase

设置Hadoop+Hbase集群pid文件存储位置

为君一笑 提交于 2019-12-17 10:37:29
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 有时候,我们对运行几天或者几个月的hadoop或者hbase集群做停止操作,会发现,停止命令不管用了,为什么呢? 因为基于java开发的程序,想要停止程序,必须通过进程pid来确定,而hadoop和hbase默认的情况下,会把pid文件存储在Linux上的/tmp目录的某个目录下,进程名命令规则一般是 框架名-用户名-角色名.pid,而默认情况下,linux的tmp里面的东西,一天会删除一次,所以把pid文件放在这里面,并不是长久之计,为了安全起见,我们还是放到一个固定的目录下最好,当然不能放在/tmp下 如何配置避免把进程文件写到临时目录下面呢? 一:Hadoop配置: (1)修改hadoop-env.sh 修改如下,如果没有下面的设置,可以直接添加: export HADOOP_PID_DIR=/ROOT/server/pids_hadoop_hbase export HADOOP_SECURE_DN_PID_DIR=/ROOT/server/pids_hadoop_hbase 上述配置,影响 NameNode DataNode SecondaryNameNode 进程pid存储 (2)修改mapred-env.sh 修改 export HADOOP_MAPRED_PID_DIR=/ROOT/server

Apache HBase rowKey设计技巧

北慕城南 提交于 2019-12-17 09:18:39
HBase是三维有序存储的,通过rowkey(行键),column key(column family和qualifier)和TimeStamp(时间戳)这个三个维度可以对HBase中的数据进行快速定位。 HBase中rowkey可以唯一标识一行记录,在HBase查询的时候,有以下几种方式: 通过get方式,指定rowkey获取唯一一条记录 通过scan方式,设置startRow和stopRow参数进行范围匹配 全表扫描,即直接扫描整张表中所有行记录 rowkey长度原则 rowkey是一个二进制码流,可以是任意字符串,最大长度64kb,实际应用中一般为10-100bytes,以byte[]形式保存,一般设计成定长。 建议越短越好,不要超过16个字节,原因如下: 数据的持久化文件HFile中是按照KeyValue存储的,如果rowkey过长,比如超过100字节,1000w行数据,光rowkey就要占用100*1000w=10亿个字节,将近1G数据,这样会极大影响HFile的存储效率; MemStore将缓存部分数据到内存,如果rowkey字段过长,内存的有效利用率就会降低,系统不能缓存更多的数据,这样会降低检索效率。 rowkey散列原则 如果rowkey按照时间戳的方式递增,不要将时间放在二进制码的前面,建议将rowkey的高位作为散列字段,由程序随机生成,低位放时间字段

Apache HBase 预分区

混江龙づ霸主 提交于 2019-12-17 09:11:27
预分区的原因 增加数据读写效率 负载均衡,防止数据倾斜 方便集群容灾调度region 优化Map数量 如何预分区? 每一个region维护着startRow与endRowKey,如果加入的数据符合某个region维护的rowKey范围,则该数据交给这个region维护。 如何设定预分区? 1、手动指定预分区 hbase ( main ) :001:0 > create 'staff' , 'info' , 'partition1' ,SPLITS = > [ '1000' , '2000' , '3000' , '4000' ] 完成后如图: 2、使用16进制算法生成预分区 hbase(main):003:0> create ‘staff2’,‘info’,‘partition2’,{NUMREGIONS => 15, SPLITALGO => ‘HexStringSplit’} 完成后如图: 3、分区规则创建于文件中 创建splits.txt文件内容如下: cd /export/servers/ vim splits.txt aaaa bbbb cccc dddd 然后执行: hbase(main):004:0> create ‘staff3’,‘partition2’,SPLITS_FILE => ‘/export/servers/splits.txt’ 成功后如图: 4

2.3-2.6 HBase java API

谁都会走 提交于 2019-12-17 08:26:26
一、get 、put、delete、scan 1、代码 package com.beifeng.senior.hadoop.hbase; 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.client.Delete; import org.apache.hadoop.hbase.client.Get; 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

ubuntu下Hbase的安装

本秂侑毒 提交于 2019-12-17 05:32:12
前言: HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化9的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。 一、系统环境 od: ubuntu 16.04 LTS 64 bit jdk: jdk1.8.0_111 hadoop:2.7.3 zookeeper:zookeeper3.4.6Hbase:1.2.6 安装之前,确保JDK, Hadoop集群 , Zookeeper集群 安装成功。 二、安装 2.1、下载: Hbase下载地址 2.2、解压安装包到路径/usr/local下 sudo tar -xzvf hbase-1.2.6-bin.tar.gz -C /usr/local cd /usr/local sudo mv hbase-1.2.5 hbase#重命名,方便使用 2.3、配置环境变量 vim /etc/profile #Hbase export HBASE_HOME=

Hbase shell详情

六眼飞鱼酱① 提交于 2019-12-17 04:11:24
Hbase shell详情 HBase 为用户提供了一个非常方便的使用方式, 我们称之为“HBase Shell”。 HBase Shell 提供了大多数的 HBase 命令, 通过 HBase Shell 用户可以方便地创建、删除及修改表, 还可以向表中添加数据、列出表中的相关信息等。 备注:写错 HBase Shell 命令时用键盘上的“Delete”进行删除,“Backspace”不起作用。 在启动 HBase 之后,用户可以通过下面的命令进入 HBase Shell 之中,命令如下所示: hadoop@ubuntu:~$ hbase shell HBase Shell; enter 'help<RETURN>' for list of supported commands. Type "exit<RETURN>" to leave the HBase Shell Version 0.94.3, r1408904, Wed Nov 14 19:55:11 UTC 2012 hbase(main):001:0> 具体的 HBase Shell 命令如下表 1.1-1 所示: 下面我们将以“一个学生成绩表”的例子来详细介绍常用的 HBase 命令及其使用方法。 这里 grad 对于表来说是一个列,course 对于表来说是一个列族,这个列族由三个列组成 china、math 和

HBase安装和启动

↘锁芯ラ 提交于 2019-12-17 03:26:49
目录 认识HBase 前期准备 1. 解压HBase 2. 修改3个配置文件(配置文件目录: hbase-0.96.2-hadoop2/conf/ ) 3. 将hadoop的 hdfs-site.xml 和 core-site.xml 放到 hbase/conf 下 4. 拷贝HBase到其他节点 5. 启动HBase 6. 验证 7. 提高可靠性 认识HBase HBase是一个高可靠、高性能、面向列、可伸缩的分布式存储系统,该技术来源于Google论文“Bigtable:一个结构化数据的分布式存储系统”。利用HBase技术可在廉价PC Server上搭建大规模结构化存储集群。 HBase是Google Bigtable的开源实现,与Google Bigtable利用GFS作为其文件存储系统类似,HBase利用Hadoop HDFS作为其文件存储系统;Google 运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用Chubby作为协同服务,HBase利用Zookeeper作为对应。 特点: 大:一个表可以有上亿行,上百万列。 面向列:面向列(族)的存储和权限控制,列(族)独立检索。 稀疏:对于空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏。

HDFS Federation和NameNode HA的搭建

空扰寡人 提交于 2019-12-17 02:06:43
1. HDFS Federation产生背景 在Hadoop 1.0中,HDFS的单NameNode设计带来诸多问题,包括单点故障、内存受限制约集群扩展性和缺乏隔离机制(不同业务使用同一个NameNode导致业务相互影响)等,为了解决这些问题,Hadoop 2.0引入了基于共享存储的HA解决方案和HDFS Federation,这里重点介绍HDFS Federation。 HDFS Federation是指HDFS集群可同时存在多个NameNode,这些NameNode分别管理一部分数据,且共享所有DataNode的存储资源。这种设计可解决单NameNode存在的以下几个问题: (1)HDFS集群扩展性。多个NameNode分管一部分目录,使得一个集群可以扩展到更多节点,不再像1.0中那样由于内存的限制制约文件存储数目。 (2)性能更高效。多个NameNode管理不同的数据,且同时对外提供服务,将为用户提供更高的读写吞吐率。 (3)良好的隔离性。用户可根据需要将不同业务数据交由不同NameNode管理,这样不同业务之间影响很小。 需要注意的,HDFS Federation并不能解决单点故障问题,也就是说,每个NameNode都存在在单点故障问题,你需要为每个namenode部署一个backup namenode以应对NameNode挂掉对业务产生的影响。 2.安装环境 由于HDFS

Hbase 四种过滤器

痞子三分冷 提交于 2019-12-17 01:31:27
四种过滤器 1、行键 过滤器 2、 前缀过滤器 3、 时间戳过滤器 4、 列族过滤器 package com.bw.hbasefilter; import java.io.IOException; 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.client.HTable; 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.filter.BinaryComparator; import org.apache.hadoop.hbase.filter.CompareFilter; import org.apache.hadoop.hbase.filter.Filter; import org

基于HBase的实时历史数据库设计思路

↘锁芯ラ 提交于 2019-12-16 20:40:01
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 实时历史数据库是实现工业海量数据采集存储的有效手段。HBase的写入性能优于查询性能,这个特点使其适合作为实时历史数据库开发的基础。 所有的开发是基于HBase的API进行,主要开发节点和数据的增删改查方法的实现,并且使用Thrift作为软件的RPC,最终提供Server服务和Client API。其中Server功能是连接HBase以及实现增删改查的方法。 设计HBase的表结构是最重要的部分。首先,使用HBase的命名空间功能,为不通场景提供不通数据库。然后就是表结构设计,根据经验,要有三张基本表,分别是id,data,info。info表保存节点信息,节点名作为rowkey;id表提供可以给节点分配的id;data表保存节点数据,rowkey为 “节点id+时间” 形式。然后根据三个表结构的特点实现增删改查的方法。 数据在HBase表中存储排序是字典格式。如果所有数据都在data表中保存时,获取实时最新数据是一个问题。可以使用过滤器取出符合条件的节点数据,然后reverse即可获取最后一个插入的数据。但是这种方法在测试时很慢,效率低。可以考虑增加realTime表,保存节点最新数据,只要在插入实时数据的方法中同事写入此表和data表即可,但结果却提高了查询实时数据的速度。 除了表结构的设计