前言

目錄
前言
單詞統(tǒng)計(jì)
統(tǒng)計(jì)手機(jī)用戶流量日志
即將開始...

一、前言

大數(shù)據(jù)是個(gè)籠統(tǒng)又大的方向,在這個(gè)大方向上找到自己的興趣點(diǎn)去鉆研和學(xué)習(xí)是關(guān)鍵。

企業(yè)級(jí)的大數(shù)據(jù),因?yàn)槠浜A繑?shù)據(jù),及大量請(qǐng)求、計(jì)算的特點(diǎn),往往靠簡(jiǎn)單的工具如mysql,單機(jī)模式(無分布式),都會(huì)造成問題。而大量數(shù)據(jù)的存儲(chǔ)計(jì)算,都是有價(jià)值的,可以對(duì)這些海量的數(shù)據(jù)進(jìn)行分析、機(jī)器學(xué)習(xí)、報(bào)表運(yùn)營(yíng)等。

一般的BI(商業(yè)智能),如淘寶、京東、拼多多等,都會(huì)有這樣的大數(shù)據(jù)建設(shè)平臺(tái)。這里舉個(gè)例子,如下訂單、商品搶購這樣的面向消費(fèi)者的,和通過對(duì)大量實(shí)時(shí)、離線數(shù)據(jù)的計(jì)算、整合,提供有價(jià)值的信息,供上級(jí)運(yùn)營(yíng)決策,這是不同的方向,設(shè)計(jì)的路線有所不同,每個(gè)大數(shù)據(jù)話題背后,是大量的部門分工合作,一起往這個(gè)方向努力,也就有了面試造火箭,工作擰螺絲的說法。

但是在面向消費(fèi)者的大數(shù)據(jù)平臺(tái),與面向上級(jí)決策的大數(shù)據(jù)平臺(tái),有其共同點(diǎn),那就是都會(huì)使用高性能的數(shù)據(jù)庫(redise、hbase、hdfs...),都會(huì)使用標(biāo)準(zhǔn)的數(shù)據(jù)報(bào)表、指標(biāo)、維度、數(shù)據(jù)標(biāo)簽等,使用一些搜索性能高的存儲(chǔ)工具(ElasticSearch),一些實(shí)時(shí)性較高的計(jì)算平臺(tái)(olap)。

在我看來,大數(shù)據(jù)就是因?yàn)橛脩舻氖褂卯a(chǎn)生了大量的數(shù)據(jù),如何對(duì)這些數(shù)據(jù)進(jìn)行實(shí)時(shí)、離線計(jì)算,建立相應(yīng)的指標(biāo)體系、報(bào)表體系來挖掘數(shù)據(jù)價(jià)值,以實(shí)現(xiàn)精準(zhǔn)化營(yíng)銷,所以大數(shù)據(jù)內(nèi)在本質(zhì)也算是挖掘數(shù)據(jù)價(jià)值。

二、在談?wù)摯髷?shù)據(jù)的時(shí)候,我們都在談?wù)撌裁矗?/h3>

對(duì)我們最直觀的應(yīng)該是大數(shù)據(jù)都用了什么技術(shù),其次才是大數(shù)據(jù)產(chǎn)生了什么效果,因?yàn)橥纱髷?shù)據(jù)產(chǎn)生的技術(shù)是總結(jié)性的、籠統(tǒng)的,大家都在說什么產(chǎn)品用了什么大數(shù)據(jù)技術(shù),但是這只是一個(gè)結(jié)論,在這背后我們技術(shù)人員最關(guān)心、最在意的應(yīng)該是運(yùn)用了什么技術(shù)。

談?wù)摯髷?shù)據(jù)繞不開的就是hadoop家族。


Hadoop家族.png

在各大互聯(lián)網(wǎng)公司大數(shù)據(jù)崗位,掌握Hadoop技術(shù)棧,早已成為必要的技能點(diǎn)之一。

Hadoop

Hadoop是一個(gè)超大的生態(tài)圈,眾多的組件工具(上圖的Hadoop家族)都借助Hadoop分布式高可用、計(jì)算能力、廉價(jià)物理機(jī)部署等特點(diǎn),運(yùn)行在這個(gè)平臺(tái)上,用來處理數(shù)據(jù)的存儲(chǔ)、計(jì)算、采集、轉(zhuǎn)換、展示等等。

Doug Cutting

