想要成為大數(shù)據(jù)工程師郭赐?你需要掌握以下知識(上)
http://mp.weixin.qq.com/s?src=3×tamp=1478140385&ver=1&signature=XDh44AJ0Er8YeNxFKyl80qTwQyOxseg8ZHWb5CHojFeOPMiAYkuCNVbbmUUlx-7q6KxVCiUEsJwO06suliNywUnZAKylez-JCG8rA-W9E1HDD1oWyCL7tgLVmYwkkujWp8QRjN17FTIlutOZxhq2bw1ngOn8JslQZ5-NNbJOk=
文| 林肯公園
國際數(shù)據(jù)公司IDC預(yù)測寞秃,到2020年穷蛹,企業(yè)基于大數(shù)據(jù)計(jì)算分析平臺的支出將突破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ù)人才和高級分析專家的人才缺口將高達(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ǔ)平臺架構(gòu)圖闲昭。
從這張大數(shù)據(jù)架構(gòu)圖上來看罐寨,我們發(fā)現(xiàn),一個(gè)普通的大數(shù)據(jù)基礎(chǔ)平臺架構(gòu)中汤纸,分為數(shù)據(jù)集成層衩茸、文件存儲層、數(shù)據(jù)存儲層贮泞、編程模型層和數(shù)據(jù)分析層楞慈,然后再到上層應(yīng)用。
大數(shù)據(jù)基礎(chǔ)平臺架構(gòu)中啃擦,往往還會有數(shù)據(jù)挖掘?qū)雍蛿?shù)據(jù)可視化層等囊蓝。 再看這場架構(gòu)圖。
一、大數(shù)據(jù)通用處理平臺
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的算法霍骄。
同時(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á)到秒級延遲。
使用基于內(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 的頂級項(xiàng)目之一蜀漆。Flink 的核心是一個(gè)提供了數(shù)據(jù)分發(fā)以及并行化計(jì)算的流數(shù)據(jù)處理引擎,已經(jīng)支持了 API 化的 SQL 查詢咱旱,包括圖操作和機(jī)器學(xué)習(xí)的相關(guān)算法确丢。
再換句話說,F(xiàn)link 會把所有任務(wù)當(dāng)成流來處理狐粱,這也是其最大的特點(diǎn)舀寓。Flink 可以支持本地的快速迭代,以及一些環(huán)形的迭代任務(wù)肌蜻。并且 Flink 可以定制化內(nèi)存管理基公。
3、Hadoop
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(資源管理平臺)
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民镜。
二梳凛、分布式存儲
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臺服務(wù)器上的應(yīng)用部署交胚,“失敗之鯨”已成往事份汗。其他公司紛至沓來,也部署了Mesos蝴簇,比如Airbnb(空中食宿網(wǎng))杯活、eBay(電子港灣)和Netflix。
四熬词、數(shù)據(jù)分析/數(shù)據(jù)倉庫(SQL類)
1轩猩、Pig
Apache Pig 是一個(gè)高級過程語言,適合于使用 Hadoop 和 MapReduce 平臺來查詢大型半結(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軟件基金會译断。它是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ù)源并自動轉(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語義,能查詢存儲在Hadoop的HDFS和HBase中的PB級大數(shù)據(jù)串稀。
已有的Hive系統(tǒng)雖然也提供了SQL語義,但由于Hive底層執(zhí)行使用的是MapReduce引擎狮杨,仍然是一個(gè)批處理過程母截,難以滿足查詢的交互性。相比之下橄教,Impala的最大特點(diǎn)也是最大賣點(diǎn)就是它的快速清寇。
7、Phoenix
Phoenix查詢引擎會將SQL查詢轉(zhuǎn)換為一個(gè)或多個(gè)HBase scan护蝶,并編排執(zhí)行以生成標(biāo)準(zhǔn)的JDBC結(jié)果集华烟。直接使用HBase API、協(xié)同處理器與自定義過濾器持灰,對于簡單查詢來說盔夜,其性能量級是毫秒,對于百萬級別的行數(shù)來說堤魁,其性能量級是秒喂链。更多參考官網(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è)級搜索引擎鉴象。設(shè)計(jì)用于云計(jì)算中忙菠,能夠達(dá)到實(shí)時(shí)搜索,穩(wěn)定纺弊,可靠牛欢,快速,安裝使用方便淆游。
8.2 Logstash
Logstash是一個(gè)完全開源的工具傍睹,他可以對你的日志進(jìn)行收集、分析犹菱,并將其存儲供以后使用(如拾稳,搜索),您可以使用它腊脱。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í);也就是說巍扛,所有的信息都會被處理领跛。
Storm同樣還具備容錯(cuò)和分布計(jì)算這些特性,這就讓Storm可以擴(kuò)展到不同的機(jī)器上進(jìn)行大批量的數(shù)據(jù)處理撤奸。他同樣還有以下的這些特性:
· 易于擴(kuò)展:對于擴(kuò)展吠昭,伴隨著業(yè)務(wù)的發(fā)展喊括,我們的數(shù)據(jù)量、計(jì)算量可能會越來越大矢棚,所以希望這個(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會一直運(yùn)行它直到topology被廢除或者被關(guān)閉。而在執(zhí)行中出現(xiàn)錯(cuò)誤時(shí)妹沙,也會由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á)到秒級延遲玉凯。
· 使用基于內(nèi)存的Spark作為執(zhí)行引擎,具有高效和容錯(cuò)的特性联贩。
· 能集成Spark的批處理和交互查詢漫仆。
· 為實(shí)現(xiàn)復(fù)雜的算法提供和批處理類似的簡單接口。
基于云梯Spark Streaming總體架構(gòu)
Spark on Yarn啟動后泪幌,由Spark AppMaster把Receiver作為一個(gè)Task提交給某一個(gè)Spark Executor盲厌;Receive啟動后輸入數(shù)據(jù),生成數(shù)據(jù)塊祸泪,然后通知Spark AppMaster吗浩;Spark AppMaster會根據(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 會把所有任務(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)用伊诵。它能夠從各種日志源上收集日志单绑,存儲到一個(gè)中央存儲系統(tǒng)(可以是NFS,分布式文件系統(tǒng)等)上曹宴,以便于進(jìn)行集中統(tǒng)計(jì)分析處理搂橙。
它為日志的“分布式收集,統(tǒng)一處理”提供了一個(gè)可擴(kuò)展的浙炼,高容錯(cuò)的方案份氧。當(dāng)中央存儲系統(tǒng)的網(wǎng)絡(luò)或者機(jī)器出現(xiàn)故障時(shí)唯袄,scribe會將日志轉(zhuǎn)存到本地或者另一個(gè)位置弯屈,當(dāng)中央存儲系統(tǒng)恢復(fù)后,scribe會將轉(zhuǎn)存的日志重新傳輸給中央存儲系統(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ū)ο笊狻⒎植际健⒔研月永踩曰徊馈⑵脚_獨(dú)立與可移植性、多線程蟀瞧、動態(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í)可能需要考慮平臺問題抱虐,某些可能不提供跨平臺的實(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的資料太少”之類的批評。
約于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)站,你會覺得Scala是一種純粹的面向?qū)ο缶幊陶Z言皿伺,而又無縫地結(jié)合了命令式編程和函數(shù)式編程風(fēng)格员辩。
數(shù)據(jù)分析挖掘
1、MATLAB
MATLAB 是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件鸵鸥,用于算法開發(fā)奠滑、數(shù)據(jù)可視化丹皱、數(shù)據(jù)分析以及數(shù)值計(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ù)可視化以及非線性動態(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ì)纸镊、信號處理與通訊、圖像處理概疆、信號檢測逗威、金融建模設(shè)計(jì)與分析等領(lǐng)域。
2岔冀、SPSS
SPSS(Statistical Product and Service Solutions)凯旭,“統(tǒng)計(jì)產(chǎn)品與服務(wù)解決方案”軟件。最初軟件全稱為“社會科學(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ù)工程師葡幸,除了以上提到的知識點(diǎn)之外,還需要掌握數(shù)據(jù)可視化贺氓、機(jī)器學(xué)習(xí)蔚叨、算法和云計(jì)算等多個(gè)知識點(diǎn)。今天先為大家介紹到這里辙培,下一篇文章我們將會繼續(xù)為你介紹缅叠。
參考:
大數(shù)據(jù)工程師技能圖譜
一共81個(gè),開源大數(shù)據(jù)處理工具匯總(上)
一共81個(gè)虏冻,開源大數(shù)據(jù)處理工具匯總(下)肤粱,包括日志收集系統(tǒng)/集群管理/RPC等
33款可用來抓數(shù)據(jù)的開源爬蟲軟件工具
由于微信文中不能放鏈接,更多詳情請閱讀全文厨相。
End.