yum安裝CDH5.5 Hadoop集群

来源:http://www.cnblogs.com/bugsbunny/archive/2017/02/04/6363078.html
-Advertisement-
Play Games

本文主要記錄了安裝hadoop集群前的準備工作以及hdfs+yarn+zookeeper的搭建 ...


1、環境說明

系統環境:

  • 系統環境:centos6.7
  • Hadoop版本:CDH5.5
  • JDK運行版本:1.7.0_67

集群各節點組件分配:

2、準備工作

安裝 Hadoop 集群前先做好下麵的準備工作,在修改配置文件的時候,建議在一個節點上修改,然後同步到其他節點。因為要同步配置文件和在多個節點啟動服務,建議配置 ssh 無密碼登陸。

2.1配置hosts

  • CDH 要求使用 IPv4,IPv6 不支持,禁用IPv6方法:
# vim /etc/sysctl.conf
#disable ipv6
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
  • 使其生效:
# sysctl -p
  •  最後確認是否已禁用:
# cat /proc/sys/net/ipv6/conf/all/disable_ipv6
1
  • 設置hostname,以bd-ops-test-74為例
hostname bd-ops-test-74
  •  並使其永久生效
# vim /etc/sysconfig/network
修改HOSTNAME=bd-ops-test-74
  •  修改hosts表
在每個節點上都應有一份hosts表,在之後的配置中,對應節點名稱使用hostname
# vim /etc/hosts 
172.16.57.74 bd-ops-test-74
172.16.57.75 bd-ops-test-75
172.16.57.76 bd-ops-test-76
172.16.57.77 bd-ops-test-77

 2.2關閉防火牆以及selinux

# setenforce 0
# vim /etc/sysconfig/selinux #修改SELINUX=disabled

#清空iptables
# iptables -F

2.3時鐘同步

搭建時鐘同步伺服器

這裡選擇 74 節點為時鐘同步伺服器,其他節點為客戶端同步時間到該節點。安裝ntp:

# yum install ntp -y

 修改 74 上的配置文件 /etc/ntp.conf

driftfile /var/lib/ntp/drift
restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
restrict 172.16.57.0 mask 255.255.255.0 nomodify notrap
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.ntp.org iburst
server 3.centos.pool.ntp.org iburst
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor

 啟動 ntp:

#設置開機啟動
# chkconfig ntpd on

# service ntpd start

ntpq用來監視ntpd操作,使用標準的NTP模式6控制消息模式,並與NTP伺服器通信。

ntpq -p 查詢網路中的NTP伺服器,同時顯示客戶端和每個伺服器的關係。

#ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*dns1.synet.edu. 202.118.1.47     2 u   57   64  377   41.912   -3.877   4.628

客戶端的配置

在76和77節點上執行下麵操作:

# ntpdate bd-ops-test-74

Ntpd啟動的時候通常需要一段時間大概5分鐘進行時間同步,所以在ntpd剛剛啟動的時候還不能正常提供時鐘服務,報錯"no server suitable for synchronization found"。啟動時候需要等待5分鐘。

過一會兒我們就可以看到同步成功了:

#ntpdate bd-ops-test-74
24 Aug 22:32:14 ntpdate[14024]: step time server 172.16.57.74 offset -77.582859 sec

2.4安裝JDK

此過程不再贅述,本例中jdk安裝目錄為/opt/programs/jdk1.7.0_67

2.5設置本地yum源

從官方下載cdh5.5壓縮倉庫包,傳送門:http://archive.cloudera.com/cdh5/repo-as-tarball/5.5.1/cdh5.5.1-centos5.tar.gz

解壓後配置本地倉庫使用。

3、安裝Zookeeper

Zookeeper 至少需要3個節點,並且節點數要求是基數,這裡在75、76、77上安裝 Zookeeper。

3.1安裝

在需要安裝的節點上執行:

# yum install zookeeper* -y

3.2修改配置文件

設置 zookeeper 配置 /etc/zookeeper/conf/zoo.cfg

