數(shù)據(jù)集:類型魄幕,語義,結(jié)構(gòu)颖杏,組織纯陨,粒度,可訪問性
公有云留储,私有云翼抠,混合云
云計(jì)算改變了IT架構(gòu)阴颖,大數(shù)據(jù)影響業(yè)務(wù)決策丐膝,影響在業(yè)務(wù)層
數(shù)據(jù)中心
零拷貝技術(shù)
硬件基礎(chǔ)架構(gòu)必須具備伸縮性和動(dòng)態(tài)重新配置功能,以針對(duì)不同的應(yīng)用環(huán)境
存儲(chǔ)系統(tǒng)應(yīng)盡可能具備更多的接口功能
分布式存儲(chǔ)系統(tǒng)侠畔,要保證多個(gè)副本數(shù)據(jù)完全一致
列式存儲(chǔ)數(shù)據(jù)庫:Bigtable软棺,Hypertable
數(shù)據(jù)庫編程模型:MR喘落,并行編程模型 并行處理和分發(fā)
map函數(shù)處理輸入并產(chǎn)生中間鍵值對(duì)
避免了開發(fā)并行應(yīng)用程序的繁瑣步驟:數(shù)據(jù)調(diào)度最冰,容錯(cuò)暖哨,節(jié)點(diǎn)通信等問題
大數(shù)據(jù)分析:聚類分析、因子分析沛慢、相關(guān)分析团甲、回歸分析等
大數(shù)據(jù)處理方法:布隆過濾器躺苦、索引产还、Hashing(散列),Triel樹脐区,并行計(jì)算
大數(shù)據(jù)架構(gòu):實(shí)時(shí)(HANA)坡椒,離線(Timetunnel倔叼,Chukwa)內(nèi)存 海量
涵蓋數(shù)據(jù)采集,歸類哩罪,挖掘,呈現(xiàn)碘耳,部署和移植的一體化解決方案
大數(shù)據(jù)一體機(jī)
IDH 4000個(gè)節(jié)點(diǎn)
HBase適合高并發(fā)查詢辛辨,大對(duì)象存儲(chǔ) HDFS低延遲
Hadoop調(diào)優(yōu)
動(dòng)態(tài)不停機(jī)擴(kuò)容
校驗(yàn)和是檢查數(shù)據(jù)完整性的重要方式之一
Hadoop校驗(yàn)機(jī)制)(略)
對(duì)本地文件iO檢查斗搞,對(duì)HDFS的IO進(jìn)行檢查
DN接受數(shù)據(jù)的兩種情況:一是本地上傳慷妙,二是從其他DN上接受
MR在并行處理時(shí)需要將文件分割成許多部分膝擂,編程中可以使MR在程序中使用壓縮
序列化是將對(duì)象轉(zhuǎn)化為字節(jié)流的方法架馋,即用字節(jié)流描述對(duì)象,兩個(gè)目的:進(jìn)程間通信铣墨,以及數(shù)據(jù)持久化
Hadoop使用RPC實(shí)現(xiàn)進(jìn)程間通信
HDFS不支持多用戶同時(shí)操作一個(gè)文件
fsck file-blocks
安全模式是不會(huì)進(jìn)行數(shù)據(jù)塊的復(fù)制的
Namenode本地文件結(jié)構(gòu):{dsf.name.dir}/current/version? edit伊约、fsimages 屡律、fstime
這是元數(shù)據(jù)的鏡像? version是java文件 包含namespaceID cTIme storageType layoutVersion
namespaceID是文件系統(tǒng)的唯一標(biāo)識(shí)符降淮,是在文件系統(tǒng)第一次格式化是創(chuàng)建佳鳖,在DN和NN之間保持一致系吩,NN會(huì)使用他識(shí)別新的DN,DN向NN注冊(cè)才會(huì)獲得? cTime是創(chuàng)建時(shí)間月弛,除非文件系統(tǒng)被更新,否則是0 layoutVersion是負(fù)整數(shù)菜皂,定義了HDFS數(shù)據(jù)持久的版本恍飘,各節(jié)點(diǎn)版本號(hào)要一致
edit常侣、fsimages 弹渔、fstime都是二進(jìn)制文件肢专,可以通過Writable進(jìn)行序列化
StandbyNOde結(jié)構(gòu)和NN一樣
DN結(jié)構(gòu):
DN不需要格式化博杖,啟動(dòng)時(shí)自動(dòng)創(chuàng)建存儲(chǔ)目錄current/version blkXXX subdirXXX version
namespaceID cTIme,layoutVersion都和NN一樣storageID是唯一的筷登,也是多出來的,用來標(biāo)識(shí)DN
blk前綴文件 有兩種:HDFS文件快本身狈醉,即原始文件惠险;塊的元數(shù)據(jù)信息.meta
元數(shù)據(jù)文件由一個(gè)包含版本和類型信息的文件頭與一系列的校驗(yàn)和組成
當(dāng)目錄中存儲(chǔ)的塊數(shù)量達(dá)到一定規(guī)模班巩,DN會(huì)創(chuàng)建一個(gè)新的目錄,用于保存新的塊以及元數(shù)據(jù)逊桦,達(dá)到numblokcs指定的數(shù)量時(shí)强经,便會(huì)創(chuàng)建
Clinet讀取DN時(shí),如果是壞的夕凝,下次不會(huì)再讀了
distcp用于兩個(gè)HDFS之間復(fù)制數(shù)據(jù),有許多選項(xiàng)可以復(fù)制逮矛,比如忽略失敗须鼎,限制文件等府蔗,其實(shí)是一個(gè)MP任務(wù)姓赤,只需要map
如果不同的Hadoop版本,distcp會(huì)因RPC系統(tǒng)不兼容而失敗
要考慮每個(gè)節(jié)點(diǎn)多少個(gè)map任務(wù)
fsck只能檢測(cè)蝌焚,不能修復(fù)只洒,檢測(cè)系統(tǒng)中不一致的情況
hdfs://ip:90000/user/root? nn端口是9000? 有屬性可以設(shè)置 lfs.default.name
MR
map接受key value同時(shí)輸出keyvalue? 具有相同key的value給reduce函數(shù)
reduce接受(key values)輸出也是
hive中影響map任務(wù)數(shù)量的因素:輸入文件總個(gè)數(shù)毕谴,輸入文件大小距芬,Block大小
HBase
client用RPC機(jī)制與HMaster和RegionServer通信蔑穴,管理類的操作,Client與Hmaster進(jìn)行RPC奕剃;讀寫操作纵朋,Client與RegionServer進(jìn)行RPC
最好將具備共同IO特性的列放在一個(gè)cf中
HBase存儲(chǔ)格式:Hfile hLogfiel 以wal的格式存儲(chǔ)茄袖,物理上是順序文件類型
rowkey需要填充到相同長度
scan時(shí)可以設(shè)置起始行和結(jié)束行(rowkey)
HBase0宪祥。92版本之后引入?yún)f(xié)處理器(coprocessors)新特性:訪問控制,復(fù)雜索引藏澳,二級(jí)索引
Hive
hive的數(shù)據(jù)是存儲(chǔ)在HDFS上的
HIVe——port:10000
metastore和hive運(yùn)行在同一個(gè)進(jìn)程里
JDBC翔悠,ODBC都是使用Thrift與Hive服務(wù)器進(jìn)行通信
外表是不會(huì)把源數(shù)據(jù)移到自己的倉庫的,甚至不檢查是否存在
如果hive和其他工具一起管理表双炕,則建立外表妇斤,比如胀滚,從hive中導(dǎo)出數(shù)據(jù)給其他程序使用咽笼;或者同一數(shù)據(jù)集關(guān)聯(lián)不同的數(shù)據(jù)模式戚炫。否則完全又hive管理,就是托管表施掏,
外部表更安全茅糜,方便共享
托管表蔑赘,會(huì)移動(dòng)文件到指定的位置,所以load data時(shí)會(huì)出現(xiàn)文件不存在
序列化工具就是比如insert 或ctas耙箍,serDe會(huì)把hive的數(shù)據(jù)行內(nèi)部表示形式序列化成字節(jié)形式到輸出文件中
反序列化就是查詢
TEXT:每個(gè)文本行就是一個(gè)row
hive不支持delete辩昆,如果想刪除汁针,首先查出需要保留的內(nèi)容,然后用這些數(shù)據(jù)覆蓋這些表 insert overwrite into tablename select tablename where
針對(duì)有多人寫入數(shù)據(jù)的場(chǎng)景术吗,可以考慮采用 Hbase 的方案
若待處理的數(shù)據(jù)只有幾十 GB 的話较屿,不建議使用 Hadoop卓练,因?yàn)闆]有任何好處
MapReduce 編程模型
稱為映射和縮減階段嘱么,
在 Map 中進(jìn)行數(shù)據(jù)的讀取和預(yù)處理顽悼,之后將預(yù)處理的結(jié)果發(fā)送到 Reduce 中進(jìn)行合并蔚龙;
每個(gè)分片大小參數(shù)是很重要的木羹,
由于 Mapper 和 Reducer 往往不在同一個(gè)節(jié)點(diǎn)上運(yùn)行坑填,所以
Reducer 需要從多個(gè)節(jié)點(diǎn)上下載 Mapper 的結(jié)果數(shù)據(jù),并對(duì)這些數(shù)據(jù)進(jìn)行處理妖枚,然后才能
被 Reducer 處理绝页。
MapReduce 數(shù)據(jù)本地化(Data-Local)
MapReduce 計(jì)算框架中負(fù)責(zé)計(jì)算任務(wù)調(diào)度的 JobTracker 對(duì)應(yīng) HDFS 的 NameNode
的角色抒寂,只不過一個(gè)負(fù)責(zé)計(jì)算任務(wù)調(diào)度屈芜,一個(gè)負(fù)責(zé)存儲(chǔ)任務(wù)調(diào)度。MapReduce 計(jì)算框架中負(fù)責(zé)真正計(jì)算任務(wù)的 TaskTracker對(duì)應(yīng)到HDFS 的DataNode
的角色井佑,一個(gè)負(fù)責(zé)計(jì)算躬翁,一個(gè)負(fù)責(zé)管理存儲(chǔ)數(shù)據(jù)
考慮到“本地化原則”盒发,一般地宁舰,將 NameNode 和 JobTracker 部署到同一臺(tái)機(jī)器上蛮艰,各個(gè) DataNode 和 TaskNode 也同樣部署到同一臺(tái)機(jī)器上壤蚜。
這樣做的目的是將 map 任務(wù)分配給含有該 map 處理的數(shù)據(jù)塊的 TaskTracker 上,同時(shí)將程序 JAR 包復(fù)制到該 TaskTracker 上來運(yùn)行聪富,這叫“運(yùn)算移動(dòng),數(shù)據(jù)不移動(dòng)”水泉。而分配
reduce 任務(wù)時(shí)并不考慮數(shù)據(jù)本地化善涨。
ZooKeeper 命名空間中的 Znode,兼具文件和目錄兩種特點(diǎn)節(jié)點(diǎn)類型
Persistent Nodes:永久有效地節(jié)點(diǎn),除非 client 顯式的刪除,否則一直存在草则。
Ephemeral Nodes:臨時(shí)節(jié)點(diǎn),僅在創(chuàng)建該節(jié)點(diǎn) client 保持連接期間有效,一旦連接丟失,zookeeper 會(huì)自動(dòng)刪除該節(jié)點(diǎn)。
Sequence Nodes:順序節(jié)點(diǎn),client 申請(qǐng)創(chuàng)建該節(jié)點(diǎn)時(shí), ZooKeeper 會(huì)自動(dòng)在節(jié)點(diǎn)路徑末尾添加遞增序號(hào),這種類型是實(shí)現(xiàn)分布式鎖,分布式 queue 等特殊功能的關(guān)鍵蟹漓。
客戶端可以在節(jié)點(diǎn)上設(shè)置 watch炕横,我們稱之為監(jiān)視器。當(dāng)節(jié)點(diǎn)狀態(tài)發(fā)生改變時(shí)(Znode的增葡粒、刪份殿、改)將會(huì)觸發(fā) watch 所對(duì)應(yīng)的操作。當(dāng) watch 被觸發(fā)時(shí)嗽交,ZooKeeper 將會(huì)向客
戶端發(fā)送且僅發(fā)送一條通知卿嘲,因?yàn)?watch 只能被觸發(fā)一次,這樣可以減少網(wǎng)絡(luò)流量
傳統(tǒng)的文件系統(tǒng)中司蔬,ACL 分為兩個(gè)維度左医,一個(gè)是屬組,一個(gè)是權(quán)限,子目錄/文件默認(rèn)
繼承父目錄的 ACL屏轰。而在 Zookeeper 中榛做,node 的 ACL 是沒有繼承關(guān)系的,是獨(dú)立控制的。
Zookeeper 的 ACL舞萄,可以從三個(gè)維度來理解:一是 scheme; 二是 user; 三是 permission含思,
通常表示為 scheme:id:permissions, 下面從這三個(gè)方面分別來介紹:
鎖服務(wù)可以分為兩類,一個(gè)是保持獨(dú)占,另一個(gè)是控制時(shí)序
Hbase 適用場(chǎng)景:
1) 大數(shù)據(jù)量存儲(chǔ)居砖,大數(shù)據(jù)量高并發(fā)操作
2) 需要對(duì)數(shù)據(jù)隨機(jī)讀寫操作
3) 讀寫訪問均是非常簡(jiǎn)單的操作
fsck 用來檢查系統(tǒng)中共不一致的情況蔗草,比如文件只有目錄,副本丟失等情況
MR過程中,可能會(huì)涉及分區(qū)范咨,合并昭抒,全排序,分布式緩存艇纺,壓縮等技術(shù)
在map端的key有數(shù)據(jù)傾斜的情況盟劫,即大多數(shù)數(shù)據(jù)的key相同影所,這樣會(huì)導(dǎo)致大多數(shù)數(shù)據(jù)會(huì)集中在一個(gè)kreduce上,造成其壓力太大
如果mapreduce的數(shù)據(jù)源是大量的文本文件或可分割文件,那么map任務(wù)就是這些文件占據(jù)的快的數(shù)量背零;如果是成千上百的文件,那么作業(yè)將會(huì)在內(nèi)核中創(chuàng)建和銷毀map任務(wù)進(jìn)程上消耗大量時(shí)間,會(huì)比實(shí)際處理數(shù)據(jù)時(shí)間還要長
每個(gè)文件都至少需要一個(gè)map任務(wù)
合并小文件:
1.如果是一個(gè)大邏輯文件的分片润樱,可以寫一個(gè)程序
2.本身小皂冰,無法合并,需要容器,對(duì)文件進(jìn)行分組
HARfies:緩解小文件消耗nn內(nèi)存的問題船万,對(duì)于客戶端來說,使用HAR文件
沒有影響
缺陷在于無法被壓縮茬高,無法優(yōu)化mr訪問本地磁盤性能
可以自己創(chuàng)建
SerquenceFile,文件名作為key蛉签。內(nèi)容作為value
map端和reduce端都可能發(fā)生數(shù)據(jù)傾斜,map端如果傾斜经瓷,會(huì)讓多樣化的數(shù)據(jù)集處理效率低,
原因:
1.大量的不可分塊的超大文件
2.大量小文件
reduce端如果傾斜彤悔,則來源于mr的默認(rèn)分區(qū)器
數(shù)據(jù)傾斜是不可避免的
如果傾斜望拖,找出來:把沒完成的和已完成的比較一下