the apache™ hadoop® project develops open-source software for reliable, scalable, distributed computing.
hadoop是做可靠的、可擴充套件的、分布式計算,說白了就是處理海量資料問題的解決方案。
hadoop最擅長的是(離線的、海量的)日誌處理,幾十個t的資料,傳統的sql資料庫時解決不了的。就算可以解決也是非常非常難的。facebook就用hive來進行日誌分析,**搜尋中的篩選也使用的hive。如今,hadoop已經是被公認是一套在分布式環境下提供了海量資料的處理能力的解決方案。支付寶使用hbase對使用者的消費記錄可以實現毫秒級查詢。實時的資訊推送等等。海量資料的儲存(
hdfs)
海量資料的分析(
mapreduce)
資源管理排程(
yarn)
->
hadoop2
.x
從**的架構上可以清晰的看到,其中間計算層使用的就是hadoop來處理。
hadoop的核心是mapreduce和hdfs。
1.通過hdfs解決海量資料的儲存
假設有100t資料,儲存在4臺pc機上(a、b、c、d),a機儲存電影,b機儲存,c機儲存郵件,d機儲存***。如圖所示。
使用者很容易通過網路,訪問server2機來訪問到這100t資料,但是如果多個使用者同時要看電影,那麼server2只能找a機,這樣就導致兩個問題就是
1).a機的負載壓力過大,其他機器閒置
2).一旦a機宕機,那麼就無法訪問到電影。即使a機有備機,那麼在往a機進行寫入操作時,a的備機該如何呢?集群條件下呢?
hadoop的hdfs是如何解決的?
集群會把大檔案切成多個檔案塊,存在不同的pc上,這樣負載問題就解決了,每乙個block塊檔案在集群中存在多個副本,副本在不同的機器上,比如block1在4臺機器上,那麼使用者再訪問block1的內容時,就可以4臺機器同時併發訪問,效能告。hdfs通過namenode負責來記錄和對映具體的block在哪台pc上,所以客戶端在訪問的時候,首先訪問的就是namenode,從namenode獲取資訊,再去找datanode,進行資料的讀寫操作。
2.通過mapreduce解決海量資料的計算
hdfs將大檔案打散存放在不同的機器上,比如乙份10t的文字檔案,文字檔案被打散在不同機器上,那麼如何計算select count(行) 操作,取出來計算是不可能的,記憶體、硬碟、頻寬都不允許,hadoop的mapreduce就是把統計邏輯分發到資料塊所在的datanode上,那麼每個機器就可以把自己機器上的資料計算出來(map階段,本地區域性進行處理),不需要走網路,節省了頻寬,每個機器都有自己的統計結果。最終的結果是一台機器進行統計不同pc的統計結果(reduce階段),進行彙總運算,就不存在記憶體、硬碟、頻寬等瓶頸問題(reduce還可以根據業務邏輯,進行分組,多個併發執行)。
Docker入門教程(一)介紹
docker入門教程 一 介紹 docker入門教程 二 命令 docker入門教程 三 dockerfile docker入門教程 四 docker registry docker入門教程 五 docker安全 docker入門教程 六 另外的15個docker命令 docker入門教程 七 do...
Docker入門教程(一)介紹
一談到容器,我們都會想到 docker。docker 現在幾乎是容器的代名詞。確實,是 docker 將容器技術發揚光大。同時,我們也需要知道圍繞 docker 還有乙個生態系統。docker 是這個生態系統的基石,但完善的生態系統才是保障 docker 以及容器技術能夠真正健康發展的決定因素。do...
Spring Batch學習(一)介紹
我們不會總是想要立即得到需要的資訊,批處理允許我們在請求處理之前就乙個既定的流程開始蒐集資訊 比如說乙個銀行對賬單,我們可以按月生成,並在使用者查詢之前開啟乙個批處理流程進行處理 更好的利用資源 讓應該利用的處理能力閒置起來是乙個大的浪費,我們可以定製處理讓乙個機器乙個接乙個的執行job可以更好的利...