[?2/2]想要成為大數(shù)據(jù)工程師?你需要掌握以下知識(shí)(上)

想要成為大數(shù)據(jù)工程師?你需要掌握以下知識(shí)(上)
http://mp.weixin.qq.com/s?src=3&timestamp=1478140385&ver=1&signature=XDh44AJ0Er8YeNxFKyl80qTwQyOxseg8ZHWb5CHojFeOPMiAYkuCNVbbmUUlx-7q6KxVCiUEsJwO06suliNywUnZAKylez-JCG8rA-W9E1HDD1oWyCL7tgLVmYwkkujWp8QRjN17FTIlutOZxhq2bw1ngOn8JslQZ5-NNbJOk=

文| 林肯公園
國際數(shù)據(jù)公司IDC預(yù)測,到2020年,企業(yè)基于大數(shù)據(jù)計(jì)算分析平臺(tái)的支出將突破5000億美元,大數(shù)據(jù)解決方案在未來四年中,幫助全球企業(yè)分享大約1.6萬億美元新增收入的數(shù)據(jù)紅利。
數(shù)聯(lián)尋英近日發(fā)布的首份《大數(shù)據(jù)人才報(bào)告》顯示,目前全國大數(shù)據(jù)人才只有46萬,未來3到5年人才缺口達(dá)150萬之多。
根據(jù)麥肯錫報(bào)告,僅僅在美國市場,2018年大數(shù)據(jù)人才和高級(jí)分析專家的人才缺口將高達(dá)19萬。此外美國企業(yè)還需要150萬位能夠提出正確問題、運(yùn)用大數(shù)據(jù)分析結(jié)果的大數(shù)據(jù)相關(guān)管理人才
對于高速發(fā)展的大數(shù)據(jù)行業(yè)來說,行業(yè)人才的稀缺目前已成為抑致行業(yè)發(fā)展的重要因素。人才的稀缺性外加上誘人的高額薪資,使得互聯(lián)網(wǎng)行業(yè)很多技術(shù)人員紛紛想要轉(zhuǎn)型進(jìn)入大數(shù)據(jù)領(lǐng)域,成為數(shù)據(jù)科學(xué)家、大數(shù)據(jù)工程師等等。
今天,我們將為大家介紹大數(shù)據(jù)工程師所需掌握的技能,讓小伙伴們有個(gè)參照。 先來看一個(gè)常見的大數(shù)據(jù)基礎(chǔ)平臺(tái)架構(gòu)圖。


從這張大數(shù)據(jù)架構(gòu)圖上來看,我們發(fā)現(xiàn),一個(gè)普通的大數(shù)據(jù)基礎(chǔ)平臺(tái)架構(gòu)中,分為數(shù)據(jù)集成層、文件存儲(chǔ)層、數(shù)據(jù)存儲(chǔ)層、編程模型層和數(shù)據(jù)分析層,然后再到上層應(yīng)用。
大數(shù)據(jù)基礎(chǔ)平臺(tái)架構(gòu)中,往往還會(huì)有數(shù)據(jù)挖掘?qū)雍蛿?shù)據(jù)可視化層等。 再看這場架構(gòu)圖。
從以上兩張架構(gòu)圖我們可以看到,整個(gè)大數(shù)據(jù)基礎(chǔ)平臺(tái)架構(gòu)中,其實(shí)是涉及非常多的技術(shù)、語言和技能的。下面為大家一一細(xì)表。
一、大數(shù)據(jù)通用處理平臺(tái)


1、Spark
Spark是UC Berkeley AMP lab (加州大學(xué)伯克利分校的AMP實(shí)驗(yàn)室)所開源的類Hadoop MapReduce的通用并行框架,Spark,擁有Hadoop MapReduce所具有的優(yōu)點(diǎn);但不同于MapReduce的是Job中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的MapReduce的算法。

