大数据学习 第一篇——基础知识

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_45732643/article/details/102637485

前言

在学习大数据之前,先要了解他解决了什么问题,能给我们带来什么价值。一方面,以前IT行业发展没有那么快,系统的应用也不完善,数据库足够支撑业务系统。但是随着行业的发展,系统运行的时间越来越长,搜集到的数据也越来越多,传统的数据库已经不能支撑全量数据的存储工作;另一方面,数据越来越多,单机的计算已经成为瓶颈。因此,基于分布式的大数据系统崭露头角。那么大数据系统里面都有什么东西呢?


在存储上,hdfs的分布式存储可以任意水平扩展,可以解决数据存储的难题。在计算上,从最初的MapReduce,把任务水平拆分,多台机器并行计算,再汇总结果;到基于Spark的内存计算,改造Mapreduce每次数据落盘以及编程方式的痛点。

有了存储和计算框架,周边就衍生出了很多管理、缓存相关的技术,比如:

yarn解决多租户资源调度的难题,

flume解决数据传输的难题,

sqoop解决分布式存储数据与传统DB数据之间的转换,

oozie解决了大数据计算任务的调度,

kafka提供了发布订阅机制的消息队列,

zookeeper可以帮助用户完成主备的选举,

扫描二维码关注公众号,回复: 7576497 查看本文章

hive在hdfs的基础上提供了数仓的功能,

hbase则基于hdfs实现列式数据库....

上面都是hadoop生态的,由于hadoop中计算模型普遍是mapreduce,但是它的编程风格和计算机制让很多人使用不便。因此后来spark逐渐代替了mapr成为主流的计算框架。Spark也有它自己的生态,但是由于hadoop更多更早的被应用到企业,所以spark也可以无缝的集成hadoop生态中的产品。spark更多只是扮演一个计算的框架,在这个框架上,提供了基本的计算模块core,基于sql的计算引擎spark sql,对接实时数据的流式计算spark streaming,算法相关的mlib以及图计算相关的graphx。

这些框架都在这个大数据生态中扮演了自己重要的角色,他们协同工作就可以帮助我们解决很多难题。由于我也是接触不久,所以就按照自己学习和工作涉及的内容,在下面按照各个章节进行介绍,后续也会持续的更新。希望对所有对大数据感兴趣的

hdfs

hdfs是大数据系统的基础,它提供了基本的存储功能,由于底层数据的分布式存储,上层任务也可以利用数据的本地性进行分布式计算。hdfs思想上很简单,就是namenode负责数据存储位置的记录,datanode负责数据的存储。使用者client会先访问namenode询问数据存在哪,然后去datanode存储;写流程也基本类似,会先在namenode上询问写到哪,然后把数据存储到对应的datanode上。所以namenode作为整个系统的灵魂,一旦它挂掉了,整个系统也就无法使用了。在运维中,针对namenode的高可用变得十分关键。

mapreduce

hive

hive基于hdfs构建了数据仓库系统,它以hdfs作为存储,依赖于数据库(嵌入式的数据库derby或者独立的数据mysql或oracle)存储表schema信息,并完成基于sql自动解析创建mapreduce任务(由于mapreduce计算效率比较差,目前官方推荐的是底层计算模型采用tez或者spark)。所以hive可以理解为:hdfs原始存储+DB Schema信息存储+SQL解析引擎+底层计算框架组成的数据仓库。

spark

spark是现在大数据中应用最多的计算模型,它与java8的stream编程有相同的风格。封装了很多的计算方法和模型,以延迟执行的方式,在真正需要执行的时候才进行运算。既可以有效的做计算过程的容错,也可以改善我们的编程模型。

oozie

oozie提供了大数据场景下各种任务的调度,比如shell脚本、spark任务、mapreduce任务、sqoop任务、hive查询以及普通的java程序等等。它的编译是生态圈里面最复杂的,由于以来的各个版本不同,需要指定特定的版本,因此没有成型的一键部署包。

sqoop

sqoop支持基于sql或者表名把数据库中的数据存储到分布式环境中,数据库支持oracle\mysql等等,分布式环境可以是hdfs,hive,hbase等等,数据的导入时双向的,比如你可以把oracle中的数据读取存储到hdfs,也可以把hdfs的数据导入到oracle.

hbase

HBase是基于Hdfs之上的列式数据库,基于文件分割以及rowkey的顺序存储,能快速索引查询数据。我这边是在推荐系统中,作为推荐结果存储引擎,不过由于内容比较碎片化,Hbase写入时间比较随意,因此总会出现大量超时现象,还在持续优化中。

yarn

在企业中,大数据的基础平台往往是多个用户共用的,那么如何管理资源的分配,就需要yarn来处理了。Yarn默认提供了三种资源分配的策略:

FIFO:先进先出,即按照用户提交任务的时间分配资源

Capacity:按照队列设置队列的大小

Fair Share:也是基于队列,只不过资源的粒度更小。

常见可以用于分配的资源可以是节点的数量,内存的大小,也可以是CPU核数。

zookeeper

从名字来说他是动物园的管理员,实际上他是各个组件的协调者。可以实现类似主从选举、分布式事务、负载均衡等多种功能,比如HDFS HA方案、HBase的Metastore、Kafka里面的offset维护等等,由此可以见,zookeeper的重要性。

不过激发我学习zookeeper的主要原因还是因为它里面涉及了很多分布式协议的东西,从而能更好的理解分布式中的一些概念。所以,就跟着我一起深入浅出的学习吧!想要在大数据这个领域汲取养分,让自己壮大成长。分享方向,行动以前先分享下一个大数据交流分享资源群870097548,欢迎想学习,想转行的,进阶中你加入学习。

大数据里面的角色

角色一:大数据工程

大数据工程需要解决数据的定义、收集、计算与保存的工作,因此大数据工程师们在设计和部署这样的系统时首要考虑的是数据高可用的问题,即大数据工程系统需要实时地为下游业务系统或分析系统提供数据服务;

角色二:大数据分析

大数据分析角色定位于如何利用数据——即从大数据工程系统中接收到数据之后如何为企业或组织提供有产出的数据分析,并且确实能够帮助到公司进行业务改善或提升服务水平,所以对于大数据分析师来说,他们首要解决的问题是发现并利用数据的价值,具体可能包括:趋势分析、模型建立以及预测分析等。

这两类角色相互依存但又独立运作,何意?没有大数据工程,大数据分析便无从谈起;但倘若没有大数据分析,我也实在想不出大数据工程存在的理由。这就类似于结婚和谈恋爱——恋爱的目的是为了结婚,且不以结婚为目的的谈恋爱都是耍流氓。

简单总结一下,大数据工程角色需要考虑数据的收集、计算(或是处理)和保存;大数据分析角色则是执行数据的高级计算。

三,大数据工程师

针对角色一:大数据工程说,对应的工作岗位就叫大数据工程师,对于大数据工程师而言,您至少要掌握以下技能:

大数据学习路线(完整细节版)

大数据学习路线

java

(Java se,javaweb)

Linux(shell,高并发架构,lucene,solr)

Hadoop(Hadoop,HDFS,Mapreduce,yarn,hive,hbase,sqoop,zookeeper,flume)

机器学习(R,mahout)

Storm(Storm,kafka,redis)

Spark(scala,spark,spark core,spark sql,spark streaming,spark mllib,spark graphx)

Python(python,spark python)

云核算渠道(docker,kvm,openstack)

名词解释

一、Linux

lucene: 全文检索引擎的架构

solr: 根据lucene的全文查找服务器,完结了可装备、可扩展并对查询功用进行了优化,而且供给了一个完善的功用办理界面。

二、Hadoop

HDFS

: 分布式存储体系,包含NameNode,DataNode。NameNode:元数据,DataNode。DataNode:存数数据。

yarn: 能够理解为MapReduce的和谐机制,本质就是Hadoop的处理剖析机制,分为ResourceManager NodeManager。

MapReduce: 软件结构,编写程序。

Hive: 数据仓库 能够用SQL查询,能够运行Map/Reduce程序。用来核算趋势或许网站日志,不该用于实时查询,需求很长时刻回来成果。

HBase: 数据库。十分合适用来做大数据的实时查询。Facebook用Hbase存储音讯数据并进行音讯实时的剖析

ZooKeeper: 针对大型分布式的可靠性和谐体系。Hadoop的分布式同步等靠Zookeeper完结,例如多个NameNode,active standby切换。

