之前的文章也提到过,最近工作中需要对HBase进行二次开发(参照HBase的AES加密方法,为HBase增加SMS4数据加密类型)。研究了两天,终于将开发流程想清楚并搭建好了debug环境,所以就迫不及待地想写篇文章分享给大家。
确保机器可以正常访问Internet,如能正常访问https://repo.maven.apache.org等,如果是代理方式则需要设置好eclipse和maven的网络配置。
首先要下载Python3的Hbase文件,替换Hbase文件/usr/local/lib/python3.6/dist-packages/hbase/Hbase.py和ttypes.py
上周六,接了一个紧急任务,说实现使用 C++ 访问 HBase 进行操作。说是用 thrift 来实现。对于 C++ 来说,我真的是门外汉,但需求如此,皱着眉头也要把它实现。好歹在同事的帮助下,也是实现了 demo 示例,现在就把这两天的成果分享给大家。
源码分析 的第一步就是要先编译好源代码,才能进行debug跟踪流程查看,本文总结了janusgraph源码编译的全流程!
本文只讲一个很简单的问题,YCSB对HBase集群的测试。虽然网上有很多介绍YCSB测试HBase的文章,但都是针对本地HBase伪分布式集群的。大家都知道,稍微正式一些的压测都会要求测试客户端与目标集群分离部署,而且伪分布式集群通常不会在生产环境下使用,本身也没有太大的压测意义。本文会着重介绍一下压测远程HBase完全分布式集群的不同之处。
安装流程可借鉴此处,同理spark安装也可借鉴此处 具体参考:http://dblab.xmu.edu.cn/blog/install-hbase/
在hudi中,hbase可以作为索引数据的存储,hudi默认使用的hbase版本为1.2.3。
Atlas官网没有提供Atlas的安装包,需要下载Atlas的源码后编译安装,下载Atlas源码需要登录Atlas官网下载Atlas:https://atlas.apache.org/#/Downloads,选择2.1.0版本:
在完成Atlas编译以后,就可以进行Atlas的安装了。Atlas的安装主要是安装Atlas的Server端,也就Atlas的管理页面,并确保Atlas与Kafka Hbase Solr等组件的集成。
越来越多的用户使用Spark对接HBase,对接HBase的方式有多种,通过HBase-client API实现,也有直接Spark On HBase的方式实现,比较常见的有华为的Spark-SQL-on-HBase,Hortonworks的Apache HBase Connector和Cloudera提供的SparkOnHBase,目前Cloudera的SparkOnHBase已提交的HBase的主干版本。本篇文章Fayson主要在Spark2环境下使用Cloudera的SparkOnHBase访问HBase。
Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询。
HBase是一个开源的NoSQL产品,它是实现了Google BigTable论文的一个开源产品,和Hadoop和HDFS一起,可用来存储和处理海量column family的数据。官方网址是:http://hbase.apache.org
本文目的是介绍使用C++如何操作HBase。从HBase 0.94开始,HBase新增thrift2,本文只介绍和讨论thrift2相关的。hbase-1.1.2使用的thrift估计是thrift-0.9.0版本。
出错的Java文件编码和CheckStyle设置的编码不同。CheckStyle里设置的编码是UTF-8
<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
以下是我修改后的两个子模块core和examples中的pom文件,只修改了version
关于上面的依赖包,如果在Ubuntu下,使用sudo apt-get install * 命令安装,如果在CentOS下,使用sudo yum install *命令来安装。
1,执行命令安装一些依赖组件 yum install -y hadoop-lzo lzo lzo-devel hadoop-lzo-native lzop 2, 下载lzo的源码包并解压 wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.09.tar.gz tar -zxvf lzo-2.09.tar.gz 3,在当前目录新建一个lzo目录,存储编译后的lzo文件 进入lzo-2.09目录 依次执行命令: expor
问题导读 1.hadoop与hbase哪些版本兼容? 2.hadoop与hive哪些版本兼容? 3.hbase与hive哪些版本兼容? 4.hbase与zookeeper哪些版本兼容? 前言 之
这两天,打算给现有的Apache Hadoop2.7.1的集群装个hue,方便业务人员使用hue的可视化界面,来做一些数据分析任务,这过程遇到不少问题,不过大部分最终都一一击破,收获经验若干,折腾的过程,其实也是一个学习的过程,一个历练的过程,我相信优秀的人,都是经历过无数磨难成就的,并且有着坚持不放弃的心态,迎接各种挑战,如果你总是遇到困难就放弃,那么你永远也不能成为最优秀的人,废话不多说了,下面开始进入正题: 框架版本如下: Centos6.5 Apache Hadoop2.7.1 Apac
https://github.com/apache/atlas (github 拉取对应分支代码)
为什么要做数据治理?业务繁多,数据繁多,业务数据不断迭代。人员流动,文档不全,逻辑不清楚,对于数据很难直观理解,后期很难维护。
在Spark2代码中使用hbase-spark依赖包访问HBase时,编写的代码无法完成编译,在编译的过程中提示如下错误:
问题导读 1.如何确定什么版本是稳定版本? 2.本文是如何确定各个版本的? 3.hbase1.x与hive1.x什么情况下是兼容的? 前面一篇写过 hadoop,hbase,hive,zooke
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
Spark是目前最流行的分布式计算框架,而HBase则是在HDFS之上的列式分布式存储引擎,基于Spark做离线或者实时计算,数据结果保存在HBase中是目前很流行的做法。例如用户画像、单品画像、推荐系统等都可以用HBase作为存储媒介,供客户端使用。 因此Spark如何向HBase中写数据就成为很重要的一个环节了。本文将会介绍三种写入的方式,其中一种还在期待中,暂且官网即可... 代码在spark 2.2.0版本亲测 1. 基于HBase API批量写入 第一种是最简单的使用方式了,就是基于RDD的分区
与Phoenix带来的SQL on HBase易用性相比,它带来的负面影响也是巨大的, 大表Join大表,或者全表OrderBy等消耗的资源随数据量呈至少线性增长, 并发直线下降,甚至低到只有百级别,扩容带来的收益下降很快。 另外,Phoenix表查询通过多个独立协调器(Query Server),互相不管对方, 玩命占用HBase资源,在高并发的大查询下就会容易造成HBase整个集群过载。 而像Presto系统所有的请求都是走同一个协调器,可以总控资源使用,优雅的处理过载。 让现有HBase集群聚焦在线KV Store,聚焦作为在线业务的温存储层。
pinpoint是一个开源的java监控项目,也是分布式监控项目中比较知名的。 网上有比较多的pinpoint部署指南,但都是基于主机部署的,这一篇主要是讲将pinpoint部署到docker中,并监控同样部署在docker的Springboot项目。 pinpoint包含4个部分,hbase,collector,web,agent。
基础依赖环境 Apache Hadoop2.7.1 Apache Spark1.6.0 Apache Hive1.2.1 Apache Hbase0.98.12 (1)提前安装好scala的版本,我这里是2.11.7 (2)下载spark-1.6.0源码,解压进入根目录编译 (3)dev/change-scala-version.sh 2.11 修改pom文件,修改对应的hadoop,hbase,hive的版本 执行编译支持hive功能的spark (4)mvn -Pyarn
Atlas 是一个可伸缩且功能丰富、开源的元数据管理系统,深度对接了 Hadoop 大数据组件。
最适合使用Hbase存储的数据是非常稀疏的数据(非结构化或者半结构化的数据)。Hbase之所以擅长存储这类数据,是因为Hbase是column-oriented列导向的存储机制,而我们熟知的RDBMS都是row- oriented行导向的存储机制(郁闷的是我看过N本关于关系数据库的介绍从来没有提到过row- oriented行导向存储这个概念)。在列导向的存储机制下对于Null值得存储是不占用任何空间的。比如,如果某个表 UserTable有10列,但在存储时只有一列有数据,那么其他空值的9列是不占用存储空间的(普通的数据库MySql是如何占用存储空间的呢?)。 Hbase适合存储非结构化的稀疏数据的另一原因是他对列集合 column families 处理机制。 打个比方,ruby和python这样的动态语言和c++、java类的编译语言有什么不同? 对于我来说,最显然的不同就是你不需要为变量预先指定一个类型。Ok ,现在Hbase为未来的DBA也带来了这个激动人心的特性,你只需要告诉你的数据存储到Hbase的那个column families 就可以了,不需要指定它的具体类型:char,varchar,int,tinyint,text等等。 Hbase还有很多特性,比如不支持join查询,但你存储时可以用:parent-child tuple 的方式来变相解决。 由于它是Google BigTable的 Java 实现,你可以参考一下:google bigtable 。 下面3副图是Hbase的架构、数据模型和一个表格例子,你也可以从:Hadoop summit 上 获取更多的信息。
一种操作hadoop的轻量级脚本语言,最初又雅虎公司推出,不过现在正在走下坡路了。当初雅虎自己慢慢退出pig的维护之后将它开源贡献到开源社区由所有爱好者来维护。不过现在还是有些公司在用,不过我认为与其使用pig不如使用hive。:)
http://archive.apache.org/dist/phoenix/phoenix-5.1.2/
Spark Streaming是在2013年被添加到Apache Spark中的,作为核心Spark API的扩展它允许用户实时地处理来自于Kafka、Flume等多种源的实时数据。这种对不同数据的统一处理能力就是Spark Streaming会被大家迅速采用的关键原因之一。
基础环境: Apache Hadoop2.7.1 Centos6.5 Apache Hadoop2.7.1 Apache Hbase0.98.12 Apache Hive1.2.1 Apache Tez0.7.0 Apache Pig0.15.0 Apache oozie4.2.0 Apache Spark1.6.0 Cloudrea Hue3.8.1 经测试,spark1.6.0和spark1.5.x集成hive on spark有问题, 相关链接:http://apach
Apache Phoenix主要是基于HBase一款软件, 提供了一种全新(SQL)的方式来操作HBase中数据, 从而降低了使用HBase的门槛, 并且 Phoenix提供了各种优化措施
一、实验环境 3台CentOS release 6.4虚拟机,IP地址为 192.168.56.101 master 192.168.56.102 slave1 192.168.56.103 slave2 hadoop 2.7.2 hbase 1.1.4 hive 2.0.0 zookeeper 3.4.8 kylin 1.5.1(一定要apache-kylin-1.5.1-HBase1.1.3-bin.tar.gz包) master作为hadoop的NameNode、SecondaryNameNode、ResourceManager,hbase的HMaster slave1、slave2作为hadoop的DataNode、NodeManager,hbase的HRegionServer 同时master、slave1、slave2作为三台zookeeper服务器
在NoSQL数据库领域,统治产品无疑当属MongDB和DataStax Enterprise(一个领先的Apache Cassandra发行版)。但近来MongoDB,甚至整个NoSQL数据库市场不断遭受IT业界质疑,认为“大数据时代NoSQL并非颠覆性技术”,MongoDB技术门槛不高,其市场正面临Teradata、MemSQL和Heroku的威胁。这使得很多潜在用户开始担心——MongoDB的成功是否建立在过度的炒作之下。 在Mongo DB遭受质疑的同时, 媒体开始关注一个顽强,但
由于编译相关jar包较难下载,所以本文提供仅用于ambari编译的maven repository,将该repository替换原.m2/repository目录即可。
1) jdb调试正在运行的进程: 先使用jps先确定进程号,然后让jdb连接上目标进程(23549换成实际的进程号): jdb -connect sun.jvm.hotspot.jdi.SAPIDAttachingConnector:pid=23549 接着,可以使用thread N切换线程(使用threads命令可以查看有哪些线程),如:thread 1,然后就可以使用where命令查看调用栈了(jdb中的where相当于gdb的bt)。 2) jdb调试未运行的程序: 程序代码: hadoop@hadoop-137-143:~/hbase> cat Hello.java public class Hello { public static void main(String[] args) { System.out.println("Hello World!"); } } 编译: hadoop@hadoop-137-143:~/hbase> javac Hello.java 运行: hadoop@hadoop-137-143:~/hbase> java Hello Error: Could not find or load main class Hello 运行报错,设置CLASSPATH后再运行: hadoop@hadoop-137-143:~/hbase> export CLASSPATH=. hadoop@hadoop-137-143:~/hbase> java Hello Hello World! 运行成功了,如果不想设置CLASSPATH,下面这样也可以运行成功: hadoop@hadoop-137-143:~/hbase> java -classpath . Hello Hello World! 也就是利用参数“-classpath”达到同样的效果。 开始调试,执行下面命令进入jdb: jdb -classpath . Hello 设置断点在main()函数: > stop in Hello.main Deferring breakpoint Hello.main. It will be set after the class is loaded. 运行到断点: > run run Hello 运行下一步: main[1] next > Hello World! 退出: main[1] quit
将编译好的Atlas安装包移动到/software下进入“/software/apache-atlas-sources-2.1.0/distro/target/apache-atlas-2.1.0-bin”路径下,将“apache-atlas-2.1.0”移动到“/software”下
Phoenix 最早是 saleforce 的一个开源项目,后来成为 Apache 的顶级项目。 Phoenix 构建在 HBase 之上的开源 SQL 层. 能够让我们使用标准的 JDBC API 去建表, 插入数据和查询 HBase 中的数据, 从而可以避免使用 HBase 的客户端 API. 在我们的应用和 HBase 之间添加了 Phoenix, 并不会降低性能, 而且我们也少写了很多代码.
注意:truncate,清空表数据,实际底层操作是先使表不可用(下线),然后删除表,最后根据表信息重新创建一张新表。
ⅲ、重新创建表,在表创建时会自动挂载该协处理器(表在挂载协处理器的时候,回去HBase的根目录下的lib文件夹下面找到jar包)
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github: https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 ---- 在前面的文章Fayson介绍了在Kerberos环境下《Spark2Streaming读Kerberos环境的Kafka并写数据到Kudu》,本篇文章Fayson主要介绍如何使用Spark2Streaming访问Kerberos环境的Kafka并将接收到的Kafka数据写入HBa
在前面的文章Fayson介绍了一些关于Spark2Streaming的示例如《Spark2Streaming读Kerberos环境的Kafka并写数据到HBase》、《Spark2Streaming读Kerberos环境的Kafka并写数据到Kudu》及《Spark2Streaming读Kerberos环境的Kafka并写数据到Hive》。本篇文章Fayson主要介绍如何使用Spark2Streaming访问非Kerberos环境的Kafka并将接收到的数据写入HBase。
在项目中有需求需要将Hive表中的数据存储在HBase中。使用Spark访问Hive表,将读表数据导入到HBase中,写入HBase有两种方式:一种是通过HBase的API接口批量的将数据写入HBase,另一种是通过BulkLoad的方式生成HFile文件然后加载到HBase中,两种方式相比之下第二种效率会更高。本篇文章Fayson主要介绍如何使用Spark读取Hive表数据通过BulkLoad的方式快速的将数据导入到HBase。
领取专属 10元无门槛券
手把手带您无忧上云