其中,RDD是Spark的核心,RDD,全稱為Resilient Distributed Datasets,是一個(gè)容錯(cuò)的、并行的數(shù)據(jù)結(jié)構(gòu),可以讓用戶顯式地將數(shù)據(jù)存儲(chǔ)到磁盤和內(nèi)存中,并能控制數(shù)據(jù)的分區(qū)。
同時(shí),RDD還提供了一組豐富的操作來操作這些數(shù)據(jù)。在這些操作中,諸如map、flatMap、filter等轉(zhuǎn)換操作實(shí)現(xiàn)了monad模式,很好地契合了Scala的集合操作。
除此之外,RDD還提供了諸如join、groupBy、reduceByKey等更為方便的操作(注意,reduceByKey是action,而非transformation),以支持常見的數(shù)據(jù)運(yùn)算。 Spark SQL是Spark的一個(gè)組件,用于結(jié)構(gòu)化數(shù)據(jù)的計(jì)算。
Spark SQL提供了一個(gè)稱為DataFrames的編程抽象,DataFrames可以充當(dāng)分布式SQL查詢引擎。 Spark Streaming是建立在Spark上的實(shí)時(shí)計(jì)算框架,通過它提供的豐富的API、基于內(nèi)存的高速執(zhí)行引擎,用戶可以結(jié)合流式、批處理和交互試查詢應(yīng)用。
Spark Streaming是一種構(gòu)建在Spark上的實(shí)時(shí)計(jì)算框架,它擴(kuò)展了Spark處理大規(guī)模流式數(shù)據(jù)的能力。 Spark Streaming的優(yōu)勢在于:
能運(yùn)行在100+的結(jié)點(diǎn)上,并達(dá)到秒級(jí)延遲。

使用基于內(nèi)存的Spark作為執(zhí)行引擎,具有高效和容錯(cuò)的特性。

能集成Spark的批處理和交互查詢。

為實(shí)現(xiàn)復(fù)雜的算法提供和批處理類似的簡單接口。

MLlib 是Spark對常用的機(jī)器學(xué)習(xí)算法的實(shí)現(xiàn)庫,同時(shí)包括相關(guān)的測試和數(shù)據(jù)生成器。MLlib 目前支持四種常見的機(jī)器學(xué)習(xí)問題:二元分類,回歸,聚類以及協(xié)同過濾,同時(shí)也包括一個(gè)底層的梯度下降優(yōu)化基礎(chǔ)算法。 下面是Spark學(xué)習(xí)腦圖。

右鍵點(diǎn)擊可看在線版

你可以通過Spark官網(wǎng)以及Spark 36大數(shù)據(jù)專區(qū)來進(jìn)一步了解Spark。
2、Flink
Flink 是一個(gè)開源的針對批量數(shù)據(jù)和流數(shù)據(jù)的處理引擎,已經(jīng)發(fā)展為 ASF 的頂級(jí)項(xiàng)目之一。Flink 的核心是一個(gè)提供了數(shù)據(jù)分發(fā)以及并行化計(jì)算的流數(shù)據(jù)處理引擎,已經(jīng)支持了 API 化的 SQL 查詢,包括圖操作和機(jī)器學(xué)習(xí)的相關(guān)算法。

Flink 是一個(gè)針對流數(shù)據(jù)和批數(shù)據(jù)的分布式處理引擎。它主要是由 Java 代碼實(shí)現(xiàn)。目前主要還是依靠開源社區(qū)的貢獻(xiàn)而發(fā)展。對 Flink 而言,其所要處理的主要場景就是流數(shù)據(jù),批數(shù)據(jù)只是流數(shù)據(jù)的一個(gè)極限特例而已。
再換句話說,F(xiàn)link 會(huì)把所有任務(wù)當(dāng)成流來處理,這也是其最大的特點(diǎn)。Flink 可以支持本地的快速迭代,以及一些環(huán)形的迭代任務(wù)。并且 Flink 可以定制化內(nèi)存管理。
3、Hadoop
Hadoop是一個(gè)由Apache基金會(huì)所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。 用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進(jìn)行高速運(yùn)算和存儲(chǔ)。
Hadoop實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng)(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯(cuò)性的特點(diǎn),并且設(shè)計(jì)用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序。
HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)文件系統(tǒng)中的數(shù)據(jù)。 其中,
HDFS (分布式文件系統(tǒng))

Mapreduce(計(jì)算框架)

Yarn(資源管理平臺(tái))

Pig(piglatin 語句到 mapreduce 的映射)

Hive(數(shù)據(jù)倉庫,提供 SQL)

Mahout(機(jī)器學(xué)習(xí)算法的 mapreduce 實(shí)現(xiàn)庫)

你可以通過Hadoop官網(wǎng)以及Hadoop 36大數(shù)據(jù)專區(qū)來進(jìn)一步了解Hadoop。
二、分布式存儲(chǔ)


