导航:首页 > 数据处理 > 大数据怎么跑job

大数据怎么跑job

发布时间:2025-01-08 08:02:29

Ⅰ 如何入门大数据

大数据
数据科学并没有一个独立的学科体系,统计学,机器学习,数据挖掘,数据库,分布式计算,云计算,信息可视化等技术或方法来对付数据。
但从狭义上来看,我认为数据科学就是解决三个问题:
1. data pre-processing;(数据预处理)
2. data interpretation;(数据解读)
3.data modeling and analysis.(数据建模与分析)
这也就是我们做数据工作的三个大步骤:
1、原始数据要经过一连串收集、提取、清洗、整理等等的预处理过程,才能形成高质量的数据;
2、我们想看看数据“长什么样”,有什么特点和规律;
3、按照自己的需要,比如要对数据贴标签分类,或者预测,或者想要从大量复杂的数据中提取有价值的且不易发现的信息,都要对数据建模,得到output。
这三个步骤未必严谨,每个大步骤下面可能依问题的不同也会有不同的小步骤,但按我这几年的经验来看,按照这个大思路走,数据一般不会做跑偏。
这样看来,数据科学其实就是门复合型的技术,既然是技术就从编程语言谈起吧,为了简练,只说说R和Python。但既然是荐数据科学方面的书,我这里就不提R/Python编程基础之类的书了,直接上跟数据科学相关的。
R programming
如果只是想初步了解一下R语言已经R在数据分析方面的应用,那不妨就看看这两本:
R in action:我的R语言大数据101。其实对于一个没有任何编程基础的人来说,一开始就学这本书,学习曲线可能会比较陡峭。但如果配合上一些辅助材料,如官方发布的R basics(http://cran.r-project.org/doc/contrib/usingR.pdf),stackoverflow上有tag-R的问题集(Newest ‘r’ Questions),遇到复杂的问题可在上面搜索,总会找到解决方案的。这样一来,用这本书拿来入门学习也问题不大。而且这本书作者写得也比较轻松,紧贴实战。
Data analysis and graphics using R:使用R语言做数据分析的入门书。这本书的特点也是紧贴实战,没有过多地讲解统计学理论,所以喜欢通过情境应用来学习的人应该会喜欢这本入门书。而且这本书可读性比较强,也就是说哪怕你手头没电脑写不了代码,有事没事拿出这本书翻一翻,也能读得进去。
但如果你先用R来从事实实在在的数据工作,那么上面两本恐怕不够,还需要这些:
Modern applied statistics with S:这本书里统计学的理论就讲得比较多了,好处就是你可以用一本书既复习了统计学,又学了R语言。(S/Splus和R的关系就类似于Unix和Linux,所以用S教程学习R,一点问题都没有)
Data manipulation with R:这本书实务性很强,它教给你怎么从不同格式的原始数据文件里读取、清洗、转换、整合成高质量的数据。当然和任何一本注重实战的书一样,本书也有丰富的真实数据或模拟数据供你练习。对于真正从事数据处理工作的人来说,这本书的内容非常重要,因为对于任何研究,一项熟练的数据预处理技能可以帮你节省大量的时间和精力。否则,你的研究总是要等待你的数据。
R Graphics Cookbook:想用R做可视化,就用这本书吧。150多个recipes,足以帮你应付绝大多数类型的数据。以我现在极业余的可视化操作水平来看,R是最容易做出最漂亮的图表的工具了。
An introction to statistical learning with application in R:这本书算是着名的the element of statistical learning的姊妹篇,后者更注重统计(机器)学习的模型和算法,而前者所涉及的模型和算法原没有后者全面或深入,但却是用R来学习和应用机器学习的很好的入口。
A handbook of statistical analysis using R:这本书内容同样非常扎实,很多统计学的学生就是用这本书来学习用R来进行统计建模的。
Python
Think Python,Think Stats,Think Bayes:这是Allen B. Downey写的着名的Think X series三大卷。其实是三本精致的小册子,如果想快速地掌握Python在统计方面的操作,好好阅读这三本书,认真做习题,答案链接在书里有。这三本书学通了,就可以上手用Python进行基本的统计建模了。
Python For Data Analysis: 作者是pandas的主要开发者,也正是Pandas使Python能够像R一样拥有dataframe的功能,能够处理结构比较复杂的数据。这本书其实analysis讲得不多,说成数据处理应该更合适。掌握了这本书,处理各种糟心的数据就问题不大了。
Introction to Python for Econometrics, Statistics and Data Analysis:这本书第一章就告诉你要安装Numpy, Scipy, Matplotlib, Pandas, IPython等等。然后接下来的十好几章就是逐一介绍这几个库该怎么用。很全面,但读起来比较枯燥,可以用来当工具书。
Practical Data Analysis: 这本书挺奇葩,貌似很畅销,但作者把内容安排得东一榔头西一棒子,什么都讲一点,但一个都没讲透。这本书可以作为我们学习数据分析的一个索引,看到哪块内容有意思,就顺着它这个藤去摸更多的瓜。
Python Data Visualization Cookbook: 用Python做可视化的教材肯定不少,我看过的也就这一本,觉得还不错。其实这类书差别都不会很大,咬住一本啃下来就是王道。
Exploratory Data Analysis 和 Data Visualization
Exploratory Data Analysis:John Tukey写于1977年的经典老教材,是这一领域的开山之作。如今EDA已经是统计学里的重要一支,但当时还是有很多人对他的工作不屑一顾。可他爱数据,坚信数据可以以一种出人意料的方式呈现出来。正是他的努力,让数据可视化成为一门无比迷人的技术。但这本书不推荐阅读了,内容略过时。要想完整地了解EDA,推荐下一本:
Exploratory Data Analysis with MATLAB:这本书虽然标题带了个MATLAB,但实际上内容几乎没怎么讲MATLAB,只是每讲一个方法的时候就列出对应的MATALB函数。这本书的重要之处在于,这是我读过的讲EDA最系统的一本书,除了对visualization有不输于John Tucky的讲解外,对于高维的数据集,通过怎样的方法才能让我们从中找到潜在的pattern,这本书也做了详尽的讲解。全书所以案例都有对应的MATALB代码,而且还提供了GUI(图形用户界面)。所以这本书学起来还是相当轻松愉悦的。
Visualize This:中译本叫“鲜活的数据”,作者是个“超级数据迷”,建立了一个叫http://flowingdata.com的网页展示他的数据可视化作品,这本书告诉你该选择什么样的可视化工具,然后告诉你怎样visualize关系型数据、时间序列、空间数据等,最后你就可以用数据讲故事了。如果你只想感受一下数据可视化是个什么,可以直接点开下面这个链接感受下吧!A tour through the visualization zoo(A Tour Through the Visualization Zoo)
Machine Learning & Data Mining
这一块就不多说了,不是因为它不重要,而是因为它太太太重要。所以这一部分就推两本书,都是”世界名着“,都比较难读,需要一点点地啃。这两本书拿下,基本就算是登堂入室了。其实作为机器学习的延伸和深化,概率图模型(PGM)和深度学习(deep learning)同样值得研究,特别是后者现在简直火得不得了。但PGM偏难,啃K.Daphne那本大作实在太烧脑,也没必要,而且在数据领域的应用也不算很广。deep learning目前工业界的步子迈得比学术界的大,各个domain的应用如火如荼,但要有公认的好教材问世则还需时日,所以PGM和deep learning这两块就不荐书了。
The Element of Statistical Learning:要学机器学习,如果让我只推荐一本书,我就推荐这本巨着。Hastie、Tibshirani、Friedman这三位大牛写书写得太用心了,大厦建得够高够大,结构也非常严谨,而且很有前瞻性,纳入了很多前沿的内容,而不仅仅是一部综述性的教材。(图表也做得非常漂亮,应该是用R语言的ggplot2做的。)这本书注重讲解模型和算法本身,所以需要具备比较扎实的数理基础,啃起这本书来才不会太吃力。事实上掌握模型和算法的原理非常重要。机器学习(统计学习)的库现在已经非常丰富,即使你没有完全搞懂某个模型或算法的原理和过程,只要会用那几个库,机器学习也能做得下去。但你会发现你把数据代进去,效果永远都不好。但是,当你透彻地理解了模型和算法本身,你再调用那几个库的时候,心情是完全不一样的,效果也不一样。
Data Mining: Concepts and Techniques, by Jiawei Han and Micheline Kamber 数据挖掘的教材汗牛充栋,之所以推荐这本韩家炜爷爷的,是因为虽然他这本书的出发点是应用,但原理上的内容也一点没有落下,内容非常完整。而且紧跟时代,更新的很快,我看过的是第二版,就已经加进去了social network analysis这种当时的前沿内容。现在已经有第三版了,我还没看过,但应该也加入了不少新内容。其实这本书并不难读,只是篇幅较长,啃起来比较耗时。
其实这两本书里单拎出来一块内容可能又是几本书的节奏,比如bayesian方法,再拿出两三本书来讲也不为过,我个人用到的比较多,而且也确实有不少好书。但并非是所有data scientist都要用到,所以这一块就不再细说。
还有一些印象比较深刻的书:
Big Data Glossary: 主要讲解大数据处理技术及工具,内容涵盖了NoSQL,MapRece,Storage,Servers,NLP库与工具包,机器学习工具包,数据可视化工具包,数据清洗,序列化指南等等。总之,是一本辞典式的大数据入门指导。
Mining of Massive Datasets:这本书是斯坦福大学Web Mining的讲义,里面很多内容与韩家炜的Data Mining那本书重合,但这本书里详细地讲了MapRece的设计原理,PageRank(Google创业时期的核心排序算法,现在也在不断优化更新)讲解得也比较详细。
Developing Analytic Talent: 作者是个从事了十几年数据工作的geek,技术博客写得很有个人风格,写的内容都比较偏门,通常只有具备相关数据处理经验的人能体会出来,丝毫不照顾初学者的感受。比如他会谈到当数据流更新太快时该怎么办,或者MapRece在什么时候不好用的问题,才不管你懂不懂相关基础原理。所以这本书不太适合初学者阅读。这本书其实是作者的博客文章的集结,用how to become a data scientist的逻辑把他近几年的博客文章串联了起来。
Past, Present and Future of Statistical Science:这本书是由COPSS(统计学社主席委员会,由国际各大统计学会的带头人组成)在50周年出版的一本纪念册,里面有50位统计学家每人分别贡献出的一两篇文章,有的回忆了自己当年如何走上统计学这条路,有的探讨了一些统计学的根本问题,有的谈了谈自己在从事的前沿研究,有的则给年轻一代写下了寄语。非常有爱的一本书。
其它资料
Harvard Data Science:这是H大的Data science在线课,我没有修过,但口碑很好。这门课需要费用8千刀左右,比起华盛顿大学的4千刀的Data science在线课虽贵一倍,但比斯坦福的14千刀要便宜将近一半(而且斯坦福的更偏计算机)。如果想自学,早有好心人分享了slides: (https://drive.google.com/folderview?id=0BxYkKyLxfsNVd0xicUVDS1dIS0k&usp=sharing)和homeworks and solutions: (https://github.com/cs109/content)
PyData:PyData是来自各个domain的用Python做数据的人每年举行一次的聚会,期间会有各路牛人举行一些规模不大的seminar或workshop,有好心人已经把video上传到github,有兴趣的去认领吧(DataTau/datascience-anthology-pydata · GitHub)
工具
R/Python/MATLAB(必备):如果是做数据分析和模型开发,以我的观察来看,使用这三种工具的最多。R生来就是一个统计学家开发的软件,所做的事也自然围绕统计学展开。MATLAB虽然算不上是个专业的数据分析工具,但因为很多人不是专业做数据的,做数据还是为了自己的domain expertise(特别是科学计算、信号处理等),而MATLAB又是个强大无比的Domain expertise工具,所以很多人也就顺带让MATLAB也承担了数据处理的工作,虽然它有时候显得效率不高。Python虽然不是做数据分析的专业软件,但作为一个面向对象的高级动态语言,其开源的生态使Python拥有无比丰富的库,Numpy, Scipy 实现了矩阵运算/科学计算,相当于实现了MATLAB的功能,Pandas又使Python能够像R一样处理dataframe,scikit-learn又实现了机器学习。
SQL(必备):虽然现在人们都说传统的关系型数据库如Oracle、MySQL越来越无法适应大数据的发展,但对于很多人来说,他们每天都有处理数据的需要,但可能一辈子都没机会接触TB级的数据。不管怎么说,不论是用关系型还是非关系型数据库,SQL语言是必须要掌握的技能,用什么数据库视具体情况而定。
MongoDB(可选):目前最受欢迎的非关系型数据库NoSQL之一,不少人认为MongoDB完全可以取代mySQL。确实MongoDB方便易用,扩展性强,Web2.0时代的必需品。
Hadoop/Spark/Storm(可选): MapRece是当前最着名也是运用最广泛的分布式计算框架,由Google建立。Hadoop/Spark/storm都是基于MapRece的框架建立起来的分布式计算系统,要说他们之间的区别就是,Hadoop用硬盘存储数据,Spark用内存存储数据,Storm只接受实时数据流而不存储数据。一言以蔽之,如果数据是离线的,如果数据比较复杂且对处理速度要求一般,就Hadoop,如果要速度,就Spark,如果数据是在线的实时的流数据,就Storm。
OpenRefine(可选):Google开发的一个易于操作的数据清洗工具,可以实现一些基本的清洗功能。
Tableau(可选):一个可交互的数据可视化工具,操作简单,开箱即用。而且图表都设计得非常漂亮。专业版1999美刀,终身使用。媒体和公关方面用得比较多。
Gephi(可选):跟Tableau类似,都是那种可交互的可视化工具,不需要编程基础,生成的图表在美学和设计上也是花了心血的。更擅长复杂网络的可视化。

Ⅱ 大数据核心技术有哪些

大数据技术的体系庞大且复杂,基础的技术包含数据的采集、数据预处理、分布式存储、NoSQL数据库、数据仓库、机器学习、并行计算、可视化等各种技术范畴和不同的技术层面。首先给出一个通用化的大数据处理框架,主要分为下面几个方面:数据采集与预处理、数据存储、数据清洗、数据查询分析和数据可视化。

一、数据采集与预处理

对于各种来源的数据,包括移动互联网数据、社交网络的数据等,这些结构化和非结构化的海量数据是零散的,也就是所谓的数据孤岛,此时的这些数据并没有什么意义,数据采集就是将这些数据写入数据仓库中,把零散的数据整合在一起,对这些数据综合起来进行分析。数据采集包括文件日志的采集、数据库日志的采集、关系型数据库的接入和应用程序的接入等。在数据量比较小的时候,可以写个定时的脚本将日志写入存储系统,但随着数据量的增长,这些方法无法提供数据安全保障,并且运维困难,需要更强壮的解决方案。

Flume NG作为实时日志收集系统,支持在日志系统中定制各类数据发送方,用于收集数据,同时,对数据进行简单处理,并写到各种数据接收方(比如文本,HDFS,Hbase等)。Flume NG采用的是三层架构:Agent层,Collector层和Store层,每一层均可水平拓展。其中Agent包含Source,Channel和 Sink,source用来消费(收集)数据源到channel组件中,channel作为中间临时存储,保存所有source的组件信息,sink从channel中读取数据,读取成功之后会删除channel中的信息。

NDC,Netease Data Canal,直译为网易数据运河系统,是网易针对结构化数据库的数据实时迁移、同步和订阅的平台化解决方案。它整合了网易过去在数据传输领域的各种工具和经验,将单机数据库、分布式数据库、OLAP系统以及下游应用通过数据链路串在一起。除了保障高效的数据传输外,NDC的设计遵循了单元化和平台化的设计哲学。

Logstash是开源的服务器端数据处理管道,能够同时从多个来源采集数据、转换数据,然后将数据发送到您最喜欢的 “存储库” 中。一般常用的存储库是Elasticsearch。Logstash 支持各种输入选择,可以在同一时间从众多常用的数据来源捕捉事件,能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。

Sqoop,用来将关系型数据库和Hadoop中的数据进行相互转移的工具,可以将一个关系型数据库(例如Mysql、Oracle)中的数据导入到Hadoop(例如HDFS、Hive、Hbase)中,也可以将Hadoop(例如HDFS、Hive、Hbase)中的数据导入到关系型数据库(例如Mysql、Oracle)中。Sqoop 启用了一个 MapRece 作业(极其容错的分布式并行计算)来执行任务。Sqoop 的另一大优势是其传输大量结构化或半结构化数据的过程是完全自动化的。

流式计算是行业研究的一个热点,流式计算对多个高吞吐量的数据源进行实时的清洗、聚合和分析,可以对存在于社交网站、新闻等的数据信息流进行快速的处理并反馈,目前大数据流分析工具有很多,比如开源的strom,spark streaming等。

Strom集群结构是有一个主节点(nimbus)和多个工作节点(supervisor)组成的主从结构,主节点通过配置静态指定或者在运行时动态选举,nimbus与supervisor都是Storm提供的后台守护进程,之间的通信是结合Zookeeper的状态变更通知和监控通知来处理。nimbus进程的主要职责是管理、协调和监控集群上运行的topology(包括topology的发布、任务指派、事件处理时重新指派任务等)。supervisor进程等待nimbus分配任务后生成并监控worker(jvm进程)执行任务。supervisor与worker运行在不同的jvm上,如果由supervisor启动的某个worker因为错误异常退出(或被kill掉),supervisor会尝试重新生成新的worker进程。

当使用上游模块的数据进行计算、统计、分析时,就可以使用消息系统,尤其是分布式消息系统。Kafka使用Scala进行编写,是一种分布式的、基于发布/订阅的消息系统。Kafka的设计理念之一就是同时提供离线处理和实时处理,以及将数据实时备份到另一个数据中心,Kafka可以有许多的生产者和消费者分享多个主题,将消息以topic为单位进行归纳;Kafka发布消息的程序称为procer,也叫生产者,预订topics并消费消息的程序称为consumer,也叫消费者;当Kafka以集群的方式运行时,可以由一个服务或者多个服务组成,每个服务叫做一个broker,运行过程中procer通过网络将消息发送到Kafka集群,集群向消费者提供消息。Kafka通过Zookeeper管理集群配置,选举leader,以及在Consumer Group发生变化时进行rebalance。Procer使用push模式将消息发布到broker,Consumer使用pull模式从broker订阅并消费消息。Kafka可以和Flume一起工作,如果需要将流式数据从Kafka转移到hadoop,可以使用Flume代理agent,将Kafka当做一个来源source,这样可以从Kafka读取数据到Hadoop。

Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,提供数据同步服务。它的作用主要有配置管理、名字服务、分布式锁和集群管理。配置管理指的是在一个地方修改了配置,那么对这个地方的配置感兴趣的所有的都可以获得变更,省去了手动拷贝配置的繁琐,还很好的保证了数据的可靠和一致性,同时它可以通过名字来获取资源或者服务的地址等信息,可以监控集群中机器的变化,实现了类似于心跳机制的功能。

二、数据存储

Hadoop作为一个开源的框架,专为离线和大规模数据分析而设计,HDFS作为其核心的存储引擎,已被广泛用于数据存储。

HBase,是一个分布式的、面向列的开源数据库,可以认为是hdfs的封装,本质是数据存储、NoSQL数据库。HBase是一种Key/Value系统,部署在hdfs上,克服了hdfs在随机读写这个方面的缺点,与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。

Phoenix,相当于一个Java中间件,帮助开发工程师能够像使用JDBC访问关系型数据库一样访问NoSQL数据库HBase。

Yarn是一种Hadoop资源管理器,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。Yarn由下面的几大组件构成:一个全局的资源管理器ResourceManager、ResourceManager的每个节点代理NodeManager、表示每个应用的Application以及每一个ApplicationMaster拥有多个Container在NodeManager上运行。

Mesos是一款开源的集群管理软件,支持Hadoop、ElasticSearch、Spark、Storm 和Kafka等应用架构。

Redis是一种速度非常快的非关系数据库,可以存储键与5种不同类型的值之间的映射,可以将存储在内存的键值对数据持久化到硬盘中,使用复制特性来扩展性能,还可以使用客户端分片来扩展写性能。

Atlas是一个位于应用程序与MySQL之间的中间件。在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来,Atlas相当于一个DB。Atlas作为服务端与应用程序通讯,它实现了MySQL的客户端和服务端协议,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。Atlas启动后会创建多个线程,其中一个为主线程,其余为工作线程。主线程负责监听所有的客户端连接请求,工作线程只监听主线程的命令请求。

Ku是围绕Hadoop生态圈建立的存储引擎,Ku拥有和Hadoop生态圈共同的设计理念,它运行在普通的服务器上、可分布式规模化部署、并且满足工业界的高可用要求。其设计理念为fast analytics on fast data。作为一个开源的存储引擎,可以同时提供低延迟的随机读写和高效的数据分析能力。Ku不但提供了行级的插入、更新、删除API,同时也提供了接近Parquet性能的批量扫描操作。使用同一份存储,既可以进行随机读写,也可以满足数据分析的要求。Ku的应用场景很广泛,比如可以进行实时的数据分析,用于数据可能会存在变化的时序数据应用等。

在数据存储过程中,涉及到的数据表都是成千上百列,包含各种复杂的Query,推荐使用列式存储方法,比如parquent,ORC等对数据进行压缩。Parquet 可以支持灵活的压缩选项,显着减少磁盘上的存储。

三、数据清洗

MapRece作为Hadoop的查询引擎,用于大规模数据集的并行计算,”Map(映射)”和”Rece(归约)”,是它的主要思想。它极大的方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统中。

随着业务数据量的增多,需要进行训练和清洗的数据会变得越来越复杂,这个时候就需要任务调度系统,比如oozie或者azkaban,对关键任务进行调度和监控。

Oozie是用于Hadoop平台的一种工作流调度引擎,提供了RESTful API接口来接受用户的提交请求(提交工作流作业),当提交了workflow后,由工作流引擎负责workflow的执行以及状态的转换。用户在HDFS上部署好作业(MR作业),然后向Oozie提交Workflow,Oozie以异步方式将作业(MR作业)提交给Hadoop。这也是为什么当调用Oozie 的RESTful接口提交作业之后能立即返回一个JobId的原因,用户程序不必等待作业执行完成(因为有些大作业可能会执行很久(几个小时甚至几天))。Oozie在后台以异步方式,再将workflow对应的Action提交给hadoop执行。

Azkaban也是一种工作流的控制引擎,可以用来解决有多个hadoop或者spark等离线计算任务之间的依赖关系问题。azkaban主要是由三部分构成:Relational Database,Azkaban Web Server和Azkaban Executor Server。azkaban将大多数的状态信息都保存在MySQL中,Azkaban Web Server提供了Web UI,是azkaban主要的管理者,包括project的管理、认证、调度以及对工作流执行过程中的监控等;Azkaban Executor Server用来调度工作流和任务,记录工作流或者任务的日志。

流计算任务的处理平台Sloth,是网易首个自研流计算平台,旨在解决公司内各产品日益增长的流计算需求。作为一个计算服务平台,其特点是易用、实时、可靠,为用户节省技术方面(开发、运维)的投入,帮助用户专注于解决产品本身的流计算需求。

四、数据查询分析

Hive的核心工作就是把SQL语句翻译成MR程序,可以将结构化的数据映射为一张数据库表,并提供 HQL(Hive SQL)查询功能。Hive本身不存储和计算数据,它完全依赖于HDFS和MapRece。可以将Hive理解为一个客户端工具,将SQL操作转换为相应的MapRece jobs,然后在hadoop上面运行。Hive支持标准的SQL语法,免去了用户编写MapRece程序的过程,它的出现可以让那些精通SQL技能、但是不熟悉MapRece 、编程能力较弱与不擅长Java语言的用户能够在HDFS大规模数据集上很方便地利用SQL 语言查询、汇总、分析数据。

Hive是为大数据批量处理而生的,Hive的出现解决了传统的关系型数据库(MySql、Oracle)在大数据处理上的瓶颈 。Hive 将执行计划分成map->shuffle->rece->map->shuffle->rece…的模型。如果一个Query会被编译成多轮MapRece,则会有更多的写中间结果。由于MapRece执行框架本身的特点,过多的中间过程会增加整个Query的执行时间。在Hive的运行过程中,用户只需要创建表,导入数据,编写SQL分析语句即可。剩下的过程由Hive框架自动的完成。

Impala是对Hive的一个补充,可以实现高效的SQL查询。使用Impala来实现SQL on Hadoop,用来进行大数据实时查询分析。通过熟悉的传统关系型数据库的SQL风格来操作大数据,同时数据也是可以存储到HDFS和HBase中的。Impala没有再使用缓慢的Hive+MapRece批处理,而是通过使用与商用并行关系数据库中类似的分布式查询引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分组成),可以直接从HDFS或HBase中用SELECT、JOIN和统计函数查询数据,从而大大降低了延迟。Impala将整个查询分成一执行计划树,而不是一连串的MapRece任务,相比Hive没了MapRece启动时间。

Hive 适合于长时间的批处理查询分析,而Impala适合于实时交互式SQL查询,Impala给数据人员提供了快速实验,验证想法的大数据分析工具,可以先使用Hive进行数据转换处理,之后使用Impala在Hive处理好后的数据集上进行快速的数据分析。总的来说:Impala把执行计划表现为一棵完整的执行计划树,可以更自然地分发执行计划到各个Impalad执行查询,而不用像Hive那样把它组合成管道型的map->rece模式,以此保证Impala有更好的并发性和避免不必要的中间sort与shuffle。但是Impala不支持UDF,能处理的问题有一定的限制。

Spark拥有Hadoop MapRece所具有的特点,它将Job中间输出结果保存在内存中,从而不需要读取HDFS。Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。

Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具,包括全文搜索和Web爬虫。

Solr用Java编写、运行在Servlet容器(如Apache Tomcat或Jetty)的一个独立的企业级搜索应用的全文搜索服务器。它对外提供类似于Web-service的API接口,用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。

Elasticsearch是一个开源的全文搜索引擎,基于Lucene的搜索服务器,可以快速的储存、搜索和分析海量的数据。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

还涉及到一些机器学习语言,比如,Mahout主要目标是创建一些可伸缩的机器学习算法,供开发人员在Apache的许可下免费使用;深度学习框架Caffe以及使用数据流图进行数值计算的开源软件库TensorFlow等,常用的机器学习算法比如,贝叶斯、逻辑回归、决策树、神经网络、协同过滤等。

五、数据可视化

对接一些BI平台,将分析得到的数据进行可视化,用于指导决策服务。主流的BI平台比如,国外的敏捷BI Tableau、Qlikview、PowrerBI等,国内的SmallBI和新兴的网易有数(可点击这里免费试用)等。

在上面的每一个阶段,保障数据的安全是不可忽视的问题。

基于网络身份认证的协议Kerberos,用来在非安全网络中,对个人通信以安全的手段进行身份认证,它允许某实体在非安全网络环境下通信,向另一个实体以一种安全的方式证明自己的身份。

控制权限的ranger是一个Hadoop集群权限框架,提供操作、监控、管理复杂的数据权限,它提供一个集中的管理机制,管理基于yarn的Hadoop生态圈的所有数据权限。可以对Hadoop生态的组件如Hive,Hbase进行细粒度的数据访问控制。通过操作Ranger控制台,管理员可以轻松的通过配置策略来控制用户访问HDFS文件夹、HDFS文件、数据库、表、字段权限。这些策略可以为不同的用户和组来设置,同时权限可与hadoop无缝对接。

Ⅲ 要成为一名大数据开发工程师必备哪些技能

想要学习大数据开发,第一件事并不是要找书籍或者是找视频教程,而是要了解一下大数据行业前景,了解一下成为大数据工程师需要具备什么样的能力,掌握哪些技能我当初学习大数据之前也有过这样的问题,作为一个过来人,今天就跟大家聊下大数据人才应该具备的技能。
首先我们要知道对于大数据开发工程师需要具备的技能,下面我们分别来说明:

用人单位对于大数据开发人才的能力要求有
技能要求:
1.精通JAVA开发语言,同时熟悉Python、Scala开发语言者优先;
2.熟悉Spark或Hadoop生态圈技术,具有源码阅读及二次开发工作经验;精通Hadoop生态及高性能缓存相关的各种工具,有源码开发实战经验者优先;
3.熟练使用SQL,熟悉数据库原理,熟悉至少一种主流关系型数据库;熟悉Linux操作系统,熟练使用常用命令,熟练使用shell脚本;熟悉ETL开发,能熟练至少一种ETL(talend、kettle、ogg等)转化开源工具者优先;
4.具有清晰的系统思维逻辑,对解决行业实际问题有浓厚兴趣,具备良好的沟通协调能力及学习能力。
以上就是想要成为大数据人才需要具备的技能
那么如何具备这些能力,怎么学习了,对于大多数人来说,目前只有通过参加大数据的学习,才能够系统的掌握以上的大数据技能,从而胜任大数据工程师的工作。

Ⅳ 当下大数据发展的 8 个要点

作者 | 章剑锋

笔者从 2008 年开始工作到现在也有 11 个年头了,一路走来都在和数据打交道,做过大数据底层框架内核的开发(Hadoop,Pig,Tez,Spark,Livy),也做过上层大数据应用开发(写 MapRece Job 做 ETL ,用 Hive 做 Ad hocquery,用 Tableau 做数据可视化,用 R 做数据分析)。今天我想借此机会和大家聊聊我所理解的大数据现状和未来。

首先让我们来聊聊什么是大数据。大数据这个概念已经出来很多年了(超过10年),但一直没有一个准确的定义(也许也并不需要)。数据工程师(DataEngineer)对大数据的理解会更多从技术和系统的角度去理解,而数据分析人员(Data Analyst)对大数据理解会从产品的角度去理解,所以数据工程师(Data Engineer) 和数据分析人员(Data Analyst)所理解的大数据肯定是有差异的。我所理解的大数据是这样的,大数据不是单一的一种技术或者产品,它是所有与数据相关的综合学科。看大数据我会从 2 个维度来看,一个是数据流的维度(下图的水平轴),另外一个是技术栈的维度(下图的纵轴)。

其实我一直不太喜欢张口闭口讲“大数据”,我更喜欢说“数据”。因为大数据的本质在于“数据”,而不是“大”。由于媒体一直重点宣扬大数据的“大”,所以有时候我们往往会忽然大数据的本质在“数据”,而不是“大”,“大”只是你看到的表相,本质还是数据自身。

在我们讲清楚大数据的含义之后,我们来聊聊大数据目前到底处在一个什么样的位置。从历史发展的角度来看,每一项新技术都会经历下面这样一个技术成熟度曲线。

当一项新技术刚出来的时候人们会非常乐观,常常以为这项技术会给人类带来巨大的变革,对此持有过高的期望,所以这项技术一开始会以非常快的速度受到大家追捧,然后到达一个顶峰,之后人们开始认识到这项新技术并没有当初预想的那么具有革命性,然后会过于悲观,之后就会经历泡沫阶段。等沉寂一定阶段之后,人们开始回归理性,正视这项技术的价值,然后开始正确的应用这项技术,从此这项技术开始走向稳步向前发展的道路。(题外话,笔者在看这幅图的时候也联想到了一个男人对婚姻看法的曲线图,大家自己脑补)。

1、从大数据的历史来看,大数据已经经历了 2 个重要阶段

两个重要阶段是指过高期望的峰值和泡沫化的底谷期 。现在正处于稳步向前发展的阶段。我们可以从 googletrend 上 big data 的曲线就能印证。大数据大约从 2009 年开始走向人们的视野,在 2015 年左右走向了顶峰,然后慢慢走向下降通道(当然这张曲线并不会和上面这张技术成熟度曲线完全拟合,比如技术曲线处在下降通道有可能会使讨论这项技术的搜索量增加)。

接下来我想讲一下我对大数据领域未来趋势的几个判断。

2、数据规模会继续扩大,大数据将继续发扬光

前面已经提到过,大数据已经度过了过高期望的峰值和泡沫化的底谷期,现在正在稳步向前发展。做这样判断主要有以下 2 个原因:

上游数据规模会继续增长,特别是由于 IOT 技术的发展和成熟,以及未来 5G 技术的铺开。在可预测的未来,数据规模仍将继续快速增长,这是能够带动大数据持续稳定向前发展的基本动力。 下游数据产业还有很多发展的空间,还有很多数据的价值我们没有挖掘出来。

虽然现在人工智能,区块链抢去了大数据的风口位置,也许大数据成不了未来的主角,但大数据也绝对不是跑龙套的,大数据仍将扮演一个重要而基础的角色。可以这么说,只要有数据在,大数据就永远不会过时。我想在大部分人的有生之年,我们都会见证大数据的持续向上发展。

3、数据的实时性需求将更加突出

之前大数据遇到的最大挑战在于数据规模大(所以大家会称之为“大数据”),经过工业界多年的努力和实践,规模大这个问题基本已经解决了。接下来几年,更大的挑战在于速度,也就是实时性。而大数据的实时性并不是指简单的传输数据或者处理数据的实时性,而是从端到端的实时,任何一个步骤速度慢了,就影响整个大数据系统的实时性。所以大数据的实时性,包括以下几个方面:

快速获取和传输数据 快速计算处理数据 实时可视化数据 在线机器学习,实时更新机器学习模型

目前以 Kafka,Flink 为代表的流处理计算引擎已经为实时计算提供了坚实的底层技术支持,相信未来在实时可视化数据以及在线机器学习方面会有更多优秀的产品涌现出来。当大数据的实时性增强之后,在数据消费端会产生更多有价值的数据,从而形成一个更高效的数据闭环,促进整个数据流的良性发展。

4、大数据基础设施往云上迁移势不可挡

目前IT基础设施往云上迁移不再是一个大家还需要争论的问题,这是大势所趋。当然我这边说的云并不单单指公有云,也包括私有云,混合云。因为由于每个企业的业务属性不同,对数据安全性的要求不同,不可能把所有的大数据设施都部署在公有云上,但向云上迁移这是一个未来注定的选择。目前各大云厂商都提供了各种各样的大数据产品以满足各种用户需求,包括平台型(PAAS) 的 EMR ,服务型 (SAAS) 的数据可视化产品等等。大数据基础设施的云化对大数据技术和产品产生也有相应的影响。大数据领域的框架和产品将更加 Cloud Native 。

计算和存储的分离。我们知道每个公有云都有自己对应的分布式存储,比如 AWS 的 S3 。 S3 在一些场合可以替换我们所熟知的 HDFS ,而且成本更低。而 S3 的物理存储并不是在 EC2 上面,对 EC2 来说, S3 是 remote storage 。所以如果你要是 AWS 上面做大数据开发和应用,而且你的数据是在 S3 上,那么你就自然而然用到了计算和存储的分离。 拥抱容器,与 Kubernate 的整合大势所趋,我们知道在云环境中 Kuberneate 基本上已经是容器资源调度的标准。 更具有弹性(Elastic)。 与云上其他产品和服务整合更加紧密。

5、大数据产品全链路化

全链路化是指提供端到端的全链路解决方案,而不是简单的堆积一些大数据产品组件。以 Hadoop 为代表的大数据产品一直被人诟病的主要问题就是用户使用门槛过高,二次开发成本太高。全链路化就是为了解决这一问题,用户需要的并不是 Hadoop,Spark,Flink 等这些技术,而是要以这些技术为基础的能解决业务问题的产品。 Cloudera 的从 Edge 到 AI 是我比较认同的方案。大数据的价值并不是数据本身,而是数据背后所隐藏的对业务有影响的信息和知识。下面是一张摘自 wikipedia 的经典数据金字塔的图。

大数据技术就是对最原始的数据进行不断处理加工提炼,金字塔每上去一层,对应的数据量会越小,同时对业务的影响价值会更大更快。而要从数据(Data) 最终提炼出智慧(Wisdom),数据要经过一条很长的数据流链路,没有一套完整的系统保证整条链路的高效运转是很难保证最终从数据中提炼出来有价值的东西的,所以大数据未来产品全链路化是另外一个大的趋势。

6、大数据技术往下游数据消费和应用端转移

上面讲到了大数据的全链路发展趋势,那么这条长长的数据链路目前的状况是如何,未来又会有什么样的趋势呢?

我的判断是未来大数据技术的创新和发力会更多的转移到下游数据消费和应用端。之前十多年大数据的发展主要集中在底层的框架,比如最开始引领大数据风潮的 Hadoop ,后来的计算引擎佼佼者 Spark,Flink 以及消息中间件 Kafka ,资源调度器 Kubernetes 等等,每个细分领域都涌现出了一系列优秀的产品。总的来说,在底层技术框架这块,大数据领域已经基本打好了基础,接下来要做的是如何利用这些技术为企业提供最佳用户体验的产品,以解决用户的实际业务问题,或者说未来大数据的侧重点将从底层走向上层。之前的大数据创新更偏向于 IAAS 和 PAAS ,未来你将看到更多 SAAS 类型的大数据产品和创新。从近期一些国外厂商的收购案例,我们可以略微看出一些端倪。1、2019 年 6 月 7 日,谷歌宣布以 26 亿美元收购了数据分析公司 Looker,并将该公司并入 Google Cloud。2、2019 年 6 月 10 日,Salesforce 宣布以 157 亿美元的全股票交易收购 Tableau ,旨在夯实在数据可视化以及帮助企业解读所使用和所积累的海量数据的其他工具方面的工作。3、2019 年 9 月初,Cloudera 宣布收购 Arcadia Data 。 Arcadia Data 是一家云原生 AI 驱动的商业智能实时分析厂商。面对最终用户的大数据产品将是未来大数据竞争的重点,我相信会未来大数据领域的创新也将来源于此,未来 5 年内大概率至少还会再出一个类似 Looker 这样的公司,但是很难再出一个类似 Spark 的计算引擎。

7、底层技术的集中化和上层应用的全面开花

学习过大数据的人都会感叹大数据领域的东西真是多,特别是底层技术,感觉学都学不来。经过多年的厮杀和竞争,很多优秀的产品已经脱颖而出,也有很多产品慢慢走向消亡。比如批处理领域的 Spark 引擎基本上已经成为批处理领域的佼佼者,传统的 MapRece 除了一些旧有的系统,基本不太可能会开发新的 MapRece 应用。 Flink 也基本上成为低延迟流处理领域的不二选择,原有的 Storm 系统也开始慢慢退出历史舞台。同样 Kafka 也在消息中间件领域基本上占据了垄断地位。未来的底层大数据生态圈中将不再有那么多的新的技术和框架,每个细分领域都将优胜劣汰,走向成熟,更加集中化。未来更大的创新将更多来来自上层应用或者全链路的整合方面。在大数据的上层应用方面未来将会迎来有更多的创新和发展,比如基于大数据上的BI产品, AI 产品等等,某个垂直领域的大数据应用等等,我相信未来我们会看到更多这方面的创新和发展。

8、开源闭源并驾齐驱

大数据领域并不是只有 Hadoop,Spark,Flink 等这类大家耳熟能详的开源产品,还有很多优秀的闭源产品,比如 AWS 上的 Redshift ,阿里的 MaxCompute 等等。这些产品虽然没有开源产品那么受开发者欢迎,但是他们对于很多非互联网企业来说是非常受欢迎的。因为对于一个企业来说,采用哪种大数据产品有很多因素需要考虑,否开源并不是唯一标准。产品是否稳定,是否有商业公司支持,是否足够安全,是否能和现有系统整合等等往往是某些企业更需要考虑的东西,而闭源产品往往在这类企业级产品特性上具有优势。

最近几年开源产品受公有云的影响非常大,公有云可以无偿享受开源的成果,抢走了开源产品背后的商业公司很多市场份额,所以最近很多开源产品背后的商业公司开始改变策略,有些甚至修改了 Licence 。不过我觉得公有云厂商不会杀死那些开源产品背后的商业公司,否则就是杀鸡取卵,杀死开源产品背后的商业公司,其实就是杀死开源产品的最大技术创新者,也就是杀死开源产品本身。我相信开源界和公有云厂商最终会取得一个平衡,开源仍然会是一个主流,仍然会是创新的主力,一些优秀的闭源产品同样也会占据一定的市场空间。

最后我想再次总结下本文的几个要点:

1、目前大数据已经度过了最火的峰值期和泡沫化的底谷期,现在正处于稳步向前发展的阶段。2、数据规模会继续扩大,大数据将继续发扬光大3、 数据的实时性需求将更加突出4、大数据基础设施往云上迁移势不可挡5、大数据产品全链路化6、大数据技术往下游数据消费和应用端转移7、底层技术的集中化和上层应用的全面开花8、开源闭源并驾齐驱

阅读全文

与大数据怎么跑job相关的资料

热点内容
证券公司代理什么产品 浏览:137
外贸是如何向我国生产产品 浏览:263
什么是产品文化 浏览:522
农产品牌怎么建设 浏览:887
鑫圣金业交易保证金是多少 浏览:969
华为退出程序为什么成了左右切换 浏览:562
代理商资源从哪里找 浏览:628
王者交易中介怎么找 浏览:884
顺丰主要产品有哪些 浏览:583
抖音如何添加影院小程序 浏览:267
为什么手机未安装程序 浏览:495
苏州市场数据调研方法有哪些 浏览:135
想开一个快递公司需要什么程序 浏览:363
代理日晚霜哪个牌子好 浏览:419
交易员亏损怎么回事 浏览:99
销售和程序员有什么联系 浏览:49
市场卖海鲜一年能挣多少 浏览:832
应用程序未安装是什么 浏览:203
逾期了如何恢复征信信息 浏览:863
数据通信指的什么意思 浏览:151