Sqoop: 数据库彼此搬运,关系型数据库和HDFS彼此搬运

Mahout: 可扩展的机器学习和数据发掘库。用来做引荐发掘,集合,分类,频频项集发掘。

Chukwa: 开源搜集体系,监督大型分布式体系,建立在HDFS和Map/Reduce结构之上。显现、监督、剖析成果。

Ambari: 用于装备、办理和监督Hadoop集群,根据Web,界面友爱。

二、Cloudera

Cloudera Manager: 办理 监控 确诊 集成

Cloudera CDH:(Cloudera's Distribution,including Apache Hadoop) Cloudera对Hadoop做了相应的改动,发行版别称为CDH。

Cloudera Flume: 日志搜集体系,支撑在日志体系中定制各类数据发送方,用来搜集数据。

Cloudera Impala: 对存储在Apache Hadoop的HDFS,HBase的数据供给直接查询互动的SQL。

Cloudera hue: web办理器,包含hue ui,hui server,hui db。hue供给一切CDH组件的shell界面的接口,能够在hue编写mr。

三、机器学习/R

R

: 用于统计剖析、绘图的言语和操作环境,现在有Hadoop-R

mahout: 供给可扩展的机器学习范畴经典算法的完结,包含聚类、分类、引荐过滤、频频子项发掘等,且可经过Hadoop扩展到云中。

四、storm

Storm

: 分布式,容错的实时流式核算体系,能够用作实时剖析,在线机器学习,信息流处理,连续性核算,分布式RPC,实时处理音讯并更新数据库。

Kafka: 高吞吐量的分布式发布订阅音讯体系,能够处理消费者规划的网站中的一切动作流数据(阅读,查找等)。相对Hadoop的日志数据和离线剖析,能够完结实时处理。现在经过Hadoop的并行加载机制来一致线上和离线的音讯处理

Redis: 由c言语编写,支撑网络、可根据内存亦可耐久化的日志型、key-value型数据库。

五、Spark

Scala

: 一种类似java的彻底面向对象的编程言语。

jblas: 一个快速的线性代数库(JAVA)。根据BLAS与LAPACK,矩阵核算实践的行业标准,并运用先进的根底设施等一切的核算程序的ATLAS艺术的完结,使其十分快。

Spark: Spark是在Scala言语中完结的类似于Hadoop MapReduce的通用并行结构,除了Hadoop MapReduce所具有的长处,但不同于MapReduce的是job中心输出成果能够保存在内存中,从而不需求读写HDFS,因而Spark能更好的适用于数据发掘与机器学习等需求迭代的MapReduce算法。能够和Hadoop文件体系并行运作,用过Mesos的第三方集群结构能够支撑此行为。

Spark SQL: 作为Apache Spark大数据结构的一部分,可用于结构化数据处理并能够履行类似SQL的Spark数据查询

Spark Streaming:一种构建在Spark上的实时核算结构,扩展了Spark处理大数据流式数据的才能。

Spark MLlib: MLlib是Spark是常用的机器学习算法的完结库,现在(2014.05)支撑二元分类,回归,聚类以及协同过滤。一起也包含一个底层的梯度下降优化根底算法。MLlib以来jblas线性代数库,jblas自身以来长途的Fortran程序。

Spark GraphX: GraphX是Spark中用于图和图并行核算的API,能够在Spark之上供给一站式数据解决方案,能够便利且高效地完结图核算的一整套流水作业。

Fortran: 最早呈现的核算机高档程序设计言语,广泛应用于科学和工程核算范畴。

BLAS: 根底线性代数子程序库,具有很多现已编写好的关于线性代数运算的程序。

LAPACK: 闻名的揭露软件,包含了求解科学与工程核算中最常见的数值线性代数问题,如求解线性方程组、线性最小二乘问题、特征值问题和奇特值问题等。

ATLAS: BLAS线性算法库的优化版别。

Spark Python: Spark是由scala言语编写的,但是为了推广和兼容,供给了java和python接口。

六、Python

Python

: 一种面向对象的、解释型核算机程序设计言语。

七、云核算渠道

Docker

: 开源的应用容器引擎

kvm: (Keyboard Video Mouse)

openstack:  开源的云核算办理渠道项目


 


 

猜你喜欢

转载自blog.csdn.net/weixin_45732643/article/details/102637485