HDFS
Hadoop分布式文件系統(tǒng)(HDFS)被設(shè)計(jì)成適合運(yùn)行在通用硬件(commodity hardware)上的分布式文件系統(tǒng)。它和現(xiàn)有的分布式文件系統(tǒng)有很多共同點(diǎn)。但同時(shí),它和其他的分布式文件系統(tǒng)的區(qū)別也是很明顯的。
HDFS是一個(gè)高度容錯(cuò)性的系統(tǒng),適合部署在廉價(jià)的機(jī)器上。HDFS能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。HDFS放寬了一部分POSIX約束,來實(shí)現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)的目的。


三、資源調(diào)度


Yarn
Apache Hadoop YARN (Yet Another Resource Negotiator,另一種資源協(xié)調(diào)者)是一種新的 Hadoop 資源管理器,它是一個(gè)通用資源管理系統(tǒng),可為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度,它的引入為集群在利用率、資源統(tǒng)一管理和數(shù)據(jù)共享等方面帶來了巨大好處。
YARN的基本思想是將JobTracker的兩個(gè)主要功能(資源管理和作業(yè)調(diào)度/監(jiān)控)分離,主要方法是創(chuàng)建一個(gè)全局的ResourceManager(RM)和若干個(gè)針對應(yīng)用程序的ApplicationMaster(AM)。這里的應(yīng)用程序是指傳統(tǒng)的MapReduce作業(yè)或作業(yè)的DAG(有向無環(huán)圖)。
Mesos Mesos是Apache下的開源分布式資源管理框架,它被稱為是分布式系統(tǒng)的內(nèi)核。Mesos最初是由加州大學(xué)伯克利分校的AMPLab開發(fā)的,后在Twitter得到廣泛使用。
Mesos的起源于Google的數(shù)據(jù)中心資源管理系統(tǒng)Borg。Twitter從Google的Borg系統(tǒng)中得到啟發(fā),然后就開發(fā)一個(gè)類似的資源管理系統(tǒng)來幫助他們擺脫可怕的“失敗之鯨”。
后來他們注意到加州大學(xué)伯克利分校AMPLab正在開發(fā)的名為Mesos的項(xiàng)目,這個(gè)項(xiàng)目的負(fù)責(zé)人是Ben Hindman,Ben是加州大學(xué)伯克利分校的博士研究生。
之后Ben Hindman加入了Twitter,負(fù)責(zé)開發(fā)和部署Mesos。現(xiàn)在Mesos管理著Twitter超過30,0000臺(tái)服務(wù)器上的應(yīng)用部署,“失敗之鯨”已成往事。其他公司紛至沓來,也部署了Mesos,比如Airbnb(空中食宿網(wǎng))、eBay(電子港灣)和Netflix。
四、數(shù)據(jù)分析/數(shù)據(jù)倉庫(SQL類)


1、Pig
Apache Pig 是一個(gè)高級(jí)過程語言,適合于使用 Hadoop 和 MapReduce 平臺(tái)來查詢大型半結(jié)構(gòu)化數(shù)據(jù)集。
通過允許對分布式數(shù)據(jù)集進(jìn)行類似 SQL 的查詢,Pig 可以簡化 Hadoop 的使用。本文將探索 Pig 背后的語言,并在一個(gè)簡單的 Hadoop 集群中發(fā)現(xiàn)其用途。
2、Hive
hive是基于Hadoop的一個(gè)數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供簡單的sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行。
其優(yōu)點(diǎn)是學(xué)習(xí)成本低,可以通過類SQL語句快速實(shí)現(xiàn)簡單的MapReduce統(tǒng)計(jì),不必開發(fā)專門的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉庫的統(tǒng)計(jì)分析。
3、kylin
Apache Kylin?是一個(gè)開源的分布式分析引擎,提供Hadoop之上的SQL查詢接口及多維分析(OLAP)能力以支持超大規(guī)模數(shù)據(jù),最初由eBay Inc. 開發(fā)并貢獻(xiàn)至開源社區(qū)。它能在亞秒內(nèi)查詢巨大的Hive表。
Apache Kylin 最初由ebay開發(fā),現(xiàn)已經(jīng)開源至Apache軟件基金會(huì)。它是Hadoop之上的SQL查詢接口,是一種高性能的SQL on Hadoop工具。它能在亞秒內(nèi)查詢巨大的Hive表。
4、Spark SQL
SparkSQL的前身是Shark,給熟悉RDBMS但又不理解MapReduce的技術(shù)人員提供快速上手的工具,Hive應(yīng)運(yùn)而生,它是當(dāng)時(shí)唯一運(yùn)行在Hadoop上的SQL-on-Hadoop工具。
但是MapReduce計(jì)算過程中大量的中間磁盤落地過程消耗了大量的I/O,降低的運(yùn)行效率,為了提高SQL-on-Hadoop的效率,大量的SQL-on-Hadoop工具開始產(chǎn)生,其中表現(xiàn)較為突出的是:
MapR的Drill

