大数据技术

CSDN话题挑战赛第2期
参赛话题:大数据技术分享

目录

一、大数据技术

1.大数据的定义

2.大数据的特征

3.大数据框架

4.数据采集

5.数据存储

6.数据处理

7.资源管理

8.ETL任务管理

9.数据应用以及分析工具

二、大数据场景

三、大数据算法

1.hash映射

2.Trie树

四、市场需求及个人学习路线

五、总结


一、大数据技术

“大数据”三个字我相信大家都不会陌生,那大数据到底是什么,底层结构、概念是什么,却完全不懂,但在整个互联网与软件的发展过程中,大数据的开发技术与框架一直在不断的更迭,同时数据的存储与使用也是贯穿始终。

这篇文章,就用通俗易懂对的语言,今天和大家聊聊大数据的相关内容。

1.大数据的定义

美国芝加哥大学商学院教授詹姆斯·麦肯锡在全球研究所给出的定义是一种规模大到存储、管理以及获取超出了传统数据库能力范围的数据集合,海量规模,快速的数据转换数据类型和价值密度等强大功能。大数据最大的特征,自然就是数据量大,传统的软件Word。Mysql都无法很好的支持分析无论是存储还是计算,处理技术也不同。

2.大数据的特征

(1)数据量大(Volume)

大数据的显而易见的特征就是其庞大的数据规模。随着信息技术的发展,互联网规模的不断扩大,每个人的生活都被记录在了大数据之中,由此数据本身也呈爆发性增长。其中大数据的计量单位也逐渐发展,现如今对大数据的计量已达到EB了。

(2)类型多样(Variety)

在数量庞大的互联网用户等因素的影响下,大数据的来源十分广泛,因此大数据的类型也具有多样性。大数据由因果关系的强弱可以分为三种,即结构化数据、非结构化数据、半结构化数据,它们统称为大数据。资料表明,结构化数据在整个大数据中占比较大,高达百分之七十五,但能够产生高价值的大数据却是非结构化数据。

(3)价值密度(Value)

大数据所有的价值在大数据的特征中占核心地位,大数据的数据总量与其价值密度的高低关系是成反比的。同时对于任何有价值的信息,都是在处理海量的基础数据后提取的。在大数据蓬勃发展的今天,人们一直探索着如何提高计算机算法处理海量大数据,提取有价值信息的的速度这一难题。

(4)快速(Velocity)

大数据的高速特征主要体现在数据数量的迅速增长和处理上。与传统媒体相比,在如今大数据时代,信息的生产和传播方式都发生了巨大改变,在互联网和云计算等方式的作用下,大数据得以迅速生产和传播,此外由于信息的时效性,还要求在处理大数据的过程中要快速响应,无延迟输入、提取数据。

3.大数据框架

企业的数据,从生产、存储、分析、应用等都会经历各个处理流程,它们之间有着相互关联,就形成了大数据的架构,就如同手足兄弟构成的一个大家庭。通常来说,我们查看数据报表,进行预算之前数据都会尽力这几个流程。

大数据技术_第1张图片

■ 数据采集:将应用程序产生的数据和日志等同步到大数据系统中。
■ 数据存储:海量的数据,需要存储在系统中,方便查询。
■ 数据处理:原始数据经过层层过滤、拼接、转换才能应用,有两种类型的数据处理,一种是离线的批量处理,另一种是实时在线分析。
■ 数据应用:经过处理的数据可以对外提供服务,如生成可视化的报表、作为互动式分析的素材、提供给推荐系统训练模型等等。

我们常用的大数据都是基于Hadoop生态的。Hadoop是一个分布式系统基础架构,换句话说它的数据存储和加工过程都是分布式的,由多个机器共同完成。通过这样的并行处理,提高安全性和数据处理规模。

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。我们可以把HDFS(Hadoop Distributed File System)理解为一套分布式的文件系统,大数据架构里的海量数据就是存储在这些文件里,我们每次分析,也都是从这些文件里取数。

大数据技术_第2张图片

 4.数据采集

数据是存在什么地方的呢?它是从业务系统、内外部文件等不同场景下采集的,包括数据库的同步,数据传输等。

■ 数据迁移:Sqoop是一个在结构化数据和Hadoop之间进行批量数据迁移的工具,结构化数据可以是MySQL、Oracle等RDBMS。用户可以在 Sqoop 的帮助下,轻松地把关系型数据库的数据导入到 Hadoop 与其相关的系统 (如HBase和Hive)中;同时也可以把数据从 Hadoop 系统里抽取并导出到关系型数据库里。
■ 日志采集:Flume是一个分布式的海量日志采集系统。支持在日志系统中定制各类数据发送方,并写到各种数据接受方的能力。它的基本结构如下,包含三个部分:数据收集组件Source,缓存Channel,保存Sink。多个Agent也可以组合使用。

■ 数据传输:Kafka是一个著名的分布式消息队列。通过它,数据的发送方和接收方可以准确、稳定的传输数据。它以可水平扩展,并支持高吞吐率。

5.数据存储

采集的数据需要保存到Hadoop里,它们保存为一个一个的HDFS文件。除了HDFS以外,Hadoop还提供了一些配套工具,如便于实时处理数据的列族数据库Hbase,以及一个类似SQL的查询工具Hive,方便对HDFS数据进行查询。

■  HDFS:在Hadoop里,底层的数据文件都存储在HDFS里,它是大数据的底层基础。HDFS容错率很高,即便是在系统崩溃的情况下,也能够在节点之间快速传输数据。
■  Hbase:是一个高可靠性、高性能、面向列、可伸缩的分布式列族数据库,可以对大数据进行随机性的实时读取/写入访问。基于HDFS而建。
■  Hive:是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低。

6.数据处理:

■  批数据处理:批处理是指一次批量的数据处理,它存在明确的开始和结束节点。常见的技术包括Hadoop自带的MapReduce,以及Spark。
■  MapReduce:如前文所说,通过Hadoop的MapReduce功能,可以将大的数据处理任务,拆分为分布式的计算任务,交给大量的机器处理,最终等处理完后拼接成我们需要的结果。这是一张批量处理的逻辑。
■  Spark:Spark是一个高速、通用大数据计算处理引擎。拥有Hadoop MapReduce所具有的优点,但不同的是Job的中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
■  流数据处理:对于一些需要实时不间断处理的数据而言,等待MapReduce一次次缓慢加工,将文件反复保存到HDFS里并读取,显然太费时间了。一些新的流式数据处理工具被研发出来,它们的处理流程和批处理完全不同:

大数据技术_第3张图片

7.资源管理:

在完成大数据处理任务的过程中,难免会涉及到多个任务、服务之间协调。这里面既包括资源的协调,也包括任务的协调。

■  ZooKeeper:是一个分布式的,开放源码的分布式应用程序协调服务。
■  Yarn:是一个分布式资源调度器组件。这个组件的主要作用是在每次接收到请求后,会查看当下的各个子节点的状况,统筹出运算资源的调度方案来保证任务可以顺利执行。

8.ETL任务管理

■  Kettle:这是一个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的界面来描述任务过程和彼此的依赖关系,以此来设定任务流程。
■  Azkaban:是一款基于Java编写的任务调度系统任务调度,来自LinkedIn公司,用于管理他们的Hadoop批处理工作流。

9.数据应用以及分析工具:
数据处理完后,最终要想发挥价值,很重要的环节是进行分析和展示。很多工具都能提供分析支持,例如Kylin和Zeppelin。

■Kylin:是一个开源的分布式分析引擎,提供了基于Hadoop的超大型数据集(TB/PB级别)的SQL接口以及多维度的OLAP分布式联机分析。通过预先定义cube的方式,使得它能在亚秒内查询巨大的Hive表。
■Zeppelin:是一个提供交互数据分析且基于Web的笔记本。方便你做出可数据驱动的、可交互且可协作的精美文档,并且支持多种语言,包括 Python(Apache Spark)、SparkSQL、Shell等。

二、大数据场景

大数据的核心是数据流与业务流,目的是为企业增加收益或进行辅助决策。对于不同的业务场景,可能需要使用完全不同的技术架构,如离线计算、实时计算、私有云、公有云,以及是否需要对数据进行脱敏处理等等细节上的考虑。

在医学方面,医药公司能够通过大数据技术分析来自互联网上的公众疾病药品需求趋势,确定更有效率的投入产出比,合理配置有限研发资源。除此之外,在医药副作用研究方面,医疗大数据技术可以避免临床试验法、药物副作用报告分析法等传统方法存在的样本数小、采样分布有限等问题,从千百万患者的数据中挖掘到与某种药物相关的不良反应,样本数大,采样分布广,所获得结果更具有说服力。此外,还可以从社交网中搜索到大量人群服用某种药物的不良反应记录,通过比对分析和数据挖掘方法,更科学、更全面地获得药物副作用的影响。

在金融领域,银行可以利用持卡人基本信息、卡基本信息、交易历史、客户历史行为模式、正在发生行为模式等,结合智能规则引擎进行实时的交易反欺诈分析。例如,IBM金融犯罪管理解决方案帮助银行利用大数据有效地预防与管理金融犯罪;摩根大通银行利用大数据技术追踪盗取客户账号或侵入自动柜员机(ATM)系统的罪犯。

在农业领域,大数据最普遍的应用就是精准农业。通过对气候、土壤和空气质量、作物成熟度,甚至是设备和劳动力的成本及可用性方面的实时数据收集,预测分析可以用来做出更明智的决策,而这就是所谓的精准农业。

三、大数据算法

在数据分析领域中,大数据集群为基本的统计分析/结构化处理提供了有力的保障。但对于业务的垂直领域,需要使用各种算法模型来完成数据挖掘与分析。大数据必然涉及海量数据,所谓海量数据,就是数据量太大,要么在短时间内无法计算出结果,要么因为数据太大无法一次性装入内存。针对时间,我们可以使用巧妙的算法搭配合适的数据结构,如bitmap/堆/trie树等进行优化。针对空间,就一个办法,大而化小,分而治之,常采用hash映射等方法。在这里我就列举两个常用的算法。

