溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

hadoo分布式安裝

發(fā)布時(shí)間:2020-07-20 16:20:12 來源:網(wǎng)絡(luò) 閱讀:1739 作者:MT_IT 欄目:建站服務(wù)器

前驟:

Hadoop Cluster中的Daemon

    HDFS:

        NameNode,NN

SecondaryNode,SNN

        DataNode:DN

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

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

        //hdfs的NN是在內(nèi)存中存放數(shù)據(jù),不斷根據(jù)文件狀態(tài)改變,修改元數(shù)據(jù)

    fsp_w_picpath存放了:文件分割后存放在哪些node上

        //文件元數(shù)據(jù)的改變,會(huì)寫入到editllog中,最后寫入到fsp_w_picpath中,因此下次NN重啟后數(shù)據(jù)依然存在,從fsp_w_picpath中讀取數(shù)據(jù),獲取到內(nèi)存中

//一旦nn崩潰,數(shù)據(jù)恢復(fù)需要大量的時(shí)間

    snn:在nn崩潰的時(shí)候,及時(shí)頂上去,省去修復(fù)nn,讓nn重新上線的時(shí)間,但是各個(gè)data node報(bào)告數(shù)據(jù)狀態(tài),進(jìn)行修復(fù)的時(shí)間依然需要。

        正常情況下:snn負(fù)責(zé)copy nn的fsp_w_picpath和editlog然后在snn上合并

    checkpoint:因?yàn)閚n是在不斷變化的,因此snn要指定合并到那個(gè)時(shí)間點(diǎn)上。

//官方建議30個(gè)以上的node構(gòu)建hadoop集群

data是否需要工作于raid//因?yàn)閔dfs已經(jīng)有replicate的功能,因此再次提供冗余的必要性不大

hadoop-daemon.sh 運(yùn)行進(jìn)程

    在集群模式中hadoop-daemon.sh start DataNode時(shí),需要自動(dòng)的找每一個(gè)DataNode節(jié)點(diǎn),然后在每一個(gè)DataNode上自動(dòng)啟動(dòng)。

    如何找到,或者如何保證命令能夠通過主控節(jié)點(diǎn),自動(dòng)連接到各從節(jié)點(diǎn),并且有權(quán)限執(zhí)行命令。


在主節(jié)點(diǎn)上:配置

YARN:

ResourceManager

NodeManager:

yarn-daemon.sh start/stop

實(shí)際運(yùn)行進(jìn)程:

【NN】 【SNN】 【RM】

    |    |   |

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

[node1/NN] [nod2/NN] [node3/NN]

在node上啟動(dòng):datanode進(jìn)程和nodemanager進(jìn)程即可

實(shí)驗(yàn)?zāi)P停?/p>

【NN/SNN/RM】 

|

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

[node1/NN] [nod2/NN] [node3/NN]

主控節(jié)點(diǎn)上運(yùn)行:namenode,secondarynamenode,resourcemanager三個(gè)進(jìn)程

其他node上啟動(dòng):datanode進(jìn)程和nodemanager進(jìn)程

預(yù)備:

    1.ntpdate 同步

        tzselect,

timedatactl //查看時(shí)區(qū)設(shè)置

timedatectl list-timezones # 列出所有時(shí)區(qū)

timedatectl set-local-rtc 1 # 將硬件時(shí)鐘調(diào)整為與本地時(shí)鐘一致, 0 為設(shè)置為 UTC 時(shí)間

timedatectl set-timezone Asia/Shanghai # 設(shè)置系統(tǒng)時(shí)區(qū)為上海

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime //最簡(jiǎn)單的方案

    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節(jié)點(diǎn)啟動(dòng)或停止整個(gè)集群,需要在master上配置運(yùn)行服務(wù)的用戶,如hdfs和yarn能夠基于密鑰ssh鏈接

node1:

一、前奏

(1)配置環(huán)境

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都有一個(gè)hadoop用戶

echo "hadoop" | passwd --stdin hadoop

useradd -g hadoop hadoop //這里都使用一個(gè)用戶,也可以分別創(chuàng)建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

驗(yàn)證:

ssh node2 'date'

ssh node3 'date'

ssh node4 'date'

二、安裝部署hadoop

(1)解壓

mkdir -pv /bdapps/ /data/hadoop/hdfs/{nn,snn,dn}  //這里的dn是用不到的,因?yàn)橹骺毓?jié)點(diǎn)是不存儲(chǔ)數(shù)據(jù)的,可以不創(chuàng)建

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的副本數(shù)量

        <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 是唯一不需要修改的

默認(rèn)的就是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/

三.格式化然后啟動(dòng)

su - hadoop

hdfs namenode -format 

    顯示/data/hadoop/hdfs/nn hash been successful formatted  表示成功

啟動(dòng)hadoop方式有兩種:

    1.在各節(jié)點(diǎn)上分別啟動(dòng)要啟動(dòng)的服務(wù)

        啟動(dòng)yarn服務(wù)要使用yarn用戶身份

     master節(jié)點(diǎn):NameNode服務(wù)和ResourceManager服務(wù)

    su - hdfs -c 'hadoop-daemon.sh start namenode'

    su - hdfs -c 'yarn-daemon.sh start resourcemanager'

slave節(jié)點(diǎn):DataNode服務(wù)和NodeManager服務(wù)

    su - hdfs -c 'hadoop-daemon.sh start datanode'

    su - hdfs -c 'yarn-daemon.sh start nodemanager'

    2.在master上啟動(dòng)整個(gè)集群

        su - hdfs -c 'start-dfs.sh'

su - hdfs -c 'start-yarn.sh'

老版本通過start-all.sh和stop-all.sh來控制hdfs和mapreduce

啟動(dòng)服務(wù):

