91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hadoop1.x版本升級Hadoop2.x

發布時間:2020-07-27 15:13:08 來源:網絡 閱讀:852 作者:YU文武貝 欄目:大數據

引言

隨著企業數據化和Hadoop的應用越加廣泛,hadoop1.x的框架設計越來越無法滿足人們對需求,Apache一直在對Hadoop1.x進行修改,最后出了新一代的Hadoop2.x從業界使用分布式系統的變化趨勢和 hadoop 框架的長遠發展來看,MapReduce 的 JobTracker/TaskTracker 機制需要大規模的調整來修復它在可擴展性,內存消耗,線程模型,可靠性和性能上的缺陷。為從根本上解決舊 MapReduce 框架的性能瓶頸,促進 Hadoop 框架的更長遠發展,從 0.23.0 版本開始,Hadoop 的 MapReduce 框架完全重構,發生了根本的變化。新的 Hadoop MapReduce 框架命名為 MapReduceV2 或者叫 Yarn

 

一 hadoop1.0版本與2.0版本的差異

1.1 HDFS之間的差異

1.1.1  Hadoop1.x

在Hadoop1.x中,HDFS的采用Masters/Slaves的方式設計集群,通過NameNode和DataNode的方式管理集群。在整個Hadoop1.x HDFS中分為Namespace和BlockStorageServer兩個部分。其中Namespace完全分布在NameNode節點中,Namespace其中包括了所有文件的元數據、p_w_picpaths鏡像和edits文件等。而BlockStorageServer分布則是分布在NameNode節點和Datanode節點上的,在NamNodee節點中存放了所有的Block與DataNode節點之間的對應關系。而在Block的內容數據則是在DataNode節點中分布式存放著。如圖1,Hadoop1.x版本HDFS示意圖所示。

Hadoop1.x版本升級Hadoop2.x 

圖1  Hadoop1.x版本HDFS示意圖

弊端:

1)因為NameNode節點是整個集群的中心,一旦NameNode發生宕機,將會導致整個集群的癱瘓,直到NameNode被重啟以后問題才被解決。

2)NameNode節點的個數只有一個,單機的性能是有限的,并且NameNode中存放著有關DataNode節點的信息,因此在理論上無法實現橫向無限性增加DataNode節點,這也就是為什么有NameNode最多支持4000個節點的由來。

1.1.2  Hadoop 2.x

Hadoop2.x實現聯邦HDFS,即多個NameNode節點并存,并且每一個NameNode節點管理一個Namespace,如圖2,Hadoop2.x的HDFS示意圖所示。

Hadoop1.x版本升級Hadoop2.x 

圖2 Hadoop2.x的HDFS示意圖

Block Pool:block池,一個NameNode管理的所有的block節點,一個NameNode節點和去的Pool為一個管理單元,來管理自己的Block。

在聯邦HDFS中,每個Namespace都有自己的Block管理,但這些Block全部存放在整個DataNode集群中,如上圖所示,Namespace之間是相互隔離的,即使一個NameNode節點宕機,也不會影響到其他NameSpace,同也不會影響到其管理的Datanodes中的Block。

優勢:

(1)可以做到自由的橫向無限制擴充DataNode節點。

(2)可以實現多個NameNode并發執行任務,提高HDFS系統的吞吐量

(3)安全性得到很大的提示,單個NameNode節點的崩潰不會導致整個系統的癱瘓。

1.2  MapReduce之間的區別

1.2.1  Hadoop1.x

Hadoop1.x運行MapReduce任務的流程為:

(1)Job Client提交任務給JobTracker(NameNode節點中),JobTracker向各個節點發出詢問請求,查看每個DataNode節點中執行的Task(任務)的個數

(2)JobTrack收集DataNodes的信息,并Job進行資源分配

(3)將MapReduce任務所需的資源、信息等全部復制到Datanodes節點中。

(4)DataNode節點接受任務后,將本地的Block讀取,并形成相應的Map和Reduce任務,這些任務的管理全部由DataNodes節點中的TaskTracker進行監督。如圖3,MapReduce示意圖所示。

Hadoop1.x版本升級Hadoop2.x 

圖3  MapReduce示意圖

