零基礎(chǔ)學(xué)習(xí)Hadoop該如何下手?很多同學(xué)是通過學(xué)習(xí)hadoop來學(xué)習(xí)大數(shù)據(jù)的,學(xué)習(xí)資料可能是以圖書為主要參考方向,《hadoop權(quán)威指南》的確是一本很好的入門大數(shù)據(jù)圖書,但大數(shù)據(jù)系統(tǒng)本身是分布式系統(tǒng),所以我以為分布式系統(tǒng)的相關(guān)概念才是掌握大數(shù)據(jù)各類框架、知識的基礎(chǔ)。 ![]() 1 入門: hadoop框架是集存儲(chǔ)(hdfs)、計(jì)算(mr計(jì)算模型)、資源管理(yarn)等于一體的綜合框架,當(dāng)然它是一個(gè)歷史的階段產(chǎn)物,刨除此因我們來看看大家所熟知的wordcount的具體做法(mr)是什么場景下如何進(jìn)行計(jì)算的? 1-1 分布式系統(tǒng) 首先wordcount程序放到傳統(tǒng)單機(jī)模式下也可以處理,這里大家一定會(huì)想到多線程、文件切割等實(shí)現(xiàn)方式,簡單來說并行計(jì)算的想法由來已久,隨著硬件的不斷進(jìn)步、性能不斷提升,多核計(jì)算也已發(fā)展多年了,與此同時(shí)這個(gè)世界產(chǎn)生的數(shù)據(jù)更是增長飛速,那么原來單機(jī)下多任務(wù)多線程的計(jì)算方式與其后的多核并行都遇到了一個(gè)處理速度與處理數(shù)據(jù)間嚴(yán)重不匹配的問題,如何提高計(jì)算能力是發(fā)展的必然,那么集群方式解決了計(jì)算資源水平擴(kuò)展的能力并同時(shí)具有并行性,這是目前的核心思想,我們可以理解目前的集群(一個(gè)黑盒子)類比于傳統(tǒng)單機(jī)方式,集群中的節(jié)點(diǎn)間并行計(jì)算涉及到了主從架構(gòu)、集群管理、消息通訊、容錯(cuò)處理等等方面,然后這些都是分布式系統(tǒng)所要考慮和解決的問題,因?yàn)樗旧砭褪欠植际较到y(tǒng)。 1-2 分布式存儲(chǔ) 剛才簡單提到了分布式系統(tǒng),說到了計(jì)算方面,其實(shí)還有一個(gè)隱含的問題是要計(jì)算必須有數(shù)據(jù),必然涉及到存儲(chǔ),所以存儲(chǔ)才是根本,那么如何使用分布式存儲(chǔ)系統(tǒng)(hdfs)就必須了解其的組成部分(如什么是塊、文件系統(tǒng)、分布式文件系統(tǒng))、使用方式(讀寫HDFS),但由于大部分同學(xué)都是相對熟悉關(guān)系型數(shù)據(jù)庫及它的使用方式SQL,這些都是應(yīng)用層面的事情具體底層的各種情況并不了解,或者沒有參與數(shù)據(jù)庫軟件的開發(fā)、對于文件類的學(xué)習(xí)工作經(jīng)驗(yàn)相對較少,對其中提到的文件IO操作、序列化、壓縮、內(nèi)置或自定義文件讀寫格式、讀寫方式有種陌生,因?yàn)?/span>hdfs本質(zhì)是文件系統(tǒng)。 1-3 分布式計(jì)算 mr計(jì)算模型也是之前接觸較少,沒有具體的實(shí)際經(jīng)驗(yàn)感受,比如mr具體能做什么、什么場景下使用等等,因?yàn)橹按蠹医佑|的是OLTP(聯(lián)機(jī)事務(wù)處理【OLTP Online Transaction Processing】 聯(lián)機(jī)事務(wù)處理,表示事務(wù)性非常高的系統(tǒng),一般都是高可用的在線系統(tǒng),以小的事務(wù)以及小的查詢?yōu)橹?,以傳統(tǒng)的關(guān)系型數(shù)據(jù)庫為主要應(yīng)用,主要是基本的、日常的事務(wù)處理,主要為業(yè)務(wù)數(shù)據(jù),例如銀行交易)操作,而大數(shù)據(jù)起初是用來進(jìn)行數(shù)據(jù)挖掘的它更多的是一個(gè)OLAP(聯(lián)機(jī)分析處理【OLAP Online Analytical Processing】: 聯(lián)機(jī)分析處理,有的時(shí)候也叫DSS決策支持系統(tǒng),就是我們說的數(shù)據(jù)倉庫,重點(diǎn)主要是面向分析,會(huì)產(chǎn)生大量的查詢,一般很少涉及增刪改。)操作,mr計(jì)算模型的map操作和reduce操作是我們經(jīng)常遇到的需求,map操作負(fù)責(zé)數(shù)據(jù)清洗、轉(zhuǎn)換,reduce操作負(fù)責(zé)數(shù)據(jù)聚合,同時(shí)sql里的select子句和group by子句不也對應(yīng)了這類實(shí)際需求嗎,只是方式方法不同而已。 2 進(jìn)階 2-1 建議以分布式系統(tǒng)的角度來看待大數(shù)據(jù)中的各類框架,了解下分布式理論如CAP理論、主從架構(gòu)方式等等 2-2 當(dāng)然由于這些框架所處理的不是同一方向的問題,所以我們首先框架分類,參考如下 ![]() ![]() 技術(shù)架構(gòu) ``` 1 數(shù)據(jù)采集:flume、logstash 2 數(shù)據(jù)存儲(chǔ):hdfs、hbase、alluxio、es、neo4j、janusGraph、redis、mongodb、tidb 3 數(shù)據(jù)計(jì)算:hive、impala、spark、flink、druid 4 數(shù)據(jù)通道:kafka、pulsar 5 任務(wù)調(diào)度:azkaban、airflow 6 多維數(shù)據(jù)模型:kylin 7 數(shù)據(jù)同步:sqoop、datax、canal 8 數(shù)據(jù)格式:parquet 、orc 、csv 、json 9 協(xié)調(diào)服務(wù):zookeeper 10 監(jiān)控:zabbix、prometheus 3 推薦 3.1 大數(shù)據(jù)的各類框架 官網(wǎng)永遠(yuǎn)是第一手資源,一定要看 3.2 大量的公眾號、stackoverflow、github等 3.3 google查詢資源 |
|