天天看點

hadoo分布式安裝

前驟:

Hadoop Cluster中的Daemon

    HDFS:

        NameNode,NN

SecondaryNode,SNN

        DataNode:DN

    /data/hadoop/hdfs/{nn,snn,dn}

            nn:fsimage,editlog//鏡像和編輯日志

        //hdfs的NN是在記憶體中存放資料,不斷根據檔案狀态改變,修改中繼資料

    fsimage存放了:檔案分割後存放在哪些node上

        //檔案中繼資料的改變,會寫入到editllog中,最後寫入到fsimage中,是以下次NN重新開機後資料依然存在,從fsimage中讀取資料,擷取到記憶體中

//一旦nn崩潰,資料恢複需要大量的時間

    snn:在nn崩潰的時候,及時頂上去,省去修複nn,讓nn重新上線的時間,但是各個data node報告資料狀态,進行修複的時間依然需要。

        正常情況下:snn負責copy nn的fsimage和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】 

|

-----------------------------------------

主要節點上運作: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

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 

        <name>yarn.resourcemanager.address</name>

        <value>master:8032</value>

        <name>yarn.resourcemanager.scheduler.address</name>

        <value>master:8030</value>

        <name>yarn.resourcemanager.resource-tracker.address</name>

        <value>master:8031</value>

        <name>yarn.resourcemanager.admin.address</name>

        <value>master:8033</value>

        <name>yarn.resourcemanager.webapp.address</name>

        <value>master:8088</value>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

        <name>yarn.nodemanager.auxservices.mapreduce_shuffle.class</name>

        <value>org.apache.hadoop.mapred.ShuffleHandler</value>

        <name>yarn.resourcemanager.scheduler.class</name>

        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>

//%s/localhost/master/g //替換localhost為master

//指向ResourceManager

3.hdfs-site.xml配置

vim etc/hadoop/hdfs-site.xml 

    <property>  

        <name>dfs.replication</name>  //dfs的副本數量

        <value>2</value>

<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>

        <name>fs.checkpoint.dir</name>

        <value>file:///data/hadoop/hdfs/snn</value>

        <name>fs.checkpoint.edits.dir</name>

4.

mapred-site.xml 是唯一不需要修改的

預設的就是yarn就可以

5. 

vim slaves

node2

node3

node4 

//slaves是datanode和nodemanager

(3)

在node2,node3,node4指定到該步驟後:chown -R hadoop: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/

三.格式化然後啟動

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節點上啟動

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個

<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 

mkdir -pv /bdapps  /data/hadoop/hdfs/{nn,snn,dn} //隻有dn有用

chown -R hadoop:hadoop /data/hadoop/hdfs/

//可以在修改配置檔案後,直接複制到node3和node4上因為配置都一樣

node3:

node4:

=====================================================

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

本文轉自MT_IT51CTO部落格,原文連結:http://blog.51cto.com/hmtk520/1944156,如需轉載請自行聯系原作者