雖然hadoop家族眾多,但是最后的重點(diǎn)還是mapreduce和hdfs,一個(gè)是提供計(jì)算(mapreduce),一個(gè)是提供存儲(chǔ),而后的類似于yarn(Yet Another Resource Negotiator,另一種資源協(xié)調(diào)者)是對(duì)hadoop守護(hù)進(jìn)程jobtracker的資源協(xié)調(diào)的補(bǔ)充,hive是對(duì)hdfs操作數(shù)據(jù)的工具,用于構(gòu)建數(shù)據(jù)倉庫的有效工具...

三、安裝

hadoop下載鏈接

image.png

其中hadoop-2.7.7-src.tar.gz是hadoop的源碼,hadoop-2.7.7.tar.gz則是可以用來安裝的hadoop工具。

安裝Hadoop集群通常要將安裝軟件解壓到集群內(nèi)的所有機(jī)器上。這里則是指的hadoop-2.7.7.tar.gz。

通常,集群里的一臺(tái)機(jī)器被指定為 NameNode,另一臺(tái)不同的機(jī)器被指定為JobTracker。這些機(jī)器是masters。余下的機(jī)器即作為DataNode也作為TaskTracker。這些機(jī)器是slaves。

我們用HADOOP_HOME指代安裝的根路徑。通常,集群里的所有機(jī)器的HADOOP_HOME路徑相同。

配置文件
對(duì)Hadoop的配置通過conf/目錄下的兩個(gè)重要配置文件完成:

  1. hadoop-default.xml- 只讀的默認(rèn)配置。
  2. hadoop-site.xml - 集群特有的配置。

要了解更多關(guān)于這些配置文件如何影響Hadoop框架的細(xì)節(jié),請(qǐng)看這里
此外,通過設(shè)置conf/hadoop-env.sh中的變量為集群特有的值,你可以對(duì)bin/目錄下的Hadoop腳本進(jìn)行控制。

集群配置
要配置Hadoop集群,你需要設(shè)置Hadoop守護(hù)進(jìn)程的運(yùn)行環(huán)境和Hadoop守護(hù)進(jìn)程的運(yùn)行參數(shù)

Hadoop守護(hù)進(jìn)程指NameNode/DataNode 和JobTracker/TaskTracker。

配置Hadoop守護(hù)進(jìn)程的運(yùn)行環(huán)境

管理員可在conf/hadoop-env.sh腳本內(nèi)對(duì)Hadoop守護(hù)進(jìn)程的運(yùn)行環(huán)境做特別指定。

至少,你得設(shè)定JAVA_HOME使之在每一遠(yuǎn)端節(jié)點(diǎn)上都被正確設(shè)置。

管理員可以通過配置選項(xiàng)HADOOP_*_OPTS來分別配置各個(gè)守護(hù)進(jìn)程。 下表是可以配置的選項(xiàng)。

守護(hù)進(jìn)程 配置選項(xiàng)
NameNode HADOOP_NAMENODE_OPTS
DataNode HADOOP_DATANODE_OPTS
SecondaryNamenode HADOOP_SECONDARYNAMENODE_OPTS
JobTracker HADOOP_JOBTRACKER_OPTS
TaskTracker HADOOP_TASKTRACKER_OPTS

例如,配置Namenode時(shí),為了使其能夠并行回收垃圾(parallelGC), 要把下面的代碼加入到hadoop-env.sh :
export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC ${HADOOP_NAMENODE_OPTS}"

其它可定制的常用參數(shù)還包括:

  • HADOOP_LOG_DIR - 守護(hù)進(jìn)程日志文件的存放目錄。如果不存在會(huì)被自動(dòng)創(chuàng)建。
  • HADOOP_HEAPSIZE - 最大可用的堆大小,單位為MB。比如,1000MB。 這個(gè)參數(shù)用于設(shè)置hadoop守護(hù)進(jìn)程的堆大小。缺省大小是1000MB。

配置Hadoop守護(hù)進(jìn)程的運(yùn)行參數(shù)

這部分涉及Hadoop集群的重要參數(shù),這些參數(shù)在conf/hadoop-site.xml中指定。