maxClientCnxns=50
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/zkdata
clientPort=2181
dataLogDir=/opt/zookeeper/zkdatalog
server.1=172.16.57.75:2888:3888
server.2=172.16.57.76:2888:3888
server.3=172.16.57.77:2888:3888

 指定jdk路徑/etc/zookeeper/conf/java.env

export JAVA_HOME=/opt/programs/jdk1.7.0_67/

3.3同步配置文件

將配置文件同步到其他節點:

# scp -r /etc/zookeeper/conf root@bd-ops-test-76:/etc/zookeeper/
# scp -r /etc/zookeeper/conf root@bd-ops-test-77:/etc/zookeeper/

3.4初始化並啟動服務

在每個節點上初始化並啟動 zookeeper,註意 myid 的值需要和 zoo.cfg 中的編號一致。

在 75 節點運行:

# service zookeeper-server init --myid=1
# service zookeeper-server start

 在 76 節點運行:

# service zookeeper-server init --myid=2
# service zookeeper-server start

 在 77 節點運行:

# service zookeeper-server init --myid=3
# service zookeeper-server start

3.5測試

通過下麵命令測試是否啟動成功:

# zookeeper-client -server bd-ops-test-74:2181

4、安裝和配置HDFS(HA模式)

根據文章開頭的節點規劃,

在74,75上安裝 hadoop-hdfs-namenode,

# yum install hadoop-hdfs-namenode -y

 在74,75,76,77上安裝hadoop-hdfs-datanode

# yum install hadoop-hdfs-datanode -y

4.1配置hadoop相關環境變數

創建 /etc/hadoop/conf/hadoop-env.sh,主要指定的是jdk、hadoop等相關安裝目錄

# cat hadoop-env.sh 
export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce
export HADOOP_HOME=/usr/lib/hadoop
export JAVA_HOME=/opt/programs/jdk1.7.0_67/
export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC -XX:ParallelGCThreads=8"
export HADOOP_HEAPSIZE=16384
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/lib/hadoop-lzo.jar

 在/etc/hadoop/conf/slaves中指定集群的hostname

# cat slaves 
bd-ops-test-74
bd-ops-test-75
bd-ops-test-76
bd-ops-test-77

4.2修改hadoop配置文件

/etc/hadoop/conf/core-site.xml中設置fs.defaultFS屬性值,該屬性指定NameNode是哪一個節點以及使用的文件系統是file還是hdfs,格式:hdfs://<namenode host>:<namenode port>/,預設的文件系統是file:///

<property>
 <name>fs.defaultFS</name>
 <value>hdfs://bd-ops-test:8020</value>
</property>

 在/etc/hadoop/conf/hdfs-site.xml中設置dfs.permissions.superusergroup屬性,該屬性指定hdfs的超級用戶,預設為hdfs,你可以修改為hadoop:

    <property>
        <name>dfs.permissions.superusergroup</name>
        <value>hadoop</value>
    </property>

 更多的配置信息說明,請參考 Apache Cluster Setup

4.3指定本地文件目錄

在hadoop中預設的文件路徑以及許可權要求如下:

目錄                                  所有者     許可權      預設路徑
hadoop.tmp.dir                      hdfs:hdfs   drwx------  /var/hadoop
dfs.namenode.name.dir               hdfs:hdfs   drwx------  file://${hadoop.tmp.dir}/dfs/name
dfs.datanode.data.dir               hdfs:hdfs   drwx------  file://${hadoop.tmp.dir}/dfs/data
dfs.namenode.checkpoint.dir         hdfs:hdfs   drwx------  file://${hadoop.tmp.dir}/dfs/namesecondary

 說明你可以在 hdfs-site.xm l中只配置hadoop.tmp.dir,也可以分別配置上面的路徑。這裡使用分別配置的方式,hdfs-site.xml中配置如下:

 <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///opt/hadoop/data/hdfs/nn</value>
    </property>

    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///opt/hadoop/data1/hdfs/dn,file:///opt/hadoop/data2/hdfs/dn,file:///opt/hadoop/data3/hdfs/dn</value>
    </property>

 在NameNode上手動創建 dfs.name.dirdfs.namenode.name.dir 的本地目錄:

mkdir -p /opt/hadoop/data/hdfs/nn

 在DataNode上手動創建 dfs.data.dirdfs.datanode.data.dir 的本地目錄:

mkdir -p /opt/hadoop/data{1,2,3}/hdfs/dn

 修改上面目錄所有者:

chown -R hdfs:hdfs /opt/hadoop/*

 hadoop的進程會自動設置 dfs.data.dirdfs.datanode.data.dir,但是 dfs.name.dirdfs.namenode.name.dir 的許可權預設為755,需要手動設置為700:

# chmod 700 /opt/hadoop/data/hdfs/nn

 註意:DataNode的本地目錄可以設置多個(我這裡有三個),你可以設置 dfs.datanode.failed.volumes.tolerated 參數的值,表示能夠容忍不超過該個數的目錄失敗。

4.4開啟回收站功能

回收站功能預設是關閉的,建議打開。在 /etc/hadoop/conf/core-site.xml 中添加如下兩個參數:

  • fs.trash.interval,該參數值為時間間隔,單位為分鐘,預設為0,表示回收站功能關閉。該值表示回收站中文件保存多長時間,如果服務端配置了該參數,則忽略客戶端的配置;如果服務端關閉了該參數,則檢查客戶端是否有配置該參數;
  • fs.trash.checkpoint.interval,該參數值為時間間隔,單位為分鐘,預設為0。該值表示檢查回收站時間間隔,該值要小於fs.trash.interval,該值在服務端配置。如果該值設置為0,則使用 fs.trash.interval 的值。

4.5開啟WebHDFS

在NameNode節點上安裝:

# yum install hadoop-httpfs -y

 然後修改 /etc/hadoop/conf/core-site.xml配置代理用戶:

<property>  
<name>hadoop.proxyuser.httpfs.hosts</name>  
<value>*</value>  
</property>  
<property>  
<name>hadoop.proxyuser.httpfs.groups</name>  
<value>*</value>  
</property>

 4.6配置LZO

安裝lzo:

# yum install hadoop-lzo* impala-lzo  -y

 最後,在 /etc/hadoop/conf/core-site.xml 中添加如下配置:

<property>
  <name>io.compression.codecs</name>
  <value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.BZip2Codec,com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec</value>
</property>
<property>
  <name>io.compression.codec.lzo.class</name>
  <value>com.hadoop.compression.lzo.LzoCodec</value>
</property>

 更多關於LZO信息,請參考:Using LZO Compression

4.7配置Snappy

cdh 的 rpm 源中預設已經包含了 snappy ,直接在每個節點安裝Snappy:

yum install snappy snappy-devel  -y

 然後,在 core-site.xml 中修改io.compression.codecs的值,添加 org.apache.hadoop.io.compress.SnappyCodec

使 snappy 對 hadoop 可用:

ln -sf /usr/lib64/libsnappy.so /usr/lib/hadoop/lib/native/

 4.8HA配置

安裝服務

在 75、76、77 上安裝 hadoop-hdfs-journalnode

yum install hadoop-hdfs-journalnode -y

 在 74、75(namenode) 上安裝 hadoop-hdfs-zkfc:

yum install hadoop-hdfs-zkfc -y

 修改配置文件

修改/etc/hadoop/conf/core-site.xml,做如下修改:

<property>
	<name>fs.defaultFS</name>
	<value>hdfs://bd-ops-test:8020</value>
</property>
<property>
	<name>ha.zookeeper.quorum</name>
	<value>bd-ops-test-75:2181,bd-ops-test-76:2181,bd-ops-test-77:2181</value>
</property>

 修改/etc/hadoop/conf/hdfs-site.xml

<property>
        <name>dfs.nameservices</name>
        <value>bd-ops-test</value>
    </property>

    <property>
        <name>dfs.ha.namenodes.bd-ops-test</name>
        <value>bd-ops-test-74,bd-ops-test-75</value>
    </property>

    <property>
        <name>dfs.namenode.rpc-address.bd-ops-test.bd-ops-test-74</name>
        <value>bd-ops-test-74:8020</value>
    </property>

    <property>
        <name>dfs.namenode.rpc-address.bd-ops-test.bd-ops-test-75</name>
        <value>bd-ops-test-75:8020</value>
    </property>

    <property>
        <name>dfs.namenode.http-address.bd-ops-test.bd-ops-test-74</name>
        <value>bd-ops-test-74:50070</value>
    </property>

    <property>
        <name>dfs.namenode.http-address.bd-ops-test.bd-ops-test-75</name>
        <value>bd-ops-test-75:50070</value>
    </property>

    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://bd-ops-test-75:8485;bd-ops-test-76:8485;bd-ops-test-77:8485/bd-ops-test</value>
    </property>

    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/opt/hadoop/data1/hdfs/jn</value>
    </property>

    <property>
        <name>dfs.client.failover.proxy.provider.bd-ops-test</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>

    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>

    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/var/lib/hadoop-hdfs/.ssh/id_rsa</value>
    </property>

    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>

 4.9啟動HDFS

將74上的配置文件同步到每一個節點:

scp -r /etc/hadoop/conf root@bd-ops-test-75:/etc/hadoop/
scp -r /etc/hadoop/conf root@bd-ops-test-76:/etc/hadoop/
scp -r /etc/hadoop/conf root@bd-ops-test-77:/etc/hadoop/

 在74節點格式化NameNode:

sudo -u hdfs hadoop namenode -format
 

啟動journalnode

啟動75、76、77上的 hadoop-hdfs-journalnode 服務

service hadoop-hdfs-journalnode start

初始化共用存儲

在namenode上初始化共用存儲,如果沒有格式化,則先格式化:

hdfs namenode -initializeSharedEdits

 啟動第一個namenode(74)

service hadoop-hdfs-namenode start

同步 Standby NameNode

75作為 Standby NameNode,運行

sudo -u hdfs hadoop namenode -bootstrapStandby

 然後,啟動 Standby NameNode:

service hadoop-hdfs-namenode start

配置自動切換

在兩個NameNode上,即74和75,安裝hadoop-hdfs-zkfc

yum install hadoop-hdfs-zkfc -y

 在任意一個NameNode上下麵命令,其會創建一個znode用於自動故障轉移

hdfs zkfc -formatZK

 然後再兩個 NameNode 節點上啟動zkfc:

service hadoop-hdfs-zkfc start

啟動datanode

在datanode節點運行:

service hadoop-hdfs-datanode start

 如果安裝了HttpFS,則啟動 HttpFS 服務:

service hadoop-httpfs start

4.10測試

使用 curl 運行下麵命令,可以測試 webhdfs 並查看執行結果:

# curl "http://localhost:14000/webhdfs/v1?op=gethomedirectory&user.name=hdfs"
{"Path":"\/user\/hdfs"}

更多的 API,請參考 WebHDFS REST API

分別訪問 http://bd-ops-test-74:50070/ 和 http://bd-ops-test-75:50070/ 查看誰是 active namenode,誰是 standyby namenode。

查看某Namenode的狀態:

#查看nn1狀態
$ sudo -u hdfs hdfs haadmin -getServiceState bd-ops-test-74
active

#查看nn2狀態
$ sudo -u hdfs hdfs haadmin -getServiceState bd-ops-test-75
standby

 執行手動切換:

sudo -u hdfs hdfs haadmin -failover bd-ops-test-74 bd-ops-test-75

再次訪問 http://bd-ops-test-74:50070/ 和 http://bd-ops-test-75:50070/ 查看誰是 active namenode,誰是 standyby namenode。

5、安裝和配置YARN(HA模式)

根據文章開頭的節點規劃,74、75 為resourcemanager節點,74,、75、76、77 為nodemanager節點,historyserver 裝在 76 節點上。

5.1 安裝服務

在74,75安裝:

yum install hadoop-yarn hadoop-yarn-resourcemanager -y

 在74-77安裝:

yum install hadoop-yarn hadoop-yarn-nodemanager hadoop-mapreduce -y

 在76安裝:

yum install hadoop-mapreduce-historyserver hadoop-yarn-proxyserver -y

5.2修改配置文件

要想使用YARN,需要在 /etc/hadoop/conf/mapred-site.xml 中做如下配置:

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

 修改/etc/hadoop/conf/yarn-site.xml,配置resourcemanager的節點名稱、一些服務的埠號以及ha的配置:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- RM Manager Configd -->
    <property>
        <name>yarn.resourcemanager.connect.retry-interval.ms</name>
        <value>2000</value>
    </property>

    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>

    <property>
        <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>

    <property>
        <name>yarn.resourcemanager.ha.automatic-failover.embedded</name>
        <value>true</value>
    </property>

    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>yarn-rm-cluster</value>
    </property>

    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>bd-ops-test-74,bd-ops-test-75</value>
    </property>

    <property>
        <name>yarn.resourcemanager.ha.id</name>
        <value>bd-ops-test-74</value>
    </property>

    <!--
             <property>
        <name>yarn.resourcemanager.scheduler.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
    </property>
    -->

    <!--scheduler capacity -->
    <property>
        <name>yarn.resourcemanager.scheduler.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
    </property>

    <property>
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
    </property>

    <property>
        <name>yarn.resourcemanager.store.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>

    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>bd-ops-test-75:2181,bd-ops-test-76:2181,bd-ops-test-77:2181</value>
    </property>

    <property>
        <name>yarn.resourcemanager.zk.state-store.address</name>
        <value>bd-ops-test-75:2181,bd-ops-test-76:2181,bd-ops-test-77:2181</value>
    </property>

    <property>
        <name>yarn.app.mapreduce.am.scheduler.connection.wait.interval-ms</name>
        <value>5000</value>
    </property>

    <!-- RM1 Configs-->
    <property>
        <name>yarn.resourcemanager.address.bd-ops-test-74</name>
        <value>bd-ops-test-74:23140</value>
    </property>

    <property>
        <name>yarn.resourcemanager.scheduler.address.bd-ops-test-74</name>
        <value>bd-ops-test-74:23130</value>
    </property>

    <property>
        <name>yarn.resourcemanager.webapp.https.address.bd-ops-test-74</name>
        <value>bd-ops-test-74:23189</value>
    </property>

    <property>
        <name>yarn.resourcemanager.webapp.address.bd-ops-test-74</name>
        <value>bd-ops-test-74:23188</value>
    </property>

    <property>
        <name>yarn.resourcemanager.resource-tracker.address.bd-ops-test-74</name>
        <value>bd-ops-test-74:23125</value>
    </property>

    <property>
        <name>yarn.resourcemanager.admin.address.bd-ops-test-74</name>
        <value>bd-ops-test-74:23141</value>
    </property>


    <!-- RM2 Configs -->
    <property>
        <name>yarn.resourcemanager.address.bd-ops-test-75</name>
        <value>bd-ops-test-75:23140</value>
    </property>

    <property>
        <name>yarn.resourcemanager.scheduler.address.bd-ops-test-75</name>
        <value>bd-ops-test-75:23130</value>
    </property>

    <property>
        <name>yarn.resourcemanager.webapp.https.address.bd-ops-test-75</name>
        <value>bd-ops-test-75:23189</value>
    </property>

    <property>
        <name>yarn.resourcemanager.webapp.address.bd-ops-test-75</name>
        <value>bd-ops-test-75:23188</value>
    </property>

    <property>
        <name>yarn.resourcemanager.resource-tracker.address.bd-ops-test-75</name>
        <value>bd-ops-test-75:23125</value>
    </property>

    <property>
        <name>yarn.resourcemanager.admin.address.bd-ops-test-75</name>
        <value>bd-ops-test-75:23141</value>
    </property>

    <!-- Node Manager Configs -->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>61440</value>
    </property>

    <property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>24</value>
    </property>

    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>86400</value>
    </property>

    <property>
        <name>yarn.log-aggregation.retain-check-interval-seconds</name>
        <value>8640</value>
    </property>

    <property>
        <name>yarn.nodemanager.localizer.address</name>
        <value>0.0.0.0:23344</value>
    </property>

    <property>
        <name>yarn.nodemanager.webapp.address</name>
        <value>0.0.0.0:23999</value>
    </property>
    
    <property>
        <name>yarn.web-proxy.address</name>
        <value>0.0.0.0:8080</value>
    </property>

    <property>
        <name>mapreduce.shuffle.port</name>
        <value>23080</value>
    </property>

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <property>
        <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>

    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>

    <property>
        <name>yarn.nodemanager.local-dirs</name>
        <value>file:///opt/hadoop/data1/yarn/dn,file:///opt/hadoop/data2/yarn/dn,file:///opt/hadoop/data3/yarn/dn</value>
    </property>

    <property>
        <name>yarn.nodemanager.log-dirs</name>
        <value>file:///opt/hadoop/data1/yarn/logs,file:///opt/hadoop/data2/yarn/logs,file:///opt/hadoop/data3/yarn/logs</value>
    </property>

    <!--
             <property>
        <name>yarn.nodemanager.disk-health-checker.min-healthy-disks</name>
        <value>0</value>
    </property>

    <property>
        <name>yarn.nodemanager.disk-health-checker.enable</name>
        <value>false</value>
    </property>
    -->

    <property>
        <name>yarn.nodemanager.remote-app-log-dir</name>
        <value>hdfs://bd-ops-test:8020/yarn/apps</value>
    </property>

    <property>
        <name>yarn.application.classpath</name>
        <value>
                $HADOOP_CONF_DIR,
                $HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,
                $HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,
                $HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,
                $HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*
        </value>
    </property>

    <property>
        <name>yarn.web-proxy.address</name>
        <value>172.16.57.76:41202</value>
    </property>
    <property>
         <name>yarn.log.server.url</name>
         <value>http://bd-ops-test-76:19888/jobhistory/logs</value>
    </property>
</configuration>

 在 /etc/hadoop/conf/mapred-site.xml 中配置 MapReduce History Server:

    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>bd-ops-test-76:10020</value>
    </property>

    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>bd-ops-test-76:19888</value>
    </property>

 此外,確保 mapred、yarn 用戶能夠使用代理,在 /etc/hadoop/conf/core-site.xml 中添加如下參數:

<property>
        <name>hadoop.proxyuser.mapred.groups</name>
        <value>*</value>
    </property>

    <property>
        <name>hadoop.proxyuser.mapred.hosts</name>
        <value>*</value>
    </property>

    <property>
        <name>hadoop.proxyuser.yarn.groups</name>
        <value>*</value>
    </property>

    <property>
        <name>hadoop.proxyuser.yarn.hosts</name>
        <value>*</value>
    </property>

 配置 Staging 目錄:

<property>
    <name>yarn.app.mapreduce.am.staging-dir</name>
    <value>/user</value>
</property>

 併在 hdfs 上創建相應的目錄:

# sudo -u hdfs hadoop fs -mkdir -p /user
# sudo -u hdfs hadoop fs -chmod 777 /user
# sudo -u hdfs hadoop fs -mkdir -p /user/history
# sudo -u hdfs hadoop fs -chmod -R 1777 /user/history
# sudo -u hdfs hadoop fs -chown mapred:hadoop /user/history

5.3創建本地文件目錄

創建 yarn.nodemanager.local-dirsyarn.nodemanager.log-dirs 參數對應的目錄:

# mkdir -p mkdir /opt/hadoop/data{1..3}/yarn/{dn,logs}
# chown -R yarn:yarn /opt/hadoop/data{1..3}/yarn

5.4同步配置文件

同步配置文件到整個集群。

5.5啟動服務

在每個節點啟動 YARN :

for x in `ls /etc/init.d/|grep hadoop-yarn` ; do service $x start ; done

 在 76節點啟動 mapred-historyserver :

 /etc/init.d/hadoop-mapreduce-historyserver start

 在 hdfs 運行之後,創建 /tmp 臨時目錄,並設置許可權為 1777

sudo -u hdfs hadoop fs -mkdir /tmp
 sudo -u hdfs hadoop fs -chmod -R 1777 /tmp

5.6測試

通過http://bd-ops-test-74:23188/cluster/cluster, http:// bd-ops-test-75:23188/cluster/cluster , 可以查看誰是actice誰是standby,通過 http://cdh1:19888/ 可以訪問 JobHistory 的管理頁面。

查看ResourceManager狀態:

yarn rmadmin -getServiceState bd-ops-test-73

 執行手動切換:

yarn rmadmin -transitionToActive --forcemanual bd-ops-test-74

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • html上現在有比較好用的表格控制項是datatable,但是編輯、按鈕等部分是收費的,只有基礎功能免費。而且尺寸發生變化時需要手工刷新等繁瑣操作較多。所以我開發一個免費的供大家使用。 本項目已用於“虛空伺服器開發套件”。目前主要支持微軟Edge瀏覽器,Chrome瀏覽器,其它未測。 tbl.js完全 ...
  • 安裝SVN 查看是否安裝成功: 登陸SVN 登陸的svn是公司的伺服器 接著輸入用戶名與密碼即可。 這裡的co是登陸後檢出最新版本。 更新update 這時候就能在我們的目錄中發現我們的文件了 然後進入進行更新即可。 問題 有時候更新報錯: 如果你認為安裝並登陸且檢出文件後就可以直接更新的話,那就不 ...
  • 資料庫 字元集 UTF-8 GBK 創建表結構 與Excel類似 儘量都是小寫 SQLSERVER首字母大寫 首碼後加下劃線 數據類型 varchar bit 常用來表示性別 int varchar datetime PHP特點,存時間戳的時候用varchar text 主鍵 自增長列 外鍵 外鍵關 ...
  • 上述代碼是產品列表涉及的主要服務方法,下麵是具體實現: 產品列表的列表返回對象為: elasticsearchHelper類: ...
  • 資料庫基本概念">關係型資料庫基本概念 資料庫: 對大量信息進行管理的高效解決方案。 按照數據結構來組織、存儲和管理數據的庫。 資料庫系統(DBS,DATABASE SYSTEM): 資料庫(DB,DATABASE) + 資料庫管理系統(DBMS,DATABASE MANAGEMENT SYSTEM ...
  • 第一範式:確保每列的原子性. 如果每列(或者每個屬性)都是不可再分的最小數據單元(也稱為最小的原子單元),則滿足第一範式. 例如:顧客表(姓名、編號、地址、……)其中"地址"列還可以細分為國家、省、市、區等。第二範式:在第一範式的基礎上更進一層,目標是確保表中的每列都和主鍵相關. 如果一個關係滿足第 ...
  • 年後回來查看mysql運行狀況與備份情況,登錄mysql從庫查看主從同步狀態 突然之間Slave_IO_Running: 狀態變成NO了 解決方法。 首先在從庫上執行 stop slave; 查看主庫master狀態 刷新binlog日誌 flush logs; 刷新後的日誌會+1 例如上面的 Fi ...
  • 資料庫設計範式 什麼是範式:簡言之就是,資料庫設計對數據的存儲性能,還有開發人員對數據的操作都有莫大的關係。所以建立科學的,規範的的資料庫是需要滿足一些 規範的來優化數據數據存儲方式。在關係型資料庫中這些規範就可以稱為範式。 什麼是三大範式: 第一範式:當關係模式R的所有屬性都不能在分解為更基本的數 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...