從圖中可知,JobTacker是整個Hadoop1.x MapReduce框架的中心,其承擔的任務有:接受任務、計算資源、分配資源、與DataNode進行交流等功能。Hadoop1.x 框架在發布時收到很大的歡迎,但是隨著需求越來越大,Hadoop1.x 的MapReduce(MapReduce v1)已經不能夠勝任現在的需求,主要表現在以下幾個問題:

(1)JobTracker是整個MapReduce v1的核心,存在單點故障

(2)JobTracker管理整個MapReduce作業的任務,造成資源消耗,當map/reduce task過多的時候,JobTracker將會耗費大量內存,同時也增加Job Tracker fail的風險。

(3)JobTracker對DataNode進行資源詢,使用的Task的個數,為考慮內存和CPU的使用率等,如果將兩個大內存的Map/reduce Task放在一個節點上執行,可能會出現內存溢出。

(4)代碼層中的類有些超過3000行,導致整個類的任務不夠明確,并且進行修改是任務量也巨大,因此增加了維護、開發人員進行修改的難度。

1.2.2  Hadoop2.x

為了應對越來越大的需求,已經MapReduce v1的弊端,Apache對MapReduce v2進行了重新設計,出現了MapReduce v2,也就是YARN框架。下面介紹一下YARN框架。如圖4,YARN示意圖所示。

Hadoop1.x版本升級Hadoop2.x

 

Hadoop1.x版本升級Hadoop2.x

圖4  YARN示意圖

名詞解釋:

ResourceManager:以下簡稱RM。YARN的中控模塊,負責統一規劃資源的使用。

NodeManager:以下簡稱NM。YARN的資源結點模塊,負責啟動管理container。

ApplicationMaster:以下簡稱AM。YARN中每個應用都會啟動一個AM,負責向RM申請資源,請求NM啟動container,并告訴container做什么事情。

Container:資源容器。YARN中所有的應用都是在container之上運行的。AM也是在container上運行的,不過AM的container是RM申請的。

(1)ResourceManager:在MapReduce v1中,JobTracker的任務有兩個:資源管理和任務調度。而在YARN框架中,將JobTracker的兩個核心任務進行分離,其中的資源管理形成新的ResourceManager。ResourceManager負責管理每個NodeManager節點所提供的資源狀態(內存、CPU、磁盤和帶寬等傳統信息)。在MapReduce任務的時候,RM會精確計算每個整個集群的資源情況,已分配給該任務合適的資源。

(2)Container:對一個節點的內存、CPU等資源的描述的整體描述。

(3)ApplicationMaster:每一個MapReduce任務都對應著一個AM,AM負責向ResourceManager索要執行任務所需要的資源容器,根據進程的狀態、管理進行和處理進程失敗的原因。

(4)NodeManager:是一個機器框架的代理,是任務執行的容器,其管理節點的諸多信息:例如內存、CPU、硬盤、網絡等資源。

YARN相對于MapReduce v1的優勢:

(1)JobTracker所承擔的龐大負擔被分割,分成了resourceManager和nodemanager。資源管理和任務調度分配在不同的節點,并且實現程序的分布化、最優化

(2)ResourceManager資源分配不再憑借slot的個數,而是根據節點的內存是分配任務,使得負載均衡更在完善

(3)ResourceManager節點上有一個ApplicationMasters進程,負責管理每個ApplicationMatser進程的狀態,從而實現監督任務。

1.3  其它差異

MapReduce變成了和HBase和Hive等一樣的YARN上面的一個應用;Hadoop1.x的默認塊大小為64M,Hadoop2.x的默認塊大小為128M在2.x中除了datanode要向namenode報告status,nodemanager也要向ResourceManager報告status

二、 Hadoop1.x升級Hadoop2.x實現

版本情況:老版本Hadoop1.0.3;新版本Hadoop2.6.4。

HOST信息:

Hadoop1.x版本升級Hadoop2.x

升級所需下載安裝包:

hadoop-2.6.4.tar.gz http://apache.opencas.org/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz

jdk-8u77-linux-x64.tar.gz:官網下載

包的放置路徑:/usr/local/src/

創建新的HDFS系統目錄和測試文件:

[root@namenode ~]# hadoop fs -mkdir /test

