Apache HBase

如何优雅的理解HBase和BigTable

与世无争的帅哥 提交于 2020-08-20 05:32:20
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 学习 HBase 最难的地方在于要让你的脑子真正理解它是什么。 HBase:Google BigTable 的开源实现 我们经常会把关系型数据库(RDBMS,比如 MySQL)和 HBase 搞混,因为在这两个系统中都包含 table 和 base(HBase,Database)。 这篇文章的目标是从概念上来说清楚 HBase 这个分布式的数据存储系统。读完后,你应该可以很清楚的知道什么情况下 HBase 更好,什么情况下传统的关系型数据库更好。 关于一些术语 幸运的是,Google 的 BigTable论文清楚的解释了 BigTable 到底是什么。下面是论文中数据模型章节的第一句话: BigTable 是一个稀疏的、分布式的、可持久化的多维有序 map。 在这个节骨眼上,我想给读者一个机会,让他们在读到最后一行字时,能够收集到他们脑壳里的活动信息(这可能是个笑话,但我没懂^v^)。 论文中,继续解释如下: map 通过 rowKey,columnKey 和时间戳进行索引,map 中的每个值都是一个连续的字节数组。 注:rowKey 是记录的主键,唯一标识一行记录 在 Hadoop 的官方文档中,也对 HBase 的架构做了说明: HBase 使用了与 BigTable

大数据技术栈——Hadoop概述

最后都变了- 提交于 2020-08-19 17:33:19
大数据技术栈——Hadoop概述 1 引例 2 MapReduce 3 HDFS 4 Hadoop 5 HBase 5.1 逻辑模型 5.2 物理模型 5.3 Region服务器 6 Hive 7 Pig 8 ZooKeeper 8.1 ZooKeeper的特性 8.2 ZooKeeper的设计目标 1 引例 Hadoop是专为离线和大规模数据分析而设计的,上图Hadoop整体技术框架描述。(为了方便学习,会先介绍Map Reduce与HDFS) 2 MapReduce MapReduce是Google提出的大规模并行计算解决方案,应用于大规模廉价集群上的大数据并行处理(Map Reduce1.0运行模型如下)。 MapReduce以key/value的分布式存储系统为基础,采用“分而治之”的思想,是一种并行编程模型,将计算阶段分为两个阶段:Map阶段(分)和Reduce阶段(治)。 原理:利用一个输入(key,value)对的集合产生一个输出的(key,value)对的集合。 map阶段 :被分配了map任务的worker程序读入数据片段,解析出(key,value)对,传给用户定义的Map函数,Map函数生出中间对,缓存在内存中。 Reduce阶段 :该阶段由Reduce函数把Map阶段具有相同key值的中间结果收集到相同Reduce结点进行合并处理,并将结果写入本地磁盘

【少走弯路】 之 zookeeper安装异常记录汇总

大城市里の小女人 提交于 2020-08-19 12:58:06
玩个zookeeper把所有的坑全部踩了一遍 从Windows到Linux,从配置文件到脚本,从环境变量到日志 BUG之王当之无愧 但是不能白白浪费经历的坑,分享一下给大家填坑 ZooKeeper介绍   ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 ZooKeeper包含一个简单的原语集, 提供Java和C的接口。 官网: https://zookeeper.apache.org 进入下载入口: 选择任意下载地址: 下载版本 踩坑 版本建议下载3.5以下的,较为稳定,如果你下载了最新版的,准备跟着我踩坑 下载后直接解压即可 进入到apache-zookeeper-3.5.6\conf文件夹,找到zoo_sample.cfg,复制一份到当前文件夹,重命名为zoo.cfg 为什么修改呢?在zkEnv.cmd中是默认叫zoo的 至于里面的配置信息,可以根据个人需求修改 附加 zoo.cfg参数说明 tickTime:这个时间是作为 Zookeeper

优秀的 Java 项目,代码都是如何分层的?

回眸只為那壹抹淺笑 提交于 2020-08-18 04:05:15
作者: 咖啡拿铁 来源: https://urlify.cn/juam Iv 1、背景 说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦。 的确在这些人眼中分层只是一个形式,前辈们的代码这么写的,其他项目代码这么写的,那么我也这么跟着写。但是在真正的团队开发中每个人的习惯都不同,写出来的代码必然带着自己的标签,有的人习惯controller写大量的业务逻辑,有的人习惯在service中之间调用远程服务,这样就导致了每个人的开发代码风格完全不同,后续其他人修改的时候,一看,我靠这个人写的代码和我平常的习惯完全不同,修改的时候到底是按着自己以前的习惯改,还是跟着前辈们走,这又是个艰难的选择,选择一旦有偏差,你的后辈又维护你的代码的时候,恐怕就要骂人了。 所以一个好的应用分层需要具备以下几点: 方便后续代码进行维护扩展; 分层的效果需要让整个团队都接受; 各个层职责边界清晰。 2、如何进行分层 2.1、阿里规范 在阿里的编码规范中约束的分层如下:

Ranger 简介与安装

孤者浪人 提交于 2020-08-18 01:24:00
目录 一、Ranger是什么 1、Ranger介绍 2、Ranger模块 二、基于Ambari安装Ranger 一、Ranger是什么 1、Ranger介绍 Ranger是Hadoop平台的集中式安全管理框架,能够为hadoop平台组件提供细粒度的访问控制。通过Ranger, Hadoop管理员能够轻松地管理各种安全策略,包括:访问文件/文件夹,数据库,Hive表,列, Hbase, YARN等。此外,Ranger还能进行审计管理,以及策略分析,从而为Hadoop环境的深层次分析提供支持。 目前,Ranger支持对以下的Hadoop组件:HDFS, HBase, Hive, Yarn, Knox, Storm, Solr, Kafka。 HDP整合kerberos以及ranger进行细粒度权限控制 : https://mp.csdn.net/console/editor/html/106575381 2、Ranger模块 Apache Ranger目前是Apache下的顶级项目,目的是通过制定策略(policies)实现对Hadoop组件的集中式安全管理。用户可以通过Ranager实现对集群中数据的安全访问。 Ranger由三个模块组成: Ranger portal: 提供给用户进行安全管理的界面 Ranger plugin: 嵌入在需要安全控制的组件进程中,提供两种功能: (1

高并发,你真的理解透彻了吗?

喜夏-厌秋 提交于 2020-08-17 12:49:25
高并发,几乎是每个程序员都想拥有的经验。原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时、CPU load升高、GC频繁、死锁、大数据量存储等等,这些问题能推动我们在技术深度上不断精进。 在过往的面试中,如果候选人做过高并发的项目,我通常会让对方谈谈对于高并发的理解,但是能系统性地回答好此问题的人并不多,大概分成这样几类: 1、** 对数据化的指标没有概念**:不清楚选择什么样的指标来衡量高并发系统?分不清并发量和QPS,甚至不知道自己系统的总用户量、活跃用户量,平峰和高峰时的QPS和TPS等关键数据。 2、设计了一些方案,但是细节掌握不透彻: 讲不出该方案要关注的技术点和可能带来的副作用。比如读性能有瓶颈会引入缓存,但是忽视了缓存命中率、热点key、数据一致性等问题。 3、理解片面,把高并发设计等同于性能优化: 大谈并发编程、多级缓存、异步化、水平扩容,却忽视高可用设计、服务治理和运维保障。 4、掌握大方案,却忽视最基本的东西: 能讲清楚垂直分层、水平分区、缓存等大思路,却没意识去分析数据结构是否合理,算法是否高效,没想过从最根本的IO和计算两个维度去做细节优化。 这篇文章,我想结合自己的高并发项目经验,系统性地总结下高并发需要掌握的知识和实践思路,希望对你有所帮助。内容分成以下3个部分: 如何理解高并发? 高并发系统设计的目标是什么? 高并发的实践方案有哪些

菜鸟+Hologres=智能物流

拥有回忆 提交于 2020-08-17 12:40:15
作者: 阿里巴巴菜鸟物流团队 (弃疾,孝江,姜继忠) 一、业务背景 菜鸟智能物流分析引擎是基于搜索架构建设的物流查询平台,日均处理包裹事件几十亿,承载了菜鸟物流数据的大部分处理任务。 智能物流分析引擎将基于运配网络的各类应用场景集中到了统一的一个技术架构,以此提供强大的吞吐和计算能力。基于原架构的数据处理流程为:Datahub实时采集数据源,包含仓、配、运和订单等数据,实时计算Flink基于流批一体的模式对数据预处理,形成一个以订单为单位,包含订单跟踪事件的宽表,写入存储引擎HBase中,再供外部查询。 在数据处理部分,随着数据量的增加,原有的存储系统HBase在维表全量导入中所需要的时间越来越长,这就需要耗费大量的资源,另外其单机吞吐的表现不是很好,单位成本高。在数据量较小时,成本不是需要考虑的关键因素,但当数据量规模变大时,成本的重要性就体现出来了。菜鸟智能物流每天需要处理大批量的数据,这也就意味着每天将会浪费大量的资源。 同时,在我们的场景中,有些表是作为Flink维表基于PK进行PointQuery,有些表需要进行OLAP分析,而HBase并不能两种场景都满足。为了OLAP分析,需要将数据同步到批处理系统中,为了KV查询,需要将数据同步到KVStore。不同的查询需求就需要借助多个系统,数据在不同系统之间的导入导出不仅会加深数据同步的负担,也会带来冗余存储