參數(shù) 取值 備注
fs.default.name NameNode的URI。 hdfs://主機(jī)名/
mapred.job.tracker JobTracker的主機(jī)(或者IP)和端口。 主機(jī):端口
dfs.name.dir NameNode持久存儲(chǔ)名字空間及事務(wù)日志的本地文件系統(tǒng)路徑。 當(dāng)這個(gè)值是一個(gè)逗號(hào)分割的目錄列表時(shí),nametable數(shù)據(jù)將會(huì)被復(fù)制到所有目錄中做冗余備份。
dfs.data.dir DataNode存放塊數(shù)據(jù)的本地文件系統(tǒng)路徑,逗號(hào)分割的列表。 當(dāng)這個(gè)值是逗號(hào)分割的目錄列表時(shí),數(shù)據(jù)將被存儲(chǔ)在所有目錄下,通常分布在不同設(shè)備上。
mapred.system.dir Map/Reduce框架存儲(chǔ)系統(tǒng)文件的HDFS路徑。比如/hadoop/mapred/system/。 這個(gè)路徑是默認(rèn)文件系統(tǒng)(HDFS)下的路徑, 須從服務(wù)器和客戶端上均可訪問。
mapred.local.dir 本地文件系統(tǒng)下逗號(hào)分割的路徑列表,Map/Reduce臨時(shí)數(shù)據(jù)存放的地方。 多路徑有助于利用磁盤i/o。
mapred.tasktracker.{map|reduce}.tasks.maximum 某一TaskTracker上可運(yùn)行的最大Map/Reduce任務(wù)數(shù),這些任務(wù)將同時(shí)各自運(yùn)行。 默認(rèn)為2(2個(gè)map和2個(gè)reduce),可依據(jù)硬件情況更改。
dfs.hosts/dfs.hosts.exclude 許可/拒絕DataNode列表。 如有必要,用這個(gè)文件控制許可的datanode列表。
mapred.hosts/mapred.hosts.exclude 許可/拒絕TaskTracker列表。 如有必要,用這個(gè)文件控制許可的TaskTracker列表。

通常,上述參數(shù)被標(biāo)記為 final 以確保它們不被用戶應(yīng)用更改。

現(xiàn)實(shí)世界的集群配置

這節(jié)羅列在大規(guī)模集群上運(yùn)行sort基準(zhǔn)測(cè)試(benchmark)時(shí)使用到的一些非缺省配置。

  • 運(yùn)行sort900的一些非缺省配置值,sort900即在900個(gè)節(jié)點(diǎn)的集群上對(duì)9TB的數(shù)據(jù)進(jìn)行排序:
參數(shù) 取值 備注
dfs.block.size 134217728 針對(duì)大文件系統(tǒng),HDFS的塊大小取128MB。
dfs.namenode.handler.count 40 啟動(dòng)更多的NameNode服務(wù)線程去處理來自大量DataNode的RPC請(qǐng)求。
mapred.reduce.parallel.copies 20 reduce啟動(dòng)更多的并行拷貝器以獲取大量map的輸出。
mapred.child.java.opts -Xmx512M 為map/reduce子虛擬機(jī)使用更大的堆。
fs.inmemory.size.mb 200 為reduce階段合并map輸出所需的內(nèi)存文件系統(tǒng)分配更多的內(nèi)存。
io.sort.factor 100 文件排序時(shí)更多的流將同時(shí)被歸并。
io.sort.mb 200 提高排序時(shí)的內(nèi)存上限。
io.file.buffer.size 131072 SequenceFile中用到的讀/寫緩存大小。
  • 運(yùn)行sort1400和sort2000時(shí)需要更新的配置,即在1400個(gè)節(jié)點(diǎn)上對(duì)14TB的數(shù)據(jù)進(jìn)行排序和在2000個(gè)節(jié)點(diǎn)上對(duì)20TB的數(shù)據(jù)進(jìn)行排序:
參數(shù) 取值 備注
mapred.job.tracker.handler.count 60 啟用更多的JobTracker服務(wù)線程去處理來自大量TaskTracker的RPC請(qǐng)求。
mapred.reduce.parallel.copies 50
tasktracker.http.threads 50 為TaskTracker的Http服務(wù)啟用更多的工作線程。reduce通過Http服務(wù)獲取map的中間輸出。
mapred.child.java.opts -Xmx1024M 使用更大的堆用于maps/reduces的子虛擬機(jī)

Slaves

通常,你選擇集群中的一臺(tái)機(jī)器作為NameNode,另外一臺(tái)不同的機(jī)器作為JobTracker。余下的機(jī)器即作為DataNode又作為TaskTracker,這些被稱之為slaves

在conf/slaves文件中列出所有slave的主機(jī)名或者IP地址,一行一個(gè)。

日志

Hadoop使用Apache log4j來記錄日志,它由Apache Commons Logging框架來實(shí)現(xiàn)。編輯conf/log4j.properties文件可以改變Hadoop守護(hù)進(jìn)程的日志配置(日志格式等)。

歷史日志