Cloudera的Impala

Shark

其中Shark是伯克利實(shí)驗(yàn)室Spark生態(tài)環(huán)境的組件之一,它修改了下圖所示的右下角的內(nèi)存管理、物理計(jì)劃、執(zhí)行三個(gè)模塊,并使之能運(yùn)行在Spark引擎上,從而使得SQL查詢的速度得到10-100倍的提升。
5、Spark DataFrame
Spark發(fā)布了最新的1.3.0版本,其中最重要的變化,便是DataFrame這個(gè)API的推出。DataFrame讓Spark具備了處理大規(guī)模結(jié)構(gòu)化數(shù)據(jù)的能力,在比原有的RDD轉(zhuǎn)化方式易用的前提下,計(jì)算性能更還快了兩倍。
這一個(gè)小小的API,隱含著Spark希望大一統(tǒng)「大數(shù)據(jù)江湖」的野心和決心。DataFrame像是一條聯(lián)結(jié)所有主流數(shù)據(jù)源并自動(dòng)轉(zhuǎn)化為可并行處理格式的水渠,通過它Spark能取悅大數(shù)據(jù)生態(tài)鏈上的所有玩家,無論是善用R的數(shù)據(jù)科學(xué)家,慣用SQL的商業(yè)分析師,還是在意效率和實(shí)時(shí)性的統(tǒng)計(jì)工程師。
6、Impala
Impala是Cloudera公司主導(dǎo)開發(fā)的新型查詢系統(tǒng),它提供SQL語義,能查詢存儲(chǔ)在Hadoop的HDFS和HBase中的PB級(jí)大數(shù)據(jù)。
已有的Hive系統(tǒng)雖然也提供了SQL語義,但由于Hive底層執(zhí)行使用的是MapReduce引擎,仍然是一個(gè)批處理過程,難以滿足查詢的交互性。相比之下,Impala的最大特點(diǎn)也是最大賣點(diǎn)就是它的快速。
7、Phoenix
Phoenix查詢引擎會(huì)將SQL查詢轉(zhuǎn)換為一個(gè)或多個(gè)HBase scan,并編排執(zhí)行以生成標(biāo)準(zhǔn)的JDBC結(jié)果集。直接使用HBase API、協(xié)同處理器與自定義過濾器,對于簡單查詢來說,其性能量級(jí)是毫秒,對于百萬級(jí)別的行數(shù)來說,其性能量級(jí)是秒。更多參考官網(wǎng)。
8、ELK Stack
ELK Stack 是 Elasticsearch、Logstash、Kibana 三個(gè)開源軟件的組合。在實(shí)時(shí)數(shù)據(jù)檢索和分析場合,三者通常是配合共用,而且又都先后歸于 Elastic.co 公司名下,故有此簡稱。
8.1 ElasticSearch
ElasticSearch是一個(gè)基于Lucene的搜索服務(wù)器。它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于RESTful web接口。
Elasticsearch是用Java開發(fā)的,并作為Apache許可條款下的開放源碼發(fā)布,是當(dāng)前流行的企業(yè)級(jí)搜索引擎。設(shè)計(jì)用于云計(jì)算中,能夠達(dá)到實(shí)時(shí)搜索,穩(wěn)定,可靠,快速,安裝使用方便。
8.2 Logstash
Logstash是一個(gè)完全開源的工具,他可以對你的日志進(jìn)行收集、分析,并將其存儲(chǔ)供以后使用(如,搜索),您可以使用它。logstash帶有一個(gè)web界面,搜索和展示所有日志。
8.3 Kibana
kibana 也是一個(gè)開源和免費(fèi)的工具,他可以幫助您匯總、分析和搜索重要數(shù)據(jù)日志并提供友好的web界面。他可以為 Logstash 和 ElasticSearch 提供的日志分析的 Web 界面。
五、消息隊(duì)列