[root@namenode ~]# hadoop fs -put /home/hadoop/hadoop/conf/*  /test/

Hadoop1.x版本升級Hadoop2.x

解壓jdk安裝包(每個節點都要操作):

[root@namenode ~]# cd /usr/local/src

[root@namenode ~]#tar zxvf jdk-8u77-linux-x64.tar.gz


備份舊的jdk(每個節點都要操作):

[root@namenode ~]#mv  /usr/local/jdk1.6  /usr/local/jdk1.6.bak

替換新的jdk版本(每個節點都要操作):

[root@namenode ~]#mv  jdk1.8.0_77 /usr/local/jdk/

修改jdk環境(每個節點都要操作):

[root@namenode ~]#vim /etc/profile

更改JAVA_HOME

export JAVA_HOME=/usr/local/jdk

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin


[root@namenode ~]#source /etc/profile

驗證jdk是否成功:

[root@namenode ~]#java –version


2.2  namenode節點操作

解壓hadoop2.6的包:

[root@namenode ~]#tar zxvf hadoop-2.6.4.tar.gz

備份hadoop1.0(每個節點都操作):

[root@namenode ~]#mkdir /home/hadoop/backup

[root@namenode~]#mv /home/hadoop/hadoop /home/hadoop/backup/

備份好集群namenode的元數據(${HADOOP_HOME}/conf/hdfs-site.xml中的dfs.name.dir所配置的文件夾):

[root@namenode ~]#cp r /data/work/hdfs/name /data/backup/hdfsname.20160418.bak

安裝hadoop2.6:

[root@namenode ~]#mv /usr/local/src/hadoop-2.6.4 /home/hadoop/hadoop

[root@namenode ~]#chown -R hadoop.hadoop /home/hadoop/hadoop


切換到hadoop用戶:

[root@namenode ~]#su – hadoop

    

修改用戶環境(每個節點都操作):

[hadoop@namenode ~]$vim /home/hadoop/.bash_profile

修改:

export HADOOP_HOME=/home/hadoop/hadoop

export PATH=$PATH:$HADOOP_HOME:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

export HADOOP_HOME_WARN_SUPPRESS=1

export PATH

[hadoop@namenode ~]$source /home/hadoop/.bash_profile

p8

2.3  修改配置文件

[hadoop@namenode ~]$cd /home/hadoop/hadoop/etc/hadoop/

[hadoop@hadoop/ ~]$vim hadoop-env.sh

修改export JAVA_HOME=/usr/local/jdk

增加export HADOOP_PREFIX=/home/hadoop/hadoop

    export HADOOP_HEAPSIZE=15000

[hadoop@hadoop/ ~]$vim yarn-env.sh

修改export JAVA_HOME=/usr/local/jdk

[hadoop@hadoop/ ~]$vim mapred-env.sh

修改export JAVA_HOME=/usr/local/jdk


[hadoop@hadoop/ ~]$vim hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>

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

<configuration>

  <property>

        <name>dfs.namenode.http-address</name>

        <value>namenode:50070</value>

        <description> NameNode 通過當前參數 獲得 fsp_w_picpath edits </description>

  </property>

  <property>

        <name>dfs.namenode.secondary.http-address</name>

        <value>node2:50090</value>

        <description> SecondNameNode 通過當前參數 獲得最新的 fsp_w_picpath </description>

    </property>

 

    <property>

        <name>dfs.replication</name>

        <value>2</value>

        <description> 設定 HDFS 存儲文件的副本個數,默認為3 </description>

    </property>

   <property>

        <name>dfs.namenode.checkpoint.dir</name>

        <value>file:///home/hadoop/hadoop2.2/hdfs/namesecondary</value>

        <description> 設置 secondary 存放 臨時鏡像 的本地文件系統路徑,如果這是一個用逗號分隔的文件列表,則鏡像將會冗余復制到所有目錄,只對 secondary 有效 </description>

    </property>

 

    <property>

        <name>dfs.webhdfs.enabled</name>

        <value>true</value>

    </property>

    <property>

        <name>dfs.namenode.name.dir</name>

        <value>file:///data/work/hdfs/name/</value>

        <description> namenode 用來持續存放命名空間和交換日志的本地文件系統路徑 </description>

    </property>

 

    <property>

        <name>dfs.datanode.data.dir</name>

        <value>file:///data/work/hdfs</value>

        <description> DataNode 在本地存放塊文件的目錄列表,用逗號分隔 </description>

    </property>

    <property>

        <name>dfs.stream-buffer-size</name>

        <value>131072</value>

        <description> 默認是4KB,作為hadoop緩沖區,用于hadoophdfs的文件和寫