作業(yè)的歷史文件集中存放在hadoop.job.history.location,這個(gè)也可以是在分布式文件系統(tǒng)下的路徑,其默認(rèn)值為${HADOOP_LOG_DIR}/history。jobtracker的web UI上有歷史日志的web UI鏈接。

歷史文件在用戶指定的目錄hadoop.job.history.user.location也會(huì)記錄一份,這個(gè)配置的缺省值為作業(yè)的輸出目錄。這些文件被存放在指定路徑下的“_logs/history/”目錄中。因此,默認(rèn)情況下日志文件會(huì)在“mapred.output.dir/_logs/history/”下。如果將hadoop.job.history.user.location指定為值none,系統(tǒng)將不再記錄此日志。

用戶可使用以下命令在指定路徑下查看歷史日志匯總,這條命令會(huì)顯示作業(yè)的細(xì)節(jié)信息,失敗和終止的任務(wù)細(xì)節(jié):
$bin/hadoop job -history output-dir
關(guān)于作業(yè)的更多細(xì)節(jié),比如成功的任務(wù),以及對(duì)每個(gè)任務(wù)的所做的嘗試次數(shù)等可以用下面的命令查看:
$bin/hadoop job -history all output-dir

一但全部必要的配置完成,將這些文件分發(fā)到所有機(jī)器的HADOOP_CONF_DIR路徑下,通常是${HADOOP_HOME}/conf。

Hadoop的機(jī)架感知

HDFS和Map/Reduce的組件是能夠感知機(jī)架的。

NameNode和JobTracker通過調(diào)用管理員配置模塊中的APIresolve來獲取集群里每個(gè)slave的機(jī)架id。該API將slave的DNS名稱(或者IP地址)轉(zhuǎn)換成機(jī)架id。使用哪個(gè)模塊是通過配置項(xiàng)topology.node.switch.mapping.impl來指定的。模塊的默認(rèn)實(shí)現(xiàn)會(huì)調(diào)用topology.script.file.name配置項(xiàng)指定的一個(gè)的腳本/命令。 如果topology.script.file.name未被設(shè)置,對(duì)于所有傳入的IP地址,模塊會(huì)返回/default-rack作為機(jī)架id。在Map/Reduce部分還有一個(gè)額外的配置項(xiàng)mapred.cache.task.levels,該參數(shù)決定cache的級(jí)數(shù)(在網(wǎng)絡(luò)拓?fù)渲校@纾绻J(rèn)值是2,會(huì)建立兩級(jí)的cache- 一級(jí)針對(duì)主機(jī)(主機(jī) -> 任務(wù)的映射)另一級(jí)針對(duì)機(jī)架(機(jī)架 -> 任務(wù)的映射)。

啟動(dòng)Hadoop

啟動(dòng)Hadoop集群需要啟動(dòng)HDFS集群和Map/Reduce集群。

格式化一個(gè)新的分布式文件系統(tǒng):
$ bin/hadoop namenode -format

在分配的NameNode上,運(yùn)行下面的命令啟動(dòng)HDFS:
$ bin/start-dfs.sh

bin/start-dfs.sh腳本會(huì)參照NameNode上${HADOOP_CONF_DIR}/slaves文件的內(nèi)容,在所有列出的slave上啟動(dòng)DataNode守護(hù)進(jìn)程。

在分配的JobTracker上,運(yùn)行下面的命令啟動(dòng)Map/Reduce:
$ bin/start-mapred.sh

bin/start-mapred.sh腳本會(huì)參照J(rèn)obTracker上${HADOOP_CONF_DIR}/slaves文件的內(nèi)容,在所有列出的slave上啟動(dòng)TaskTracker守護(hù)進(jìn)程。

停止Hadoop

在分配的NameNode上,執(zhí)行下面的命令停止HDFS:
$ bin/stop-dfs.sh

bin/stop-dfs.sh腳本會(huì)參照NameNode上${HADOOP_CONF_DIR}/slaves文件的內(nèi)容,在所有列出的slave上停止DataNode守護(hù)進(jìn)程。

在分配的JobTracker上,運(yùn)行下面的命令停止Map/Reduce:
$ bin/stop-mapred.sh

bin/stop-mapred.sh腳本會(huì)參照J(rèn)obTracker上${HADOOP_CONF_DIR}/slaves文件的內(nèi)容,在所有列出的slave上停止TaskTracker守護(hù)進(jìn)程。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,716評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,706評(píng)論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,036評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評(píng)論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,203評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,725評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,451評(píng)論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,677評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評(píng)論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,857評(píng)論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評(píng)論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,407評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,643評(píng)論 2 380

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