參考資料:
什么是消息隊(duì)列(Message Queue)?
消息隊(duì)列設(shè)計(jì)精要:
1、 Kafka(純?nèi)罩绢悾笸掏铝?
是一款分布式消息發(fā)布和訂閱的系統(tǒng),具有高性能和高吞吐率。換個(gè)說法即Kafka是一個(gè)分布式的,可劃分的,冗余備份的持久性的日志服務(wù)。它主要用于處理活躍的流式數(shù)據(jù)。
2、RocketMQ
分布式消息隊(duì)列,是一款分布式、隊(duì)列模型的消息中間件。
3、ZeroMQ
是一種基于消息隊(duì)列的多線程網(wǎng)絡(luò)庫,其對套接字類型、連接處理、幀、甚至路由的底層細(xì)節(jié)進(jìn)行抽象,提供跨越多種傳輸協(xié)議的套接字。
ZeroMQ是網(wǎng)絡(luò)通信中新的一層,介于應(yīng)用層和傳輸層之間(按照TCP/IP劃分),其是一個(gè)可伸縮層,可并行運(yùn)行,分散在分布式系統(tǒng)間。
4、ActiveMQ
開源的消息隊(duì)列軟件,是JMS消息通信規(guī)范的一個(gè)實(shí)現(xiàn),運(yùn)行在JVM下,支持多種語言,如JAVA,C++,C#。
5、RabbitMQ
是一個(gè)在AMQP基礎(chǔ)上完整的,可復(fù)用的企業(yè)消息系統(tǒng)。它可以用于大型軟件系統(tǒng)各個(gè)模塊之間的高效通信,支持高并發(fā),支持可擴(kuò)展。
六、流式計(jì)算


1、Storm/JStorm
對比Hadoop的批處理,Storm是個(gè)實(shí)時(shí)的、分布式以及具備高容錯(cuò)的計(jì)算系統(tǒng)。同Hadoop一樣Storm也可以處理大批量的數(shù)據(jù),然而Storm在保證高可靠性的前提下還可以讓處理進(jìn)行的更加實(shí)時(shí);也就是說,所有的信息都會(huì)被處理。
Storm同樣還具備容錯(cuò)和分布計(jì)算這些特性,這就讓Storm可以擴(kuò)展到不同的機(jī)器上進(jìn)行大批量的數(shù)據(jù)處理。他同樣還有以下的這些特性:
· 易于擴(kuò)展:對于擴(kuò)展,伴隨著業(yè)務(wù)的發(fā)展,我們的數(shù)據(jù)量、計(jì)算量可能會(huì)越來越大,所以希望這個(gè)系統(tǒng)是可擴(kuò)展的。你只需要添加機(jī)器和改變對應(yīng)的topology(拓?fù)洌┰O(shè)置。Storm使用Hadoop Zookeeper進(jìn)行集群協(xié)調(diào),這樣可以充分的保證大型集群的良好運(yùn)行。
· 每條信息的處理都可以得到保證。
· Storm集群管理簡易。
· Storm的容錯(cuò)機(jī)能:一旦topology遞交,Storm會(huì)一直運(yùn)行它直到topology被廢除或者被關(guān)閉。而在執(zhí)行中出現(xiàn)錯(cuò)誤時(shí),也會(huì)由Storm重新分配任務(wù)。這是分布式系統(tǒng)中通用問題。一個(gè)節(jié)點(diǎn)掛了不能影響我的應(yīng)用。
· 低延遲。都說了是實(shí)時(shí)計(jì)算系統(tǒng)了,延遲是一定要低的。
· 盡管通常使用Java,Storm中的topology可以用任何語言設(shè)計(jì)。
2、Spark Streaming
Spark Streaming是一種構(gòu)建在Spark上的實(shí)時(shí)計(jì)算框架,它擴(kuò)展了Spark處理大規(guī)模流式數(shù)據(jù)的能力。
Spark Streaming的優(yōu)勢在于:
· 能運(yùn)行在100+的結(jié)點(diǎn)上,并達(dá)到秒級(jí)延遲。
· 使用基于內(nèi)存的Spark作為執(zhí)行引擎,具有高效和容錯(cuò)的特性。
· 能集成Spark的批處理和交互查詢。
· 為實(shí)現(xiàn)復(fù)雜的算法提供和批處理類似的簡單接口。


