前言:
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),青龍企業(yè)網(wǎng)站建設(shè),青龍品牌網(wǎng)站建設(shè),網(wǎng)站定制,青龍網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,青龍網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
hadoop:存儲(chǔ)和處理平臺(tái)
hdfs:集群,NN,SNN,DN //SNN:將HDFS的日志和映像進(jìn)行合并操作
mapreduce: 集群,有中心node,jobTracker/Task tracker,
jT:集群資源管理
TT:任務(wù),map,reduce
hadoop 2.0
YARN:集群資源管理,分割
MapReduce:數(shù)據(jù)處理
RN,NM,AM //RN:資源節(jié)點(diǎn),NM:節(jié)點(diǎn)管理,AM:資源代理
container:mr任務(wù)
Tez:execution engine
MR:batch
能夠?qū)N節(jié)點(diǎn)做HA,YARN也可以高可用了
一、2.0工作模型
==================================================
A 【NM/Container A/APP M(B)】
\ /
【RM】-- 【NM/Container B/APP M(A)】
/ \
B 【NM/Container A&A/】
client-->RM--->node1/node2/node n...
Resouce Manager: RM是獨(dú)立的
node上運(yùn)行的有[node manager+App Master+ Container] //NM+AM
Node manager:NM,運(yùn)行在各node上,周期向RM報(bào)告node信息
clinet請(qǐng)求作業(yè):node上的Application master決定要啟動(dòng)幾個(gè)mapper 幾個(gè) reducer
mapper和reducer 稱為 Container //作業(yè)都在容器內(nèi)運(yùn)行。
Application master只有一個(gè),且同一個(gè)任務(wù)的APP M只在一個(gè)節(jié)點(diǎn)上,但是Container會(huì)分別運(yùn)行在多個(gè)節(jié)點(diǎn)上,并周期向APP M報(bào)告其處理狀態(tài)
APP M向RM報(bào)告任務(wù)運(yùn)行狀況,在任務(wù)執(zhí)行完畢后,RM會(huì)把APP M關(guān)閉
某一個(gè)任務(wù)故障后,由App M進(jìn)行管理,而不是RM管理
RM是全局的,NM在每一個(gè)節(jié)點(diǎn)上是唯一的,一個(gè)程序的AM只有一個(gè),但是contianer需要在多個(gè)node上
Hadoop 1.0 和 2.0
1.0 2.0
================ =================
/MR/Pig/Hive|
pig/Hive/Others [Tez ]RT/Service(HBase)
[MapReduce ][YARN ]
[HDFS ][HDFS2 ]
在Hadoop v1的時(shí)候:
Mapreduce是:
1.開發(fā)API
2.運(yùn)行框架
3.運(yùn)行環(huán)境
二、Hadoop的安裝
1.單機(jī)模型:測(cè)試使用
2.偽分布式模型:運(yùn)行于單機(jī)
3.分布式模型:集群模型
Hadoop:基于java語言,需要依賴于jvm
hadoop-2.6.2:jdk 1.6+
hadoop-2.7 jdk 1.7+
1.環(huán)境
vim /etc/profile.d/java.sh
JAVA_HOME=/usr
yum install java-1.8.0-openjdk-devel.x86_64
每一個(gè)java程序在運(yùn)行的時(shí)候,都會(huì)啟動(dòng)一個(gè)jvm,需要配置其堆內(nèi)存。
新生代,老年代,持久代 //垃圾收集器
slaves:
一個(gè)DN;data node,對(duì)于yarn來說是node manager
tar xvf hadoop-2.6.2.tar.gz -C /bdapps/
cd /bdapps/
ln -sv hadoop-2.6.2/ hadoop
cd hadoop
vim /etc/profile.d/hadoop.sh
export HADOOP_PREFIX=/bdapps/hadoop export PATH=$PATH:${HADOOP_PREFIX}/bin:${HADOOP_PREFIX}/sbin export HADOOP_YARN_HOME=${HADOOP_PREFIX} export HADOOP_MAPPERD_HOME=${HADOOP_PREFIX} export HADOOP_COMMON_HOME=${HADOOP_PREFIX} export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
. /etc/profile.d/hadoop.sh
2.創(chuàng)建運(yùn)行Hadoop進(jìn)程的用戶和相關(guān)目錄
[root@node2 hadoop]# groupadd hadoop [root@node2 hadoop]# useradd -g hadoop yarn [root@node2 hadoop]# useradd -g hadoop hdfs [root@node2 hadoop]# useradd -g hadoop mapred 創(chuàng)建數(shù)據(jù)和日志目錄 [root@node2 hadoop]# mkdir -pv /data/hadoop/hdfs/{nn,snn,dn} [root@node2 hadoop]# chown -R hdfs:hadoop /data/hadoop/hdfs/ [root@node2 hadoop]# cd /bdapps/hadoop [root@node2 hadoop]# mkdir logs [root@node2 hadoop]# chmod g+w logs [root@node2 hadoop]# chown -R yarn:hadoop ./*
3.配置hadoop
core-site.xml包含了NameNode主機(jī)地址以及監(jiān)聽RPC端口信息,對(duì)于偽分布式模型的安裝來說,其主機(jī)地址為localhost,NameNode默認(rèn)使用的RPC端口為8020
vim etc/hadoop/core-site.xml
fs.defaultFS hdfs://localhost:8020 true
配置hdfs的相關(guān)屬性:例如復(fù)制因子(數(shù)據(jù)塊的副本)、NN和DN用于存儲(chǔ)數(shù)據(jù)的目錄等。數(shù)據(jù)塊的副本對(duì)于偽分布式的Hadoop應(yīng)該為1,
而NN和DN用于存儲(chǔ)的數(shù)據(jù)的目錄為前面的步驟中專門為其創(chuàng)建的路徑。
[root@node2 hadoop]# vim etc/hadoop/hdfs-site.xml
dfs.replication //dfs的副本數(shù)量1 dfs.namenode.name.dir file:///data/hadoop/hdfs/nn dfs.datanode.data.dir file:///data/hadoop/hdfs/dn fs.checkpoint.dir file:///data/hadoop/hdfs/snn fs.checkpoint.edits.dir file:///data/hadoop/hdfs/snn
配置MapReduce framework,此應(yīng)該指定使用yarn,另外的可用值還有l(wèi)ocal和classic
[root@node2 hadoop]# cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
[root@node2 hadoop]# vim etc/hadoop/mapred-site.xml
mapreduce.framework.name yarn
配置YARN進(jìn)程及YARN相關(guān)屬性,首先執(zhí)行ResourceManager守護(hù)進(jìn)程的主機(jī)和監(jiān)聽的端口。
對(duì)于偽分布式模型來講,其主機(jī)為localhost,默認(rèn)的端口為8032;其次指定ResourceManager使用的scheduler,以及NodeManager的輔助任務(wù)。
[root@node2 hadoop]# vim etc/hadoop/yarn-site.xml
yarn.resourcemanager.address localhost:8032 yarn.resourcemanager.scheduler.address localhost:8030 yarn.resourcemanager.resource-tracker.address localhost:8031 yarn.resourcemanager.admin.address localhost:8033 yarn.resourcemanager.webapp.address localhost:8088 yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.auxservices.mapreduce_shuffle.class org.apache.hadoop.mapred.ShuffleHandler yarn.resourcemanager.scheduler.class org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
配置hadoop-devn.sh和yarn-env.sh--默認(rèn)即可
Hadoop的各守護(hù)進(jìn)程依賴于JAVA_HOME,Hadoop大多數(shù)守護(hù)進(jìn)程的堆內(nèi)存大小為1G
可根據(jù)需求調(diào)整。
slaves:定義hdfs的從節(jié)點(diǎn)列表--默認(rèn)為本機(jī)
4.格式化HDFS
假如hdfs-site.xml 中的dfs.namenode.name.dir目錄不存在,格式化會(huì)創(chuàng)建之
如果實(shí)現(xiàn)存在:需要確保其權(quán)限設(shè)置正確,格式化會(huì)清除其內(nèi)部數(shù)據(jù)并重新建立文件系統(tǒng)
切換hdfs用戶的身份執(zhí)行
[root@node2 hadoop]# su - hdfs
hdfs命令分類:
User Commands
dfs:文件系統(tǒng)命令,,rm,cat,put,get,rmr,ls,cp,du,...
hdfs dfs -put localfile /user/hadoop/hadoopfile
fetchdt
fsck
version
Administration Commands
balancer
datanode
dfsadmin
mover
namenode
secondarynamenode
簡(jiǎn)單配置拍錯(cuò):不能在/data目錄下生成文件
解決步驟:
1.diff 命令,把配置文件頭部的空白全部刪除
vim
::%s/^[[:space:]]\+//
[hdfs@localhost ~]$ hdfs namenode -format
/data/hadoop/hdfs/nn has been successfully formatted.
5.啟動(dòng)hadoop //NN,DN,SNN,RM,NM
NameNode: hadoop-daemon.sh start/stop namenode
DataNode: hadoop-daemon.sh start/stop datanode
Secondary NameNode: hadoop-daemon.sh start/stop secondarynamenode
ResourceManager: yarn-daemon.sh start/stop resourcemanager
NodeManager: yarn-daemon.sh start/stop nodemanager
啟動(dòng)HDFS服務(wù)
HDFS有三個(gè)守護(hù)進(jìn)程:
namenode、datanode、secondarynamenode都可以通過hadoop daemon.sh
YARN有兩個(gè)守護(hù)進(jìn)程:
resourcemanager和nodemanager,都可以通過yarn-daemon.sh 腳本啟動(dòng)
[hdfs@localhost ~]$ hadoop-daemon.sh start namenode
starting namenode, logging to /bdapps/hadoop/logs/hadoop-hdfs-namenode-localhost.o
[hdfs@localhost ~]$ jps //java的ps命令
4215 NameNode
4255 Jps
[hdfs@localhost ~]$ hadoop-daemon.sh start secondarynamenode
starting secondarynamenode, logging to /bdapps/hadoop/logs/hadoop-hdfs-secondarynamenode-localhost.out
[hdfs@localhost ~]$ hadoop-daemon.sh start datanode
starting datanode, logging to /bdapps/hadoop/logs/hadoop-hdfs-datanode-localhost.ou
//此時(shí)就可以上傳文件了
[hdfs@localhost ~]$ hdfs dfs -mkdir /test//創(chuàng)建組
[hdfs@localhost ~]$ hdfs dfs -ls /
Found 1 items
drwxr-xr-x - hdfs supergroup 0 2017-05-13 22:18 /te
[hdfs@localhost ~]$ hdfs dfs -put /etc/fstab /test/
[hdfs@localhost ~]$ hdfs dfs -ls /test
Found 1 items
-rw-r--r-- 1 hdfs supergroup 537 2017-05-13 22:21 /test/fstab
cat /data/hadoop/hdfs/dn/current/BP-1163334701-127.0.0.1-1494676927122/current/finalized/subdir0/subdir0/blk_1073741825
//可以進(jìn)行查看
hdfs dfs -cat /test/fstab //也可以查看內(nèi)容一樣
//文件過大的話,會(huì)被切割成n塊。
注意:如果要其他用戶對(duì)hdfs有寫入權(quán)限,需要在hdfs-site.xml添加一項(xiàng)屬性定義。
dfs.permissions false
[root@node2 test]# su - yarn [yarn@localhost ~]$ yarn-daemon.sh start resourcemanager starting resourcemanager, logging to /bdapps/hadoop/logs/yarn-yarn-resourcemanager-localhost.out [yarn@localhost ~]$ yarn-daemon.sh start nodemanager starting nodemanager, logging to /bdapps/hadoop/logs/yarn-yarn-nodemanager-localhost.out [yarn@localhost ~]$ jps 5191 Jps 5068 NodeManager 4829 ResourceManager
6.Web UI概覽
HDFS和YARN ResourceManager各自提供了Web接口。
HDFS-NameNode:http://NameNodeHost:50070/
YARN-ResourceManager http://ResourceManagerHost:8088
http://192.168.4.105:50070/dfshealth.html#tab-overview
YARN-ResourceManager:只監(jiān)聽在127.0.0.1,
EditLog的內(nèi)容:
NameNode SecondaryNameNode
fs-p_w_picpath
|________> 合并為新的fs-p_w_picpath
EditLog滾動(dòng)一次------>取出 |
|
覆蓋原有的fs-p_w_picpath__________________|
secondaryNameNode:合并NameNode上的Editlog合并到fs-imange上,以保證持久影響文件上,盡可能多的保持多的信息
真正的使用元數(shù)據(jù)在NameNode的內(nèi)存中,假如數(shù)據(jù)發(fā)生修改,會(huì)追加到editlog中
firefox localhost:8088 &
Applications
SUBMITED:已經(jīng)提交的作業(yè)
ACCEPTED:接受的作業(yè)
RUNNING
FINISHED
FAILED:失敗的
KILLED:
//SecnondaryNameNode從NameNode中取得
7.運(yùn)行測(cè)試程序
[root@localhost mapreduce]# su - hdfs
[hdfs@localhost ~]$ cd /bdapps/hadoop/share/hadoop/mapreduce/
yarn jar hadoop-mapreduce-examples-2.6.2.jar //有很多測(cè)試程序
hdfs dfs -ls /test/fstab.out //查看
hdfs dfs -cat /test/fstab.out/paprt-r-00000 //查看
//統(tǒng)計(jì)每個(gè)單詞的出現(xiàn)次數(shù)
小結(jié)
1.配置環(huán)境
java.sh hadoop.sh
2.創(chuàng)建用戶和相關(guān)目錄
3.配置hadoop
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
4.格式化HDFS
[hdfs@localhost ~]$ hdfs namenode -format
/data/hadoop/hdfs/nn has been successfully formatted.
5.啟動(dòng)hadoop
NameNode: hadoop-daemon.sh start/stop namenode
DataNode: hadoop-daemon.sh start/stop datanode
Secondary NameNode: hadoop-daemon.sh start/stop secondarynamenode
ResourceManager: yarn-daemon.sh start/stop resourcemanager
NodeManager: yarn-daemon.sh start/stop nodemanager
6.Web UI概覽
HDFS和YARN ResourceManager各自提供了Web接口。
HDFS-NameNode:http://NameNodeHost:50070/
YARN-ResourceManager http://ResourceManagerHost:8088
幫助文檔:http://hadoop.apache.org/docs/r2.6.5/