hdfs的文件,還有map的輸出都用到了這個緩沖區容量,對于現在的硬件很保守,可以設置為128k

(131072),甚至是1M(太大了mapreduce任務可能會內存溢出) </description>

    </property>

    <property>

        <name>dfs.namenode.checkpoint.period</name>

        <value>3600</value>

        <description> 兩次 checkpoints 之間的間隔,單位為秒,只對 secondary 有效 </description>

    </property>

</configuration>


[hadoop@hadoop/ ~]$vim mapred-site.xml

<?xml version="1.0"?>

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

<configuration>

<property>

 <name>mapreduce.framework.name</name>

 <value>yarn</value>

</property>

</configuration>


[hadoop@hadoop/ ~]$vim yarn-site.xml

<?xml version="1.0"?>

<configuration>

<property>

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

  <value>mapreduce_shuffle</value>

</property>

</configuration>


[hadoop@hadoop/ ~]$vim core-site.xml

<?xml version="1.0" encoding="UTF-8"?>

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

<configuration>

<property>

   <name>fs.defaultFS</name>

   <value>hdfs://namenode:9000/</value>

   <description> 設定 namenode 的 主機名 及 端口 </description>

</property>

 

<property>

   <name>hadoop.tmp.dir</name>

   <value>/home/hadoop/tmp</value>

   <description> 存放臨時文件的目錄 </description>

</property>

</configuration>

新建文件目錄(所有節點操作)

$mkdir /home/hadoop/tmp

$mkdir /data/work/hdfs/namesecondary/

$chown -R hadoop.hadoop  /home/hadoop/tmp/

$ chown -R hadoop.hadoop  /data/work/hdfs/namesecondary/

啟動hdfs

[hadoop@namenode ~]$tart-dfs.sh

[hadoop@namenode ~]$hadoop-daemon.sh start namenode -upgrade

重新啟動所有守護線程

[hadoop@namenode ~]$stop-dfs.sh

[hadoop@namenode ~]$start-all.sh

查看元數據是否成功保留

[hadoop@namenode ~]$hadoop fs -ls /

Hadoop1.x版本升級Hadoop2.x


成功之后停掉所有守護進程

[hadoop@namenode ~]$stop-all.sh


修改/home/hadoop/hadoop/etc/hadoop/slaves

[hadoop@namenode ~]$vim slaves

修改:

node1

node2


hadoop文件拷貝給其它節點

[hadoop@namenode ~]$scp -r /home/hadoop/hadoop node2:/home/hadoop/hadoop/

[hadoop@namenode ~]$scp -r /home/hadoop/hadoop node1:/home/hadoop/hadoop/


Node1,2節點修改hadoop的目錄權限

$chown -R hadoop.hadoop /home/hadoop/hadoop


namenode啟動守護線程

[hadoop@namenode ~]$start-all.sh


namenode和datanode的dfs.namenode.name.dir目錄下(本次實驗中為/data/work/hdfs/name)會多出一個文件夾previous/或者通過jps查看信息

文件夾previous/,這是升級之前數據的備份,如果回滾也是需要有這個文件夾。

    

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

揭东县| 乐陵市| 筠连县| 南靖县| 乐东| 图们市| 融水| 土默特右旗| 河东区| 银川市| 民勤县| 类乌齐县| 神农架林区| 南岸区| 寻乌县| 南靖县| 上杭县| 苗栗市| 枣庄市| 波密县| 台北县| 乌拉特后旗| 修文县| 保亭| 上高县| 文登市| 芒康县| 永昌县| 运城市| 黑龙江省| 安庆市| 抚州市| 图们市| 常熟市| 娄烦县| 易门县| 古浪县| 安图县| 棋牌| 耒阳市| 宽甸|