基于云梯Spark Streaming總體架構(gòu)
Spark on Yarn啟動(dòng)后,由Spark AppMaster把Receiver作為一個(gè)Task提交給某一個(gè)Spark Executor;Receive啟動(dòng)后輸入數(shù)據(jù),生成數(shù)據(jù)塊,然后通知Spark AppMaster;Spark AppMaster會(huì)根據(jù)數(shù)據(jù)塊生成相應(yīng)的Job,并把Job的Task提交給空閑Spark Executor 執(zhí)行。
圖中藍(lán)色的粗箭頭顯示被處理的數(shù)據(jù)流,輸入數(shù)據(jù)流可以是磁盤、網(wǎng)絡(luò)和HDFS等,輸出可以是HDFS,數(shù)據(jù)庫等。
3、Flink
Flink 是一個(gè)針對流數(shù)據(jù)和批數(shù)據(jù)的分布式處理引擎。它主要是由 Java 代碼實(shí)現(xiàn)。對 Flink 而言,其所要處理的主要場景就是流數(shù)據(jù),批數(shù)據(jù)只是流數(shù)據(jù)的一個(gè)極限特例而已。
再換句話說,F(xiàn)link 會(huì)把所有任務(wù)當(dāng)成流來處理,這也是其最大的特點(diǎn)。
Flink 可以支持本地的快速迭代,以及一些環(huán)形的迭代任務(wù)。并且 Flink 可以定制化內(nèi)存管理。在這點(diǎn),如果要對比 Flink 和 Spark 的話,F(xiàn)link 并沒有將內(nèi)存完全交給應(yīng)用層。
這也是為什么 Spark 相對于 Flink,更容易出現(xiàn) OOM 的原因(out of memory)。就框架本身與應(yīng)用場景來說,F(xiàn)link 更相似與 Storm。

Flink 架構(gòu)圖
七、日志收集


1、Scribe
Scribe是Facebook開源的日志收集系統(tǒng),在Facebook內(nèi)部已經(jīng)得到的應(yīng)用。它能夠從各種日志源上收集日志,存儲(chǔ)到一個(gè)中央存儲(chǔ)系統(tǒng)(可以是NFS,分布式文件系統(tǒng)等)上,以便于進(jìn)行集中統(tǒng)計(jì)分析處理。


它為日志的“分布式收集,統(tǒng)一處理”提供了一個(gè)可擴(kuò)展的,高容錯(cuò)的方案。當(dāng)中央存儲(chǔ)系統(tǒng)的網(wǎng)絡(luò)或者機(jī)器出現(xiàn)故障時(shí),scribe會(huì)將日志轉(zhuǎn)存到本地或者另一個(gè)位置,當(dāng)中央存儲(chǔ)系統(tǒng)恢復(fù)后,scribe會(huì)將轉(zhuǎn)存的日志重新傳輸給中央存儲(chǔ)系統(tǒng)。
其通常與Hadoop結(jié)合使用,scribe用于向HDFS中push日志,而Hadoop通過MapReduce作業(yè)進(jìn)行定期處理。
2、Flume
Flume是Cloudera提供的一個(gè)高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng),F(xiàn)lume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時(shí),F(xiàn)lume提供對數(shù)據(jù)進(jìn)行簡單處理,并寫到各種數(shù)據(jù)接受方(可定制)的能力。

當(dāng)前Flume有兩個(gè)版本Flume 0.9X版本的統(tǒng)稱Flume-og,F(xiàn)lume1.X版本的統(tǒng)稱Flume-ng。由于Flume-ng經(jīng)過重大重構(gòu),與Flume-og有很大不同,使用時(shí)請注意區(qū)分。

編程語言


