大数据培训之核心知识点Hbase、Hive、Spark和MapReduce的概念理解、特点及机制等
今天,上海尚学堂大数据培训班毕业的一位学生去参加易普软件公司面试,应聘的职位是大数据开发。面试官问了他10个问题,主要集中在Hbase、Spark、Hive和MapReduce上,基础概念、特点、应用场景等问得多。看来,还是非常注重基础的牢固。整个大数据开发技术,这几个技术知识点占了很大一部分。那本篇文章就着重介绍一下这几个技术知识点。
一、Hbase
1.1、Hbase是什么?
HBase是一种构建在HDFS之上的分布式、面向列的存储系统。在需要实时读写、随机访问超大规模数据集时,可以使用HBase。
尽管已经有许多数据存储和访问的策略和实现方法,但事实上大多数解决方案,特别是一些关系类型的,在构建时并没有考虑超大规模和分布式的特点。许多商家通过复制和分区的方法来扩充数据库使其突破单个节点的界限,但这些功能通常都是事后增加的,安装和维护都和复杂。同时,也会影响RDBMS的特定功能,例如联接、复杂的查询、触发器、视图和外键约束这些操作在大型的RDBMS上的代价相当高,甚至根本无法实现。
HBase从另一个角度处理伸缩性问题。它通过线性方式从下到上增加节点来进行扩展。HBase不是关系型数据库,也不支持SQL,但是它有自己的特长,这是RDBMS不能处理的,HBase巧妙地将大而稀疏的表放在商用的服务器集群上。
HBase 是Google Bigtable 的开源实现,与Google Bigtable 利用GFS作为其文件存储系统类似, HBase 利用Hadoop HDFS 作为其文件存储系统;Google 运行MapReduce 来处理Bigtable中的海量数据, HBase 同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable 利用Chubby作为协同服务, HBase 利用Zookeeper作为对应。
1.2、HBase的特点
◆大:一个表可以有上亿行,上百万列。
◆面向列:面向列表(簇)的存储和权限控制,列(簇)独立检索。
◆稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
◆无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。
◆数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。
◆数据类型单一:HBase中的数据都是字符串,没有类型。
更多信息阅读:《Hbase简介》、《Hbase体系架构和集群安装》、《HBase数据模型》
二、Spark
Spark是Apache的一个顶级项目,是一个快速、通用的大规模数据处理引擎。Apache Spark是一种快速、通用的集群计算系统。它提供了Java、Scala、Python和R的高级API,以及一个支持通用执行图的优化引擎。它还支持丰富的高级工具集,包括用于SQL和结构化数据处理的Spark SQL、用于机器学习的MLlib、图形处理的GraphX和Spark流。
Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的Mapreduce的算法。
Spark的中间数据放到内存中,对于迭代运算效率更高。Spark更适合于迭代运算比较多的ML和DM运算。因为在Spark里面,有RDD的抽象概念。Spark比Hadoop更通用。
Spark可以用来训练推荐引擎(Recommendation Engine)、分类模型(Classification Model)、回归模型(Regression Model)、聚类模型(Clustering Model)。
更多关于Spark的文章阅读:《【上海大数据培训】Spark集群运行、读取、写入Hbase数据》、《【上海大数据培训】Spark集群的运行过程》
三、Hive
3.1、Hive是什么
◆由Facebook开源,最初用于解决海量结构化的日志数据统计问题;
◆构建在Hadoop之上的数据仓库;
◆Hive定义了一种类SQL查询语言:HQL(类似SQL但不完全相同);
◆通常用于进行离线数据处理(采用MapReduce);
◆底层支持多种不同的执行引擎(Hive on MapReduce、Hive on Tez、Hive on Spark);
◆支持多种不同的压缩格式、存储格式以及自定义函数(压缩:GZIP、LZO、Snappy、BZIP2.. ;
◆存储:TextFile、SequenceFile、RCFile、ORC、Parquet ; UDF:自定义函数)。
3.2、为什么要使用Hive
◆简单、容易上手(提供了类似SQL查询语言HQL);
◆为超大数据集设计的计算/存储扩展能力(MR计算,HDFS存储);
◆统一的元数据管理(可与Presto/Impala/SparkSQL等共享数据)。
3.3 Hive架构
上图中,可以通过CLI(命令行接口),JDBC/ODBC,Web GUI 访问hive。于此同时hive的元数据(hive中表结构的定义如表有多少个字段,每个字段的类型是什么)都存储在关系型数据库中。三种链接hive的方式最后统一通多一个Diveer 的程序将sql 转化成mapreduce的job任务去执行。
更多Hive信息阅读:《Hive是什么?Hive特点、工作原理,Hive架构,Hive与HBase联系和区别》、《Hive常用字符串函数汇总》、《Hive数据仓库之快速入门》
四、Mapreduce
4.1、MapReduce是什么?
MapReduce 是一个分布式运算程序的编程框架,是用户开发“基于 hadoop 的数据分析 应用”的核心框架。MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。简单地说,MapReduce就是"任务的分解与结果的汇总"。
在分布式计算中,MapReduce框架负责处理了并行编程中分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,把处理过程高度抽象为两个函数:map和reduce,map负责把任务分解成多个任务,reduce负责把分解后多任务处理的结果汇总起来。
4.2、为什么需要 MapReduce?
◆ 海量数据在单机上处理因为硬件资源限制,无法胜任。
◆ 而一旦将单机版程序扩展到集群来分布式运行,将极大增加程序的复杂度和开发难度。
◆引入 MapReduce 框架后,开发人员可以将绝大部分工作集中在业务逻辑的开发上,而将 分布式计算中的复杂性交由框架来处理。
4.3、MapReduce核心机制
MapReduce核心就是map+shuffle+reducer,首先通过读取文件,进行分片,通过map获取文件的key-value映射关系,用作reducer的输入,在作为reducer输入之前,要先对map的key进行一个shuffle,也就是排个序,然后将排完序的key-value作为reducer的输入进行reduce操作,当然一个MapReduce任务可以不要有reduce,只用一个map。
更多MapReduce的文章阅读:《MapReduce设计及工作原理分析》
以上就是总结的Hbase、Spark、Hive、MapReduce的概念理解和特点,以及一些应用场景和核心机制。欢迎大家评论留言,需要相关学习资料也可以留言联系。
大数据培训之核心知识点Hbase、Hive、Spark和MapReduce的概念理解、特点及机制等相关推荐
- 大数据培训Hive的数据存储与压缩
行存储与列存储 当今的数据处理大致可分为两大类,联机事务处理 OLTP(on-line transaction processing)联机分析处理 OLAP(On-Line Analytical Pr ...
- 深圳大数据培训:大数据开发之掌握Hive的静态分区与动态分区
深圳大数据培训:大数据开发之掌握Hive的静态分区与动态分区 分区是hive存放数据的一种方式.将列值作为目录来存放数据,就是一个分区. 这样查询时使用分区列进行过滤,只需根据列值直接扫描对应目录下的 ...
- 深圳大数据培训:好程序员大数据学习路线之hive 存储格式
深圳大数据培训:好程序员大数据学习路线之hive 存储格式 好程序员大数据学习路线之hive存储格式,hive的存储格式通常是三种:textfile . sequencefile . rcfile . ...
- 2018大数据培训学习路线图(详细完整版)
2018大数据培训学习路线全课程目录+学习线路详解(详细完整版) 第一阶段:大数据基础Java语言基础阶段 1.1:Java开发介绍 1.1.1 Java的发展历史 1.1.2 Java的应用领域 1 ...
- 大数据培训 | 数据仓库构建方法论和实践
数据仓库的价值 构思一个主题讨论数据仓库的构建方法论,包括数据仓库的价值.选型.构建思路,随着数据规模膨胀和业务复杂度的提升,大型企业需要构建企业级的数据仓库(数据湖)来快速支撑业务的数据化需求,与传 ...
- 大数据培训哪家好?大数据都学什么?
大数据都学什么?大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样化的 ...
- 大数据培训:Hadoop HDFS 实现原理
一.HDFS体系结构 1.1 HDFS 简介 Hadoop分布式文件系统 (HDFS) 是运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File S ...
- 大数据培训机构靠谱吗
说到大数据许多人喜欢以hadoop作为代名词,的确学习大数据hadoop很重要,而除了该软件之外还有许多其他系统软件也属于必学范畴.想要系统学习大数据课程?找个机构报班会更好哦,在大数据培训机构内有了 ...
- 大数据培训:Spark 性能调优详解
调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题--数据倾斜,此时Spark作业的性能会比期望差很多.数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的 ...
最新文章
- 在C#代码中获取Silverlight的初始化initparams参数
- 约翰霍姆金斯大学_the I-STAR Lab
- android实现录像功能吗,Android实现录屏直播(一)ScreenRecorder的简单分析
- DataTrigger
- centos进程php-fpm,CentOS 6.x 开启Nginx和Php-fpm状态统计
- 笔记︱信用风险模型(申请评分、行为评分)与数据准备(违约期限、WOE转化)
- 选offer的5个维度
- 提供了一个UBUNTU安装NVIDIA驱动的脚本的下载
- PTA程序设计类实验辅助教学平台-基础编程题--JAVA--7.3 逆序的三位数
- 澳洲国立大学的计算机专业,澳洲国立大学计算机专业前景和申请详解
- DAOs(去中心化自治组织)
- Java即时编译器原理解析及实践
- python查找公共前缀_Python练习【3】【罗马数字转换/查找公共前缀】
- PHPJavaJavascript通用RSA加密
- Can not set java.util.Date field com.atguigu.qqzone.pojo.Topic.topicDate to null value
- 《致我们终将逝去的青春》经典语录
- A Generic Deep Architecture for Single Image Reflection Removal and Image Smoothing(CEILNet)
- 按数字递增批量重命名文件的批处理
- 【实验三】LZW编解码算法实现与分析
- Web前端布局实战:三国杀页面布局(上)