????????????????????????大數(shù)據(jù)之Hadoop入門
一幼苛、Hadoop特點(diǎn)
????????????????volume(大量) velocity(高速) variable(多樣) value(低價(jià)值密度)
二赌厅、Hadoop優(yōu)勢(shì):
1.高可靠性--hadoop底層維護(hù)多個(gè)數(shù)據(jù)版本咆霜,所以即使Hadoop某個(gè)計(jì)算元素或存儲(chǔ)出現(xiàn)故障邓馒,也不會(huì)導(dǎo)致數(shù)據(jù)丟失。
2.高擴(kuò)展性--在集群間分配任務(wù)數(shù)據(jù)裕便,可方便的擴(kuò)展數(shù)以千計(jì)的節(jié)點(diǎn)绒净。
3.高效性--在MapReduce的思想下,hadoop是并行工作的偿衰,以加快任務(wù)處理速度挂疆。
4.高容錯(cuò)性--能夠自動(dòng)將失敗的任務(wù)重新分配。
三下翎、Hadoop的組成:
1. Hadoop1.x VS Hadoop2.x
hadoop1.x是由 MapReduce(計(jì)算+資源調(diào)度) HDFS(數(shù)據(jù)存儲(chǔ)) common(輔助工具) 組成
hadoop2.x是由 MapReduce(計(jì)算) Yarn(資源調(diào)度) HDFS(數(shù)據(jù)存儲(chǔ)) common(輔助工具) 組成
區(qū)別:兩者沒(méi)有太大區(qū)別缤言,只是2.x增加了Yarn,Yarn在2.x中只負(fù)責(zé)資源調(diào)度 MapReduce則只負(fù)責(zé)運(yùn)算
2. HDFS架構(gòu)
01.NameNode(nn):存儲(chǔ)文件的元數(shù)據(jù)视事,如文件名胆萧、文件目錄結(jié)構(gòu)、文件屬性俐东、以及每個(gè)文件的塊列表和塊所在的DataNode等跌穗。
02.DataNode(dn):在本地文件系統(tǒng)存儲(chǔ)塊數(shù)據(jù),以及塊數(shù)據(jù)的校驗(yàn)和虏辫。
03.SecondaryNameNdoe(2nn):用來(lái)監(jiān)控HDFS狀態(tài)的輔助后臺(tái)程序蚌吸,每隔一段時(shí)間獲取HDFS元數(shù)據(jù)的快照。
YARN架構(gòu)
01.ResourceManager(RM)主要作用
1.處理客戶端請(qǐng)求
2.監(jiān)控NodeManager
3.啟動(dòng)或監(jiān)控ApplicationMaster
4.資源的分配與調(diào)度
02.NodeManager(NM)主要作用
1.管理單個(gè)節(jié)點(diǎn)上的資源
2.處理來(lái)自ResourceManager的命令
3.處理來(lái)自ApplicationMaster的命令
03.ApplicationMaster(AM)主要作用
1.負(fù)責(zé)數(shù)據(jù)的切分
2.為應(yīng)用程序申請(qǐng)資源并分配給內(nèi)部的任務(wù)
3.任務(wù)的監(jiān)控與容錯(cuò)
04.Container
Container是YARN中的資源抽象砌庄,它封裝了某個(gè)節(jié)點(diǎn)上多維度資源羹唠,如(內(nèi)存、CPU娄昆、磁盤佩微、網(wǎng)絡(luò))等。
YARN工作機(jī)制
(0)Mr程序提交到客戶端所在的節(jié)點(diǎn)
(1)Yarnrunner向Resourcemanager申請(qǐng)一個(gè)Application萌焰。
(2)rm將該應(yīng)用程序的資源路徑返回給yarnrunner
(3)該程序?qū)⑦\(yùn)行所需資源提交到HDFS上
(4)程序資源提交完畢后哺眯,申請(qǐng)運(yùn)行mrAppMaster
(5)RM將用戶的請(qǐng)求初始化成一個(gè)task
(6)其中一個(gè)NodeManager領(lǐng)取到task任務(wù)。
(7)該NodeManager創(chuàng)建容器Container扒俯,并產(chǎn)生MRAppmaster
(8)Container從HDFS上拷貝資源到本地
(9)MRAppmaster向RM 申請(qǐng)運(yùn)行maptask容器
(10)RM將運(yùn)行maptask任務(wù)分配給另外兩個(gè)NodeManager奶卓,另兩個(gè)NodeManager分別領(lǐng)取任務(wù)并創(chuàng)建容器。
(11)MR向兩個(gè)接收到任務(wù)的NodeManager發(fā)送程序啟動(dòng)腳本陵珍,這兩個(gè)NodeManager分別啟動(dòng)maptask寝杖,maptask對(duì)數(shù)據(jù)分區(qū)排序。
(12)MRAppmaster向RM申請(qǐng)2個(gè)容器互纯,運(yùn)行reduce task瑟幕。
(13)reduce task向maptask獲取相應(yīng)分區(qū)的數(shù)據(jù)。
(14)程序運(yùn)行完畢后,MR會(huì)向RM注銷自己只盹。
四辣往、Hadoop環(huán)境搭建
1. 安裝好linux
2. *安裝VMTools
3. 關(guān)閉防火墻
sudo service iptables stop
sudo chkconfig iptables off
4. 設(shè)置靜態(tài)IP,改主機(jī)名
編輯vim /etc/sysconfig/network-scripts/ifcfg-eth0
改成
=================================
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME="eth0"
IPADDR=192.168.5.101
PREFIX=24
GATEWAY=192.168.5.2
DNS1=192.168.5.2
=================================
編輯vim /etc/sysconfig/network
改HOSTNAME=那一行
5. 配置/etc/hosts
vim /etc/hosts
=============================
192.168.75.100? hadoop100
192.168.75.101? hadoop101
192.168.75.102? hadoop102
=============================
6. 創(chuàng)建一個(gè)一般用戶jinghang殖卑,給他配置密碼
useradd jinghang
passwd jinghang
7. 配置這個(gè)用戶為sudoers
vim /etc/sudoers
在root? ? ALL=(ALL)? ? ? ALL
添加jinghang? ? ALL=(ALL)? ? ? NOPASSWD:ALL
保存時(shí)wq!強(qiáng)制保存
8. *在/opt目錄下創(chuàng)建兩個(gè)文件夾module和software站削,并把所有權(quán)賦給jinghang
mkdir /opt/module /opt/software
chown jinghang:jinghang /opt/module /opt/software
五、Hadoop運(yùn)行模式
Hadoop運(yùn)行模式包括:本地模式孵稽、偽分布式模式以及完全分布式模式许起。
1.本地模式:不需要啟用單獨(dú)進(jìn)程,直接可以運(yùn)行菩鲜,測(cè)試和開(kāi)發(fā)時(shí)使用园细。
2.偽分布模式:等同于完全分布式,只有一個(gè)節(jié)點(diǎn)接校。
3.完全分布式模式:多個(gè)節(jié)點(diǎn)一起運(yùn)行猛频。
????????????????????????大數(shù)據(jù)之Hadoop(HDFS)
一、HDFS組成架構(gòu)
1. NameNode(nn)就是Master 他是一個(gè)主管蛛勉,管理者
01.管理HDFS的名稱空間
02.配置副本策略
03.管理數(shù)據(jù)塊(Block)映射信息
04.處理客戶端讀寫請(qǐng)求
2. DataNode:就是Slave,NameNode下達(dá)命令鹿寻,DataNode執(zhí)行實(shí)際的操作
01.存儲(chǔ)實(shí)際的數(shù)據(jù)塊
02.執(zhí)行數(shù)據(jù)塊的讀寫操作
二、HDFS優(yōu)缺點(diǎn)
1. 優(yōu)點(diǎn)
01.高容錯(cuò)性
001.數(shù)據(jù)自動(dòng)保存多個(gè)副本诽凌,他通過(guò)增加多個(gè)副本的形式毡熏,提高容錯(cuò)性。
002.某一個(gè)副本丟失后皿淋,它可以自動(dòng)恢復(fù)
02.適合處理大數(shù)據(jù)
01.數(shù)據(jù)規(guī)模:能夠處理數(shù)據(jù)規(guī)模達(dá)到GB招刹、TB甚至PB級(jí)別的數(shù)據(jù)
02.文件規(guī)模:能夠處理百萬(wàn)規(guī)模以上的文件數(shù)量恬试,數(shù)量相當(dāng)之大
03.可構(gòu)建在廉價(jià)機(jī)器上窝趣,通過(guò)多副本機(jī)制,提高可靠性
2. 缺點(diǎn)
01.不適合低延時(shí)數(shù)據(jù)訪問(wèn)训柴,比如毫秒級(jí)的存儲(chǔ)數(shù)據(jù)哑舒,是做不到的
02.無(wú)法高效的對(duì)大量小文件進(jìn)行存儲(chǔ)
001.存儲(chǔ)大量小文件的話,它會(huì)占用NameNode大量的內(nèi)存來(lái)存儲(chǔ)文件目錄和塊信息幻馁,這樣是不可取的因?yàn)镹ameNode的內(nèi)存是有限的洗鸵。
002.小文件存儲(chǔ)的尋址時(shí)間會(huì)超過(guò)讀取時(shí)間,它違反了HDFS的設(shè)計(jì)目標(biāo)
03.不支持并發(fā)寫入仗嗦,文件隨機(jī)修改
001.同一時(shí)間一個(gè)文件只能有一個(gè)用戶執(zhí)行寫操作膘滨,不允許多個(gè)線程同時(shí)寫。
002.僅支持?jǐn)?shù)據(jù)append(追加)稀拐,不支持文件隨機(jī)修改
三火邓、HDFS的塊大小
1.HDFS中的文件在物理上是分塊存儲(chǔ)(Block),塊的大小可以通過(guò)配置參數(shù)(dfs.blocksize)來(lái)規(guī)定,默認(rèn)大小在Hadoop2.x版本中是128M铲咨,老版本是64M
2.為什么塊大小不能設(shè)置調(diào)小躲胳,也不能設(shè)置太大?
01.HDFS的塊設(shè)置太小纤勒,會(huì)增加尋址時(shí)間坯苹,程序一直在找塊的開(kāi)始位置
02.HDFS的塊設(shè)置太大,從磁盤傳輸數(shù)據(jù)的時(shí)間會(huì)太明顯大于定位這個(gè)塊開(kāi)始位置所需的時(shí)間摇天,導(dǎo)致程序在處理這個(gè)塊數(shù)據(jù)時(shí)粹湃,會(huì)非常慢
四、HDFS的Shell的操作
1. shell命令操作
-help 功能:輸出這個(gè)命令參數(shù)手冊(cè)
-ls 功能:顯示目錄信息
示例: hadoop fs -ls hdfs://hadoop-server01:9000/
備注:這些參數(shù)中泉坐,所有的hdfs路徑都可以簡(jiǎn)寫
-->hadoop fs -ls /? 等同于上一條命令的效果
-mkdir 功能:在hdfs上創(chuàng)建目錄
示例:hadoop fs? -mkdir? -p? /aaa/bbb/cc/dd
-moveFromLocal(這里的本地為虛擬機(jī)本地再芋,千萬(wàn)別以為是電腦本機(jī)的本地) 功能:從本地剪切粘貼到hdfs
示例:hadoop? fs? - moveFromLocal? /home/hadoop/a.txt? /aaa/bbb/cc/dd
-moveToLocal 功能:從hdfs剪切粘貼到本地
示例:hadoop? fs? - moveToLocal? /aaa/bbb/cc/dd? /home/hadoop/a.txt
--appendToFile 功能:追加一個(gè)文件到已經(jīng)存在的文件末尾
示例:hadoop? fs? -appendToFile? ./hello.txt? hdfs://hadoop-server01:9000/hello.txt
-cat 功能:顯示文件內(nèi)容?
示例:hadoop fs -cat? /hello.txt
-tail 功能:顯示一個(gè)文件的末尾
示例:hadoop? fs? -tail? /weblog/access_log.1
-text 功能:以字符形式打印一個(gè)文件的內(nèi)容
示例:hadoop? fs? -text? /weblog/access_log.1
-chgrp
-chmod
-chown 功能:linux文件系統(tǒng)中的用法一樣,對(duì)文件所屬權(quán)限
示例:hadoop fs -chmod 666 /hello.txt hadoop fs -chown someuser:somegrp? /hello.txt
-copyFromLocal 功能:從本地文件系統(tǒng)中拷貝文件到hdfs路徑去
示例:hadoop? fs? -copyFromLocal? ./jdk.tar.gz? /aaa/
-copyToLocal 功能:從hdfs拷貝到本地
示例:hadoop fs -copyToLocal /aaa/jdk.tar.gz
-cp 功能:從hdfs的一個(gè)路徑拷貝hdfs的另一個(gè)路徑
示例: hadoop? fs? -cp? /aaa/jdk.tar.gz? /bbb/jdk.tar.gz.2
-mv? 功能:在hdfs目錄中移動(dòng)文件
示例: hadoop? fs? -mv? /aaa/jdk.tar.gz? /
-get 功能:等同于copyToLocal坚冀,就是從hdfs下載文件到本地
示例:hadoop fs -get? /aaa/jdk.tar.gz
-getmerge 功能:合并下載多個(gè)文件
示例:比如hdfs的目錄 /aaa/下有多個(gè)文件:log.1, log.2,log.3,... hadoop fs -getmerge /aaa/log.* ./log.sum
-put 功能:等同于copyFromLocal
示例:hadoop? fs? -put? /aaa/jdk.tar.gz? /bbb/jdk.tar.gz.2
-rm 功能:刪除文件或文件夾
示例:hadoop fs -rm -r /aaa/bbb/
-rmdir 功能:刪除空目錄
示例:hadoop? fs? -rmdir? /aaa/bbb/ccc
-df 功能:統(tǒng)計(jì)文件系統(tǒng)的可用空間信息
示例:hadoop? fs? -df? -h? /
-du 功能:統(tǒng)計(jì)文件夾的大小信息
示例:hadoop fs -du -s -h /1805c/*
-count 功能:統(tǒng)計(jì)一個(gè)指定目錄下的文件節(jié)點(diǎn)數(shù)量
示例:hadoop fs -count /aaa/
-setrep 功能:設(shè)置hdfs中文件的副本數(shù)量
示例:hadoop fs -setrep 3 /aaa/jdk.tar.gz