AI 时代,还不了解大数据?

寵の児 提交于 2020-08-17 12:25:23
如果要问最近几年,IT行业哪个技术方向最火?一定属于ABC,即AI + Big Data + Cloud,也就是人工智能、大数据和云计算。 这几年,随着互联网大潮走向低谷,同时传统企业纷纷进行数字化转型,基本各个公司都在考虑如何进一步挖掘数据价值,提高企业的运营效率。在这种趋势下,大数据技术越来越重要。所以,AI时代,还不了解大数据就真的OUT了! 相比较AI和云计算,大数据的技术门槛更低一些,而且跟业务的相关性更大。我个人感觉再过几年,大数据技术将会像当前的分布式技术一样,变成一项基本的技能要求。 前几天,我在团队内进行了一次大数据的技术分享,重点是对大数据知识做一次扫盲,同时提供一份学习指南。这篇文章,我基于分享的内容再做一次系统性整理,希望对大数据方向感兴趣的同学有所帮助,内容分成以下5个部分: 1、大数据的发展历史 2、大数据的核心概念 3、大数据平台的通用架构和技术体系 4、大数据的通用处理流程 5、大数据下的数仓体系架构 01 大数据的发展历史 在解释「大数据」这个概念之前,先带大家了解下大数据将近30年的发展历史,共经历了5个阶段。那在每个阶段中,大数据的历史定位是怎样的?又遇到了哪些痛点呢? 1.1 启蒙阶段:数据仓库的出现 20世纪90年代,商业智能(也就是我们熟悉的BI系统)诞生,它将企业已有的业务数据转化成为知识,帮助老板们进行经营决策。比如零售场景中

程序员都该懂的 CAP 定理

99封情书 提交于 2020-08-17 07:51:39
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 面对可能出现的网络延迟,不可预估的请求流量等情况,设计一个分布式系统,我们通常围绕系统高可用,数据一致性的目标去规划和实现,想要完全实现这个目标,却并非易事。由此,分布式系统领域诞生了一个基本定理,即 CAP 定理,用于指导分布式系统的设计,从系统高可用,数据一致性,网络容错三个角度将分布式系统的特性抽成一个分区容错一致性模型。这样一来,让系统设计者只需根据业务场景特点,进行权衡设计适合业务场景的分区容错一致性模型即可,很大程度简化了分布式系统设计的难度。 也因此,CAP 定理是架构师所必须要掌握的内容,它影响着架构师对分布式系统的技术选型,技术决策。既然如此重要,接下来,我们就一起学习下 CAP 定理吧。 什么是 CAP CAP 定理最初是由加州大学伯克利分校的计算机科学家埃里克·布鲁尔(Eric Brewer)在 2000 年的 ACM PODC 上提出的一个猜想,也因此被叫做布鲁尔定理。后来在 2002 年,麻省理工学院的赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)发表了 CAP 定理的证明,让它成为分布式系统领域公认的一个定理。 CAP 定理指出了,在一个跨区域网络连接,共享数据的分布式系统中,一致性(Consistency),可用性

Apache Atlas源码编译以及本地调试环境搭建

岁酱吖の 提交于 2020-08-17 07:36:03
一、Apache Atlas源码的编译 内置HBase、solr git 把 Atlas 的源码拉下来,使用 git clone https://github.com/apache/atlas.git 假如是为了本地测试我们可以直接编译内嵌 HBase solr 的 atlas 。在执行 mvn clean -DskipTests package -Pdist,embedded-hbase-solr 之前需要首先修改打包的pom文件不然有的包下载不下来。将Atlas源码中distro中的pom文件修改如下将 hbase.tar的标签的值修改为<hbase.tar>https://mirrors.huaweicloud.com/apache/hbase/${hbase.version}/hbase-${hbase.version}-bin.tar.gz</hbase.tar> ,将 solr标签的值修改为<solr.tar>https://mirrors.huaweicloud.com/apache/lucene/solr/${solr.version}/solr-${solr.version}.tgz</solr.tar> 。 在修改完成之后,执行命令 mvn clean -DskipTests package -Pdist,embedded-hbase-solr