1.hash映射
这里的hash映射是指通过一种哈希算法,将海量数据均匀分布在对应的内存或更小的文件中,这是一种分而治之的实现思想。

使用Hash映射有个最重要的特点是: Hash值相同的两个串不一定一样,但是两个一样的字符串hash值一定相等(如果不相等会存在严重安全问题,比如两个人的账号信息经过哈希后映射到同一个值)。

大数据技术_第4张图片

2.Trie树

Trie,又叫前缀树,字典树等等。它有很多变种,如后缀树,Radix Tree(基树,Linux内核采用这种数据结构用以实现快速查找)。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。例如,要想实现某个单词的快速查找,可以采用如下Trie树将每个单词存储起来,这样存储的好处就在于,要想查找的时候可以根据单词排除大量非关联分支,提高查询速度。

大数据技术_第5张图片

四、市场需求及个人学习路线

目前大数据专业几乎已经普及到了所有的高校中,越来越多的小伙伴正在学习大数据,或准备学习大数据。在上面给大家介绍了大数据的架构,怎样生产、存储、分析、应用等,那么,现在来给大家讲一下大数据的市场需求以及我个人学习路线。

写回答

北京联科数据
大数据发展极大地推动了数据驱动的智能经济形成,智能经济时代的劳动力市场结构发生结构性变化,就业门槛从单一技能型演变为高技能复合型,就业领域向数字信息化方向不断突破更迭,就业范围从集中式向多区域扩散发展,企业数量不断上升。

在这一结构性变化中,如果求职者的知识和技能不能适时转换和提升从而适应新的岗位需求,那么技术进步给我们带来的好处将无法实现,甚至可能面临就业不充分、分配结构恶化等严重社会问题。在数字经济的变革中,人才作为发展的第一资源,能否与企业完美匹配并发挥价值,显得尤为重要。

在美国:

据美国大数据及商业智慧软件公司 SiSense 调查研究指出,资讯分析相关人才起薪约为年薪 5.5 万美元,换句话说,相较美国大学毕业生平均年薪为 4.76 万美元,高出 7400 美元,而最高薪的数据科学家,平均年薪为 13.2 万美元,打败一大票科技公司的高阶工程师,而且这个差距还在继续拉大中。

在中国,根据数据报告显示,大数据开发工程师的年薪约在24万左右,同时《大数据人才报告》显示,目前全国的大数据人才仅46万,未来3-5年内大数据人才的缺口将高达150万。对于懂得如何利用大数据做决策的分析师和经理的岗位缺口则将达到150万,国内互联网公司,大数据分析师的薪酬可能要比同一个级别的其他职位高20%至30%;

在《基于大数据的互联网行业人才薪资影响因素分析》一文中,郭丽清通过搭建爬虫框架获取某招聘网站3万多条招聘信息,经过一系列的数据清洗处理后,通过数据分析及挖掘得到如下一些结论:

■ 对于互联网行业,人才需求量主要集中在北京、上海、广州、深圳、杭州等一线和新一线城市;

■ 工作经验积累3-5年后薪资呈明显上升趋势;

■  在工作岗位方面,Java、Android、iOS等研发技术岗位依旧是主流的热门岗位;

■  从学历看,拥有硕/博教育背景的人才,薪资水平普遍高于20k+/月,且薪资上限远远高于本科及以下学历;

■ 岗位类型方面,新兴起的数据分析相关职位薪资最高,大数据方面薪资诱人;

■ 公司规模方面,规模在500人以上的薪资最高,规模少于50人的公司,最高薪资和最低薪资差距较大。

本段是我个人的学习路线,考虑到有对大数据开发感兴趣的同学,因为找资料方向上特别迷茫,不知道大数据具体需要学习什么组件。为了让大家少走弯路,我就把之前的学习笔记发一遍,可以为大家学习大数据方面以及面试求职有一个很好的认知。

Java学习阶段
为什么学习大数据也要学Java?
Hadoop生态圈底层都是使用Java开发的,如果涉及到源码的修改需要看懂Java
Java的生态相比于其他语言(Python、R等)发展比较成熟
第一阶段基础知识
注意:基础知识其实和大学课上讲的Java知识点差不多,但是也有很多对于课堂内容的补充。

Python学习阶段

Python编程语言是一门解释性语言,通俗易懂,简洁,它给我带来了很大的兴趣,以至于我去学习、去了解,俗话说:“技多不压身”,多学点,不是什么坏事。

五、总结

大数据时代已经成为炙手可得的话题,对大数据感兴趣的朋友们,可以详细阅读,另外,再给大家推荐一本书,《大数据时代》这本书写的很好,给我了很多启发。有空的话可以去看看。

本期内容就到这里啦!打字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找!!!

你可能感兴趣的:(大数据,云计算)