1、Java
Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強(qiáng)大和簡單易用兩個(gè)特征。
Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實(shí)現(xiàn)了面向?qū)ο罄碚摚试S程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。
Java具有簡單性、面向?qū)ο蟆⒎植际健⒔研浴踩浴⑵脚_(tái)獨(dú)立與可移植性、多線程、動(dòng)態(tài)性等特點(diǎn) 。Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等 。
詳細(xì)請參考Java官網(wǎng)。
2、Python
Python是純粹的自由軟件, 源代碼和解釋器CPython遵循 GPL(GNU General Public License)協(xié)議 。
Python語法簡潔清晰,特色之一是強(qiáng)制用空白符(white space)作為語句縮進(jìn)。
Python具有豐富和強(qiáng)大的庫。它常被昵稱為膠水語言,能夠把用其他語言制作的各種模塊(尤其是C/C++)很輕松地聯(lián)結(jié)在一起。
常見的一種應(yīng)用情形是,使用Python快速生成程序的原型(有時(shí)甚至是程序的最終界面),然后對其中[2] 有特別要求的部分,用更合適的語言改寫。
比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而后封裝為Python可以調(diào)用的擴(kuò)展類庫。
需要注意的是在您使用擴(kuò)展類庫時(shí)可能需要考慮平臺(tái)問題,某些可能不提供跨平臺(tái)的實(shí)現(xiàn)。
詳細(xì)請參考Python官網(wǎng)和36大數(shù)據(jù)Python專區(qū)。


3、R
R是一種用于統(tǒng)計(jì)計(jì)算的編程語言,由奧克蘭大學(xué)的Ross Ihaka 和 Robert Gentleman發(fā)明。如今被廣泛地使用于統(tǒng)計(jì)分析、數(shù)據(jù)挖掘等方向。
R是用于統(tǒng)計(jì)分析、繪圖的語言和操作環(huán)境。R是屬于GNU系統(tǒng)的一個(gè)自由、免費(fèi)、源代碼開放的軟件,它是一個(gè)用于統(tǒng)計(jì)計(jì)算和統(tǒng)計(jì)制圖的優(yōu)秀工具。
R 是統(tǒng)計(jì)領(lǐng)域廣泛使用的誕生于1980年左右的 S 語言的一個(gè)分支。R是S語言的一種實(shí)現(xiàn)。S語言是由 AT&T貝爾實(shí)驗(yàn)室開發(fā)的一種用來進(jìn)行數(shù)據(jù)探索、統(tǒng)計(jì)分析、作圖的解釋型語言。
最初S語言的實(shí)現(xiàn)版本主要是S-PLUS。S-PLUS是一個(gè)商業(yè)軟件,它基于S語言,并由MathSoft公司的統(tǒng)計(jì)科學(xué)部進(jìn)一步完善。后來Auckland大學(xué)的Robert Gentleman 和 Ross Ihaka 及其他志愿人員開發(fā)了一個(gè)R系統(tǒng)。
R的使用與S-PLUS有很多類似之處,兩個(gè)軟件有一定的兼容性。
S-PLUS的使用手冊,只要經(jīng)過不多的修改就能成為 R的使用手冊。所以有人說:R,是S-PLUS的一個(gè)“克隆”。但是請不要忘了:R is free。
詳細(xì)請參見R官網(wǎng)和36大數(shù)據(jù)R專區(qū)。
4、Ruby
Ruby,一種簡單快捷的面向?qū)ο螅嫦驅(qū)ο蟪绦蛟O(shè)計(jì))腳本語言,在20世紀(jì)90年代由日本人松本行弘(Yukihiro Matsumoto)開發(fā),遵守GPL協(xié)議和Ruby License。
它的靈感與特性來自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 語言。
Ruby明顯比其他類似的編程語言(如Perl或Python)年輕,又因?yàn)镽uby是日本人發(fā)明的,所以早期的非日文資料和程序都比較貧乏,所以在網(wǎng)上仍然可以找到類似“Ruby的資料太少”之類的批評(píng)。
約于2000年,Ruby開始進(jìn)入美國,英文的資料開始發(fā)展。Ruby歸根結(jié)底源于Perl和Python兩類語言,與C,C++,C#,java是不同大類。
5、Scala
Scala是一門多范式的編程語言,一種類似java的編程語言[1] ,設(shè)計(jì)初衷是實(shí)現(xiàn)可伸縮的語言[2] 、并集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性。Scala編程語言抓住了很多開發(fā)者的眼球。
如果你粗略瀏覽Scala的網(wǎng)站,你會(huì)覺得Scala是一種純粹的面向?qū)ο缶幊陶Z言,而又無縫地結(jié)合了命令式編程和函數(shù)式編程風(fēng)格。
數(shù)據(jù)分析挖掘


1、MATLAB
MATLAB 是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語言和交互式環(huán)境,主要包括MATLAB和Simulink兩大部分。
MATLAB是matrix&laboratory兩個(gè)詞的組合,意為矩陣工廠(矩陣實(shí)驗(yàn)室)。是由美國mathworks公司發(fā)布的主要面對科學(xué)計(jì)算、可視化以及交互式程序設(shè)計(jì)的高科技計(jì)算環(huán)境。
它將數(shù)值分析、矩陣計(jì)算、科學(xué)數(shù)據(jù)可視化以及非線性動(dòng)態(tài)系統(tǒng)的建模和仿真等諸多強(qiáng)大功能集成在一個(gè)易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計(jì)以及必須進(jìn)行有效數(shù)值計(jì)算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案。
MATLAB在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計(jì)語言(如C、Fortran)的編輯模式,代表了當(dāng)今國際科學(xué)計(jì)算軟件的先進(jìn)水平。
MATLAB和Mathematica、Maple并稱為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計(jì)算方面首屈一指。
MATLAB可以進(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、實(shí)現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語言的程序等,主要應(yīng)用于工程計(jì)算、控制設(shè)計(jì)、信號(hào)處理與通訊、圖像處理、信號(hào)檢測、金融建模設(shè)計(jì)與分析等領(lǐng)域。
2、SPSS
SPSS(Statistical Product and Service Solutions),“統(tǒng)計(jì)產(chǎn)品與服務(wù)解決方案”軟件。最初軟件全稱為“社會(huì)科學(xué)統(tǒng)計(jì)軟件包”(SolutionsStatistical Package for the Social Sciences)。
隨著SPSS產(chǎn)品服務(wù)領(lǐng)域的擴(kuò)大和服務(wù)深度的增加,SPSS公司已于2000年正式將英文全稱更改為“統(tǒng)計(jì)產(chǎn)品與服務(wù)解決方案”,這標(biāo)志著SPSS的戰(zhàn)略方向正在做出重大調(diào)整。
SPSS為IBM公司推出的一系列用于統(tǒng)計(jì)學(xué)分析運(yùn)算、數(shù)據(jù)挖掘、預(yù)測分析和決策支持任務(wù)的軟件產(chǎn)品及相關(guān)服務(wù)的總稱,有Windows和Mac OS X等版本。
SPSS是世界上最早的統(tǒng)計(jì)分析軟件,由美國斯坦福大學(xué)的三位研究生Norman H. Nie、C. Hadlai (Tex) Hull 和 Dale H. Bent于1968年研究開發(fā)成功,同時(shí)成立了SPSS公司,并于1975年成立法人組織、在芝加哥組建了SPSS總部。
2009年7月28日,IBM公司宣布將用12億美元現(xiàn)金收購統(tǒng)計(jì)分析軟件提供商SPSS公司。如今SPSS已出至版本22.0,而且更名為IBM SPSS。迄今,SPSS公司已有40余年的成長歷史。
3、SAS
SAS(全稱STATISTICAL ANALYSIS SYSTEM,簡稱SAS)是全球最大的軟件公司之一,是由美國NORTH CAROLINA州立大學(xué)1966年開發(fā)的統(tǒng)計(jì)分析軟件。
1976年SAS軟件研究所(SAS INSTITUTE INC。)成立,開始進(jìn)行SAS系統(tǒng)的維護(hù)、開發(fā)、銷售和培訓(xùn)工作。期間經(jīng)歷了許多版本,并經(jīng)過多年來的完善和發(fā)展,SAS系統(tǒng)在國際上已被譽(yù)為統(tǒng)計(jì)分析的標(biāo)準(zhǔn)軟件,在各個(gè)領(lǐng)域得到廣泛應(yīng)用。
根據(jù)StuQ 發(fā)布的大數(shù)據(jù)工程師技能圖譜來看,想要成為大數(shù)據(jù)工程師,除了以上提到的知識(shí)點(diǎn)之外,還需要掌握數(shù)據(jù)可視化、機(jī)器學(xué)習(xí)、算法和云計(jì)算等多個(gè)知識(shí)點(diǎn)。今天先為大家介紹到這里,下一篇文章我們將會(huì)繼續(xù)為你介紹。
參考:
大數(shù)據(jù)工程師技能圖譜
一共81個(gè),開源大數(shù)據(jù)處理工具匯總(上)
一共81個(gè),開源大數(shù)據(jù)處理工具匯總(下),包括日志收集系統(tǒng)/集群管理/RPC等
33款可用來抓數(shù)據(jù)的開源爬蟲軟件工具
由于微信文中不能放鏈接,更多詳情請閱讀全文。
End.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容