您好,登錄后才能下訂單哦!
前驟:
Hadoop Cluster中的Daemon
HDFS:
NameNode,NN
SecondaryNode,SNN
DataNode:DN
/data/hadoop/hdfs/{nn,snn,dn}
nn:fsp_w_picpath,editlog//鏡像和編輯日志
//hdfs的NN是在內存中存放數據,不斷根據文件狀態改變,修改元數據
fsp_w_picpath存放了:文件分割后存放在哪些node上
//文件元數據的改變,會寫入到editllog中,最后寫入到fsp_w_picpath中,因此下次NN重啟后數據依然存在,從fsp_w_picpath中讀取數據,獲取到內存中
//一旦nn崩潰,數據恢復需要大量的時間
snn:在nn崩潰的時候,及時頂上去,省去修復nn,讓nn重新上線的時間,但是各個data node報告數據狀態,進行修復的時間依然需要。
正常情況下:snn負責copy nn的fsp_w_picpath和editlog然后在snn上合并
checkpoint:因為nn是在不斷變化的,因此snn要指定合并到那個時間點上。
//官方建議30個以上的node構建hadoop集群
data是否需要工作于raid//因為hdfs已經有replicate的功能,因此再次提供冗余的必要性不大
hadoop-daemon.sh 運行進程
在集群模式中hadoop-daemon.sh start DataNode時,需要自動的找每一個DataNode節點,然后在每一個DataNode上自動啟動。
如何找到,或者如何保證命令能夠通過主控節點,自動連接到各從節點,并且有權限執行命令。
在主節點上:配置
YARN:
ResourceManager
NodeManager:
yarn-daemon.sh start/stop
實際運行進程:
【NN】 【SNN】 【RM】
| | |
---------------------------------
[node1/NN] [nod2/NN] [node3/NN]
在node上啟動:datanode進程和nodemanager進程即可
實驗模型:
【NN/SNN/RM】
|
-----------------------------------------
[node1/NN] [nod2/NN] [node3/NN]
主控節點上運行:namenode,secondarynamenode,resourcemanager三個進程
其他node上啟動:datanode進程和nodemanager進程
預備:
1.ntpdate 同步
tzselect,
timedatactl //查看時區設置
timedatectl list-timezones # 列出所有時區
timedatectl set-local-rtc 1 # 將硬件時鐘調整為與本地時鐘一致, 0 為設置為 UTC 時間
timedatectl set-timezone Asia/Shanghai # 設置系統時區為上海
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime //最簡單的方案
2.hosts通信
172.16.100.67 node1.mt.com node1 master
172.16.100.68 node2.mt.com node2
172.16.100.69 node3.mt.com node3
172.16.100.70 node4.mt.com node4
如果需要通過master節點啟動或停止整個集群,需要在master上配置運行服務的用戶,如hdfs和yarn能夠基于密鑰ssh鏈接
node1:
一、前奏
(1)配置環境
vim /etc/profile.d/java.sh
JAVA_HOME=/usr
yum install java-1.8.0-openjdk-devel.x86_64
scp /etc/profile.d/java.sh node2:/etc/profile.d/
scp /etc/profile.d/java.sh node3:/etc/profile.d/
scp /etc/profile.d/java.sh node4:/etc/profile.d/
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
scp /etc/profile.d/hadoop.sh node2:/etc/profile.d/
scp /etc/profile.d/hadoop.sh node3:/etc/profile.d/
scp /etc/profile.d/hadoop.sh node4:/etc/profile.d/
(2)修改hosts文件
vim /etc/hosts
172.16.100.67 node1.mt.com node1 master
172.16.100.68 node2.mt.com node2
172.16.100.69 node3.mt.com node3
172.16.100.70 node4.mt.com node4
scp 到 node2,node3,node4
(3)hadoop 密鑰登錄
useradd hadoop //node2,3,4都有一個hadoop用戶
echo "hadoop" | passwd --stdin hadoop
useradd -g hadoop hadoop //這里都使用一個用戶,也可以分別創建yarn和hdfs用戶
su - hadoop
ssh-keygen
for i in 2 3 4; do ssh-copy-id -i .ssh/id_rsa.pub hadoop@node${i}; done
驗證:
ssh node2 'date'
ssh node3 'date'
ssh node4 'date'
二、安裝部署hadoop
(1)解壓
mkdir -pv /bdapps/ /data/hadoop/hdfs/{nn,snn,dn} //這里的dn是用不到的,因為主控節點是不存儲數據的,可以不創建
chown -R hadoop:hadoop /data/hadoop/hdfs
tar xvf hadoop-2.6.2.tar.gz -C /bdapps/
cd /bdapps/
ln -sv hadoop-2.6.2 hadoop
cd hadoop
mkdir logs
chown g+w logs
chown -R hadoop:hadoop ./*
(2)配置文件修改
1.core-site.xml 配置
vim etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
//hdfs的訪問接口,master如果不能解析,用ip地址也可以
<final>true</final>
</property>
</configuration>
//core指向NN
2.yanr-site.xml文件配置
vim etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
</configuration>
//%s/localhost/master/g //替換localhost為master
//指向ResourceManager
3.hdfs-site.xml配置
vim etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name> //dfs的副本數量
<value>2</value>
</property>
<proporty>
<name>dfs.namenode.name.dir</name>
<value>file:///data/hadoop/hdfs/nn</value>
</property>
<proporty>
<name>dfs.datanode.data.dir</name>
<value>file:///data/hadoop/hdfs/dn</value>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>file:///data/hadoop/hdfs/snn</value>
</property>
<property>
<name>fs.checkpoint.edits.dir</name>
<value>file:///data/hadoop/hdfs/snn</value>
</property>
</configuration>
4.
mapred-site.xml 是唯一不需要修改的
默認的就是yarn就可以
5.
vim slaves
node2
node3
node4
//slaves是datanode和nodemanager
(3)
在node2,node3,node4指定到該步驟后:chown -R hadoop:hadoop ./*
su - hadoop
scp /bdapps/hadoop/etc/hadoop/* node2:/bdapps/hadoop/etc/hadoop/
scp /bdapps/hadoop/etc/hadoop/* node3:/bdapps/hadoop/etc/hadoop/
scp /bdapps/hadoop/etc/hadoop/* node4:/bdapps/hadoop/etc/hadoop/
三.格式化然后啟動
su - hadoop
hdfs namenode -format
顯示/data/hadoop/hdfs/nn hash been successful formatted 表示成功
啟動hadoop方式有兩種:
1.在各節點上分別啟動要啟動的服務
啟動yarn服務要使用yarn用戶身份
master節點:NameNode服務和ResourceManager服務
su - hdfs -c 'hadoop-daemon.sh start namenode'
su - hdfs -c 'yarn-daemon.sh start resourcemanager'
slave節點:DataNode服務和NodeManager服務
su - hdfs -c 'hadoop-daemon.sh start datanode'
su - hdfs -c 'yarn-daemon.sh start nodemanager'
2.在master上啟動整個集群
su - hdfs -c 'start-dfs.sh'
su - hdfs -c 'start-yarn.sh'
老版本通過start-all.sh和stop-all.sh來控制hdfs和mapreduce
啟動服務:
su - hdfs -c 'start-dfs.sh'
su - hdfs -c 'stop-dfs.sh' //關閉hdfs
會提示在,2,3,4節點上啟動
su - hdfs -c 'start-yarn.sh'
master啟動resourcemanager
slave上啟動nodemanager
測試:
node3: su - hadoop
jps //查看DataNode進程和NodeManager進程
node1:su - hadoop
jps //啟動的有secondaryNameNode和NameNode進程
hdfs dfs -mkdir /test
hdfs dfs -put /etc/fstab /test/fstab
hdfs dfs -ls -R /test
hdfs dfs -cat /test/fstab
node3:
ls /data/hadoop/hdfs/dn/current/..../blk,... 存儲在這里
注意:node2,3,4中有一個是沒有存儲該文件的,因為定義的slaves 為2個
vim etc/hadoop/hdfs-site.xml
<name>dfs.replication</name> //dfs的副本數量
<value>2</value>
Web接口查看:
172.16.100.67:8088
內存顯示為24G,因為3G,每個node的物理內存代大小為8G
172.16.100.67:50070
datanode: 有三個
單個文件太小的是不會被切割的,大于64M的文件會被切片
可以直接上傳壓縮文件,會被切塊
運行任務測試:
yarn jar /bdapps/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-example-2.6.jar wordcount /test/fstab /test/functions /test/wc
hdfs dfs cat /test/wc/part-r-0000
四、其他節點
node2:
user hadoop
echo "hadoop" | passwd --stdin hadoop
mkdir -pv /bdapps /data/hadoop/hdfs/{nn,snn,dn} //只有dn有用
chown -R hadoop:hadoop /data/hadoop/hdfs/
tar xvf hadoop-2.6.2.tar.gz -C /bdapps/
cd /bdapps/
ln -sv hadoop-2.6.2 hadoop
cd hadoop
mkdir logs
chown g+w logs
chown -R hadoop:hadoop ./*
//可以在修改配置文件后,直接復制到node3和node4上因為配置都一樣
node3:
user hadoop
echo "hadoop" | passwd --stdin hadoop
mkdir -pv /bdapps /data/hadoop/hdfs/{nn,snn,dn} //只有dn有用
chown -R hadoop:hadoop /data/hadoop/hdfs/
tar xvf hadoop-2.6.2.tar.gz -C /bdapps/
cd /bdapps/
ln -sv hadoop-2.6.2 hadoop
cd hadoop
mkdir logs
chown g+w logs
chown -R hadoop:hadoop ./*
node4:
user hadoop
echo "hadoop" | passwd --stdin hadoop
mkdir -pv /bdapps /data/hadoop/hdfs/{nn,snn,dn} //只有dn有用
chown -R hadoop:hadoop /data/hadoop/hdfs/
tar xvf hadoop-2.6.2.tar.gz -C /bdapps/
cd /bdapps/
ln -sv hadoop-2.6.2 hadoop
cd hadoop
mkdir logs
chown g+w logs
chown -R hadoop:hadoop ./*
=====================================================
yarn的集群管理命令
yarn [--config confdir] COMMAND
resourcemanager-format-state-store //刪除RMStateStore
resourcemanager //運行ResourceManager
nodemanaer //運行nodemanager on each slave
timelineserver //運行timelineserver,任務編排,時間線
rmadmin //resourcemanager管理
version
jar //運行jar文件
application //顯示application信息
report/kill application
applicationattempt //嘗試運行相關報告
container //容器相關信息
node //顯示node
queue //報告隊列信息
logs //備份容器日志
classpath //顯示java運行程序時的類加載路徑
daemonlog //獲取守護進程的日志級別
jar,application,node,logs,classpath,version 是常用的用戶命令
resourcemanager,nodemanager,proxyserver,rmadmin,daemon是常用的管理類命令
yarn application [options]
-status ApplicationID 狀態信息
yarn application -status application_1494685700454_0001
-list 列出yarn上的application列表
-appTypes:MAPREDUCE,YARN
-appStates:ALL,NEW,NEW_SAVING,SUBMITTED,ACCEPTED,RUNNING,FINISHED,FAILED,KILLED
yarn application -appStates=all
-kill ApplicationID
yarn node
-list //例出node列表
-states: NEW,RUNNING,UNHEALTHY不健康,DECOMMISSION退役的,LOST,REBOOTED
-staus Node-ID //顯示節點信息
logs:顯示已經完成的YARN程序的日志(及狀態為:FAILED,KILLED,FINISHED)
如果需要在命令行查看日志需要配置yarn-site.xml
yarn.log-aggregation-enable 屬性值為true
yarn logs -applicationId [applicationID] [options]
-applicationId applicationID必備選項,用于從ResourceManager獲取其詳細信息。
-appOwner APPOwner默認為當前用戶,可選
-nodeAddress NodeAddress -containerId containerID:獲取當前指定節點上指定容器的相關信息;其中NodeAddress的格式同NodeId
classpath:
yarn calasspath //加載java程序路徑
管理命令:
rmadmin
nodemanager
timelineserver
rmadmin是ResourceManager的客戶端程序,可用于刷新訪問控制策略、調度器隊列及注冊到RM上的節點等。
刷新之后,無需重啟即可生效。
yarn rmadmin [options]
-help
-refreshQueues:重載隊列的acl,狀態及調用器隊列;它會根據配置文件中的配置信息重新初始化調度器
-refreshNodes:為RM刷新主機信息,它通過讀取RM節點的include和exclude文件來更新集群需要包含或排除的節點列表。
-refreshUserToGroupMappings:根據配置的Hadoop安全組映射,通過刷新組緩存中的信息來更新用戶和組之間的映射關系。
-refreshSuperUserGroupsConfiguration:刷新超級用戶代理組映射,以及更新代理主機和core-site.xml配置文件中的hadoop.proxyuser屬性定義的代理組
-refreshAdminAcls:根據yarn站點配置文件或默認配置文件的yarn.admin.acl屬性刷新RM的管理ACL;
-refreshServiceAcl:重載服務級別授權策略文件,而后RM將重載授權策略文件;它會檢查hadoop安全授權是否啟用并為IPC Server,ApplicationMaster,Client及Resource tracker刷新ACL;
DaemonLog:查看或更細
http://host:port/logLevel?log=name service?
yarn daemonlog [options] args
-getLevel host:port name:顯示指定守護進程的日志級別
-getLevel host:port level:設置守護進程的日志級別
運行YARN application
yarn application可以是一個shell腳本,MapReduce作業或者其他類型的任意作業。
步驟:
1.Application初始化提交 //client端完成
2.分配內存并啟動AM //RM完成
3.AM注冊及資源分配 //AM在nodemanager上完成
4.啟動并監控容器 //AM向NM報告,NM報告RM完成
5.Application進度報告 //AM完成
6.Application進度完成 //
利用ambari部署hadoop集群
https://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari/
https://cwiki.apache.org/confluence/display/AMBARI/Installation+Guide+for+Ambari+2.5.0
IBM官方技術論壇:https://www.ibm.com/developerworks/cn/opensource/
Ambari 2.2.2 下載資源
OS Format URL
http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.2.2.0
http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.2.2.0/ambari.repo
http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.2.2.0/ambari-2.2.2.0-centos7.tar.gz
HDP 2.4.2 下載資源
http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.4.2.0
http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.4.2.0/hdp.repo
http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.4.2.0/HDP-2.4.2.0-centos7-rpm.tar.gz
http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos7
http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos7/HDP-UTILS-1.1.0.20-centos7.tar.gz
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。