Hadoop初级之Hadoop基本概念与应用前景
Hadoop
大數據概念
大數據(big data):指無法在一定時間范圍內用常規軟件工具(例如java ee 中的mysql)進行捕捉、管理和處理的數據集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的信息資產。
主要解決,海量數據的存儲和海量數據的分析計算問題。
1T容量的電腦 想要存儲幾百T的資料 就搭建個集群 一個節點存放一點就可以
從這幾百T的資料中 查找出你想要的資料 就屬于數據的分析計算
如果hr問對大數據的理解 就可以從數據的存儲于數據的計算兩個方面進行描述
?
按順序給出數據存儲單位:bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。
1Byte = 8bit? 1K = 1024Byte? 1MB = 1024K
1G = 1024M? 1T = 1024G?????? 1P = 1024T? (進制都是1024)
TB、PB、Eb目前是數據的主流
大數據特點
Volume(大量)
Velocity(高速)
Variety(多樣)
這種類型的多樣性也讓數據被分為結構化數據和非結構化數據。相對于以往便于存儲的以數據庫/文本為主的結構化數據,非結構化數據越來越多,包括網絡日志、音頻、視頻、圖片、地理位置信息等,這些多類型的數據對數據的處理能力提出了更高要求。
?
像這種訂單文本 就是結構化數據 像圖片啥的 就是非結構化
?
低價值密度 數據量越大 對自己有用的信息越少? 難以篩選
大數據應用前景
?
工廠選址要大數據分析 倉庫存儲什么商品也要分析
?
?
大數據提前預測人數
?
電商商品推薦功能
4、保險:海量數據挖掘及風險預測,助力保險行業精準營銷,提升精細化定價能力。
5、金融:多維度體現用戶特征,幫助金融機構推薦優質客戶,防范欺詐風險。
?
支付寶大數據分析 對你的余額 人脈關系 征信分析
6、房產:大數據全面助力房地產行業,打造精準投策與營銷,選出更合適的地,建造更合適的樓,賣給更合適的人。
大數據部門業務流程分析
?
主要是做中間的
大數據部門組織架構
?
平臺組 各種平臺搭建? 監控集群平臺能否穩定運行性能調優? 注重技術?? 底層源碼
倉庫組 清洗臟無用的數據? 需求量比較大 比較重視業務
算法比較難
推薦系統有可能
Hadoop生態圈
?
我們在工作中說的hadoop 不僅僅是只hadoop框架 是hadoop里面的整體的環境都叫hadoop
Hadoop發展史
?
后面才有yarn添加進來 這三篇論文有時間可以看一看? 創始人是doung cutting
?
集中式系統
集中式系統用一句話概括就是:一個主機帶多個終端。終端沒有數據處理能力,僅負責數據的錄入和輸出。而運算、存儲等全部在主機上進行。現在的銀行系統,大部分都是這種集中式的系統,此外,在大型企業、科研單位、軍隊、政府等也有分布。集中式系統,主要流行于上個世紀。集中式系統的最大的特點就是部署結構非常簡單,底層一般采用從IBM、HP等廠商購買到的昂貴的大型主機。因此無需考慮如何對服務進行多節點的部署,也就不用考慮各節點之間的分布式協作問題。但是,由于采用單機部署。很可能帶來系統大而復雜、難于維護、發生單點故障(單個點發生故障的時候會波及到整個系統或者網絡,從而導致整個系統或者網絡的癱瘓)、擴展性差等問題。
Hadoop 概念
Hadoop 是一個由 Apache 基金會所開發的分布式系統(多臺服務器構建集群)基礎架構(是很基礎的架構,以后的hive等都是基于hadoop框架)
主要解決,海量數據的存儲和海量數據的分析計算問題。
廣義上來說,HADOOP 通常是指一個更廣泛的概念——HADOOP 生態圈
Hadoop??三大發行版本:?Apache、Cloudera、Hortonworks。
Apache?版本最原始(最基礎)的版本,對于入門學習最好。所有的東西都是自己配的
Cloudera?在大型互聯網企業中用的較多。 也叫CDH版本 面試官也有可能問cdh版本的 所有的框架版本都是一一對應的? 比較方便 比如hadoop什么版本對應什么版本的hive
Hortonworks?文檔較好。
?
解釋1 多個副本 同一數據保存在不同的地方
2可以增加服務器和減少服務器?
3并行處理數據
4假設一個節點掛掉了 會重新分配這個任務給其他節點
?
?
hadoop干啥的: 1.存儲大量數據。? 怎么存儲的···? hdfs? 只需要啟動hdfs服務就好 start-dfs.sh 2.并行計算大量數據。????? mr ? start-dfs.sh 為什么上邊這個命令在任何路徑都可以用呢? 因為配置了環境變量Hadoop?安裝注釋
1.下載hadoop.tar包到linux系統。 2.解壓? tar -zxvf? —C 3.進入hadoop路徑配置信息。 cd /opt/hadoop-2.7.2/etc/hadoop 4.hadoop-env.sh?? 配置jdk路徑。?? 因為hadoop就是用java寫的 5.core-site.xml?? 配置ip和端口號 6.hdfs-site.xml?? 配置的是副本數 7.mapred-site.xml? 指定框架名稱: yarn 8.yarn-site.xml?? 配置resourcemanager相關信息 9.slaves???????? 配置你存活的機器 10.免密 11.格式化namenode,需要在有namenode的節點來格式 12.啟動服務來使用Hadoop 1.X與hadoop 2.X區別
?
大數據生態學習體系
?
數據來源層
1結構化數據 例如mysql里面存儲的訂單數據
2瀏覽日志一類的 是半結構化 可以轉化成結構化數據存儲到數據庫里
數據傳輸層
Sqoop:主要用于在 Hadoop(Hive)與傳統的數據庫(mysql)間進行數據的傳遞,可以將一個關系型數據庫(例如 : MySQL ,Oracle 等)中的數據導進到Hadoop 的 HDFS 中,也可以將 HDFS 的數據導進到關系型數據庫中。(導數據)
Flume: 是 Cloudera 提供的一個高可用的,高可靠的,分布式的海量日志采集、聚
合和傳輸的系統,Flume 支持在日志系統中定制各類數據發送方,用于收集數據;同時,Flume
提供對數據進行簡單處理,并寫到各種數據接受方(可定制)的能力(收集日志)
Kafka:是一種高吞吐量的分布式發布訂閱消息系統,有如下特性:
(1)通過 O(1)的磁盤數據結構提供消息的持久化,這種結構對于即使數以 TB 的消息
存儲也能夠保持長時間的穩定性能。
(2)高吞吐量:即使是非常普通的硬件 Kafka 也可以支持每秒數百萬的消息
(3)支持通過 Kafka 服務器和消費機集群來分區消息。
(4)支持 Hadoop 并行數據加載。(消息隊列)
數據儲存層
Hdf存儲
kafka也可以存1g
Hbase:是一個分布式的、面向列的開源數據庫。HBase?不同于一般的關系數據庫,它是一個適合于非結構化數據存儲的數據庫。
資源管理層
推薦系統框架圖
?
| ? | |
| ? | ? |
?
我們在網上搜索一個東西 被tomcat收集日志? 然后放到文件日志里作為數據來源 放到傳輸層flume里面 放到 儲存層 通過資源調度獲取資源 實時搜索實時推薦? 通過任務調度層調度 放在 數據庫或者文件里? 再將同類的業務推薦? 再返回
Yarn
數據分析層
Spark streaming實際上不是真實的事實? 有點延遲
Storm是真實的實時處理
任務調度器
在這么一個大的集群中? 啟動的任務幾百個? 哪個先啟動 啟動到幾點? 并行串行? 這個任務執行的這的時候另個任務執行到哪 都需要資源調度oozie講的比較多?
將易變化的數據放入zk中 統一配置服務
hadoop目錄結構
?
進入bin里面
?
管理hadoop yarn hdfs等
進入etc里面
?
存放配置
Sbin
?
存放的是啟動或者關閉hadoop的服務
HDFS
HDFS,它是一個文件系統,用于存儲文件,通過目錄樹來定位文件;其次,它是分布式的,由很多服務器聯合起來實現其功能,集群中的服務器有各自的角色。
HDFS的設計適合一次寫入,多次讀出的場景,且不支持文件的修改。適合用來做數據分析,并不適合用來做網盤應用。
隨著數據量越來越大,在一個操作系統管轄的范圍內存不下了,那么就分配到更多的操作系統管理的磁盤中,但是不方便管理和維護,迫切需要一種系統來管理多臺機器上的文件,這就是分布式文件管理系統。HDFS只是分布式文件管理系統中的一種。
HDFS優缺點
?優點
高容錯性
數據自動保存副多個本。它通過增加副本的形式,提高容錯性。
某一個副本丟失以后,它可以自動恢復。
適合大數據處理
數據規模:能夠處理數據規模達到 GB、TB、甚至PB級別的數據。
文件規模:能夠處理百萬規模以上的文件數量,數量相當之大。
流式數據訪問
一次寫入,多次讀取,不能修改,只能追加。
它能保證數據的一致性。
可構建在廉價機器上,通過多副本機制,提高可靠性。
?缺點
不適合低延時數據訪問,比如毫秒級的存儲數據,是做不到的。
無法高效的對大量小文件進行存儲
存儲大量小文件的話,它會占用 NameNode大量的內存來存儲文件、目錄和塊信息。這樣是不可取的,因為NameNode的內存總是有限的。
小文件存儲的尋道時間會超過讀取時間,它違反了HDFS的設計目標。假設很多小文件 找這些小文件會浪費大量的時間
多個小文件這么處理
在數據處理系統的最前端(預處理/采集),將小文件先合并成大文件,再上傳到HDFS做后續分析。
并發寫入、文件隨機修改
一個文件只能有一個寫,不允許多個線程同時寫。不允許多個文件同時上傳到hdfs上
僅支持數據 append(追加),不支持文件的隨機修改。
HDFS架構
Client:就是客戶端。
(1)文件切分。文件上傳 HDFS 的時候,Client 將文件切分成一個一個的Block,然后進行存儲。
(2)與NameNode交互,獲取文件的位置信息。
(3)與DataNode交互,讀取或者寫入數據。
(4)Client提供一些命令來管理HDFS,比如啟動或者關閉HDFS。
(5)Client可以通過一些命令來訪問HDFS。
2)NameNode:就是master,它是一個主管、管理者。
?
(1)管理HDFS的名稱空間。管理元數據 (2)管理數據塊(Block)映射信息(不是真實數據),知道文件在datanode的路徑(3)配置副本策略
(4)處理客戶端讀寫請求。
?
namenode就相當于這本書的目錄
3) DataNode:就是Slave。NameNode下達命令,DataNode執行實際的操作。
(1)存儲實際的數據塊。(真實數據)
(2)執行數據塊的讀/寫操作。
?
Datanode才儲存真實數據
4) Secondary NameNode:并非NameNode的熱備。冷備。當NameNode掛掉的時候,它并不能馬上替換NameNode并提供服務。
(1)輔助NameNode,分擔其工作量。
(2)定期合并Fsimage和Edits,并推送給NameNode。
(3)在緊急情況下,可輔助恢復NameNode。
用來監控HDFS狀態的輔助后臺程序,每隔一段時間獲取HDFS元數據的快照。
?
?元數據:分兩塊: 1.edits 文件???? 里面記錄的是 操作信息。? 比如:put操作。 2.fsimage 鏡像文件? 文本或者文件夾的存放狀態。 比如:文件名,文件的創建或者上傳者。權限信息,創建時間。。等文件的屬性 由于鏡像文件和edits文件都會加載到內存當中,所以,在公司(生產環境) namenode這臺服務器的內存 都會很大。 SecondaryNameNode目錄結構和namenode目錄結構是很像的,而且在一點時間內,nn里的元數據和sn里元數據是差別不大的。 ? ??????????????分布式系統(distributed system)
一群獨立計算機集合共同對外提供服務,但是對于系統的用戶來說,就像是一臺計算機在提供服務一樣。分布式意味著可以采用更多的普通計算機(相對于昂貴的大型機)組成分布式集群對外提供服務。計算機越多,CPU、內存、存儲資源等也就越多,能夠處理的并發訪問量也就越大。
一個標準的分布式系統應該具有以下幾個主要特征:
分布性
分布式系統中的多臺計算機之間在空間位置上可以隨意分布,系統中的多臺計算機之間沒有主、從之分,即沒有控制整個系統的主機,也沒有受控的從機。
透明性
系統資源被所有計算機共享。每臺計算機的用戶不僅可以使用本機的資源,還可以使用本分布式系統中其他計算機的資源(包括CPU、文件、打印機等)。
轉載于:https://www.cnblogs.com/zxn0628/p/11211147.html
總結
以上是生活随笔為你收集整理的Hadoop初级之Hadoop基本概念与应用前景的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Delphi编写后台监控软件
- 下一篇: 2张表,轻松搞定你的收入问题