su - hdfs -c 'start-dfs.sh'

su - hdfs -c 'stop-dfs.sh' //關(guān)閉hdfs

會(huì)提示在,2,3,4節(jié)點(diǎn)上啟動(dòng)

su - hdfs -c 'start-yarn.sh'

master啟動(dòng)resourcemanager

slave上啟動(dòng)nodemanager

測(cè)試:

node3: su - hadoop 

jps //查看DataNode進(jìn)程和NodeManager進(jìn)程

node1:su - hadoop

jps //啟動(dòng)的有secondaryNameNode和NameNode進(jìn)程

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,...  存儲(chǔ)在這里

注意:node2,3,4中有一個(gè)是沒有存儲(chǔ)該文件的,因?yàn)槎x的slaves 為2個(gè)

vim etc/hadoop/hdfs-site.xml

<name>dfs.replication</name>  //dfs的副本數(shù)量

<value>2</value>

Web接口查看:

172.16.100.67:8088

內(nèi)存顯示為24G,因?yàn)?G,每個(gè)node的物理內(nèi)存代大小為8G

172.16.100.67:50070

datanode: 有三個(gè)

單個(gè)文件太小的是不會(huì)被切割的,大于64M的文件會(huì)被切片

可以直接上傳壓縮文件,會(huì)被切塊

運(yùn)行任務(wù)測(cè)試:

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

四、其他節(jié)點(diǎn)

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 ./*

//可以在修改配置文件后,直接復(fù)制到node3和node4上因?yàn)榕渲枚家粯?/p>

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 //運(yùn)行ResourceManager

nodemanaer //運(yùn)行nodemanager on each slave

timelineserver //運(yùn)行timelineserver,任務(wù)編排,時(shí)間線

rmadmin //resourcemanager管理

version

jar //運(yùn)行jar文件

application //顯示application信息

report/kill application

applicationattempt //嘗試運(yùn)行相關(guān)報(bào)告

container //容器相關(guān)信息

node //顯示node

queue //報(bào)告隊(duì)列信息

logs //備份容器日志

classpath //顯示java運(yùn)行程序時(shí)的類加載路徑

daemonlog //獲取守護(hù)進(jìn)程的日志級(jí)別

jar,application,node,logs,classpath,version 是常用的用戶命令

resourcemanager,nodemanager,proxyserver,rmadmin,daemon是常用的管理類命令

yarn application [options]

-status ApplicationID 狀態(tài)信息

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 //顯示節(jié)點(diǎn)信息

logs:顯示已經(jīng)完成的YARN程序的日志(及狀態(tài)為:FAILED,KILLED,FINISHED)

如果需要在命令行查看日志需要配置yarn-site.xml 

yarn.log-aggregation-enable 屬性值為true

yarn logs -applicationId [applicationID] [options]

-applicationId applicationID必備選項(xiàng),用于從ResourceManager獲取其詳細(xì)信息。

-appOwner APPOwner默認(rèn)為當(dāng)前用戶,可選

-nodeAddress NodeAddress -containerId containerID:獲取當(dāng)前指定節(jié)點(diǎn)上指定容器的相關(guān)信息;其中NodeAddress的格式同NodeId

classpath:

yarn calasspath //加載java程序路徑

管理命令:

rmadmin

nodemanager

timelineserver

rmadmin是ResourceManager的客戶端程序,可用于刷新訪問控制策略、調(diào)度器隊(duì)列及注冊(cè)到RM上的節(jié)點(diǎn)等。

刷新之后,無需重啟即可生效。

yarn rmadmin [options]

    -help 

    -refreshQueues:重載隊(duì)列的acl,狀態(tài)及調(diào)用器隊(duì)列;它會(huì)根據(jù)配置文件中的配置信息重新初始化調(diào)度器

    -refreshNodes:為RM刷新主機(jī)信息,它通過讀取RM節(jié)點(diǎn)的include和exclude文件來更新集群需要包含或排除的節(jié)點(diǎn)列表。

    -refreshUserToGroupMappings:根據(jù)配置的Hadoop安全組映射,通過刷新組緩存中的信息來更新用戶和組之間的映射關(guān)系。

    -refreshSuperUserGroupsConfiguration:刷新超級(jí)用戶代理組映射,以及更新代理主機(jī)和core-site.xml配置文件中的hadoop.proxyuser屬性定義的代理組

    -refreshAdminAcls:根據(jù)yarn站點(diǎn)配置文件或默認(rèn)配置文件的yarn.admin.acl屬性刷新RM的管理ACL;

    -refreshServiceAcl:重載服務(wù)級(jí)別授權(quán)策略文件,而后RM將重載授權(quán)策略文件;它會(huì)檢查hadoop安全授權(quán)是否啟用并為IPC Server,ApplicationMaster,Client及Resource tracker刷新ACL;

    DaemonLog:查看或更細(xì)

http://host:port/logLevel?log=name service?

yarn daemonlog [options] args

    -getLevel  host:port name:顯示指定守護(hù)進(jìn)程的日志級(jí)別

    -getLevel  host:port level:設(shè)置守護(hù)進(jìn)程的日志級(jí)別

運(yùn)行YARN application

yarn application可以是一個(gè)shell腳本,MapReduce作業(yè)或者其他類型的任意作業(yè)。

步驟:

1.Application初始化提交 //client端完成

2.分配內(nèi)存并啟動(dòng)AM //RM完成

3.AM注冊(cè)及資源分配 //AM在nodemanager上完成

4.啟動(dòng)并監(jiān)控容器 //AM向NM報(bào)告,NM報(bào)告RM完成

5.Application進(jìn)度報(bào)告 //AM完成

6.Application進(jìn)度完成 //

利用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官方技術(shù)論壇: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


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI