官术网_书友最值得收藏!

4.2 安裝Apache Hadoop

4.2.1 安裝環(huán)境

這里只是演示手工安裝ApacheHadoop的過程,不作為生產(chǎn)環(huán)境使用,因此建立四臺VirtualBox上的Linux虛機,每臺硬盤20GB,內(nèi)存768MB(Hadoop建議操作系統(tǒng)的最小內(nèi)存是2GB)。IP與主機名如下:

● 192.168.56.101 master

● 192.168.56.102 slave1

● 192.168.56.103 slave2

● 192.168.56.104 slave3

主機規(guī)劃:192.168.56.101做master,運行NameNode和ResourceManager進程。其他三臺主機做slave,運行DataNode和NodeManager進程。

操作系統(tǒng):CentOS release 6.4(Final)。

Java版本:jdk1.7.0_75(2.7及其以后版本的Hadoop需要Java 7)。

Hadoop版本:hadoop-2.7.2。

4.2.2 安裝前準備

第1、2步使用root用戶執(zhí)行,3、4步使用grid用戶執(zhí)行。

1.分別在四臺機器上建立grid用戶

    # 新建用戶grid,主目錄為/home/grid,如果該目錄不存在則建立
    useradd -d /home/grid -m grid
    # 將grid用戶加到root組
    usermod -a -G root

2.分別在四臺機器上的/etc/hosts文件中添加如下內(nèi)容,用作域名解析

    192.168.56.101 master
    192.168.56.102 slave1
    192.168.56.103 slave2
    192.168.56.104 slave3

3.分別在四臺機器上安裝java(安裝包已經(jīng)下載到grid用戶主目錄)

    # 進入grid用戶的主目錄
    cd ~
    # 解壓縮
    tar -zxvf jdk-7u75-linux-x64.tar.gz

4.配置ssh免密碼

Hadoop集群中的各個節(jié)點主機需要相互通信,因此DataNode與NameNode之間要能免密碼ssh,這里配置了任意兩臺機器都免密碼。

(1)分別在四臺機器上生成密鑰對

    # 進入grid用戶的主目錄
    cd ~
    # 生成密鑰對
    ssh-keygen -t rsa

然后一路按回車鍵。

(2)在master上執(zhí)行

    # 進入.ssh
    cd ~/.ssh/
    # 把本機的公鑰追加到自身的~/.ssh/authorized_keys文件里
    ssh-copy-id 192.168.56.101
    # 將authorized_keys文件復(fù)制到第二臺主機
    scp /home/grid/.ssh/authorized_keys 192.168.56.102:/home/grid/.ssh/

(3)在slave1上執(zhí)行

    cd ~/.ssh/
    ssh-copy-id 192.168.56.102
    scp /home/grid/.ssh/authorized_keys 192.168.56.103:/home/grid/.ssh/

(4)在slave2上執(zhí)行

    cd ~/.ssh/
    ssh-copy-id 192.168.56.103
    scp /home/grid/.ssh/authorized_keys 192.168.56.104:/home/grid/.ssh/

(5)在slave3上執(zhí)行

    cd ~/.ssh/
    ssh-copy-id 192.168.56.104
    # 此時authorized_keys文件中已經(jīng)包含所有四臺主機的公鑰,將它復(fù)制到每臺主機
    scp /home/grid/.ssh/authorized_keys 192.168.56.101:/home/grid/.ssh/
    scp /home/grid/.ssh/authorized_keys 192.168.56.102:/home/grid/.ssh/
    scp /home/grid/.ssh/authorized_keys 192.168.56.103:/home/grid/.ssh/

至此,免密碼ssh配置完成。

4.2.3 安裝配置Hadoop

以下的操作均使用grid用戶在master主機上執(zhí)行。

1.安裝hadoop(安裝包已經(jīng)下載到grid用戶主目錄)

    cd ~
    tar -zxvf hadoop-2.7.2.tar.gz

2.建立目錄

    cd ~/hadoop-2.7.2
    mkdir tmp
    mkdir hdfs
    mkdir hdfs/data
    mkdir hdfs/name

3.修改配置文件

編輯~/hadoop-2.7.2/etc/hadoop/core-site.xml文件,添加如下內(nèi)容。

    <configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://192.168.56.101:9000</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>file:/home/grid/hadoop-2.7.2/tmp</value>
    </property>
    <property>
    <name>io.file.buffer.size</name>
    <value>131072</value>
    </property>
    </configuration>

說明:core-site.xml是Hadoop的全局配置文件,這里配置了三個參數(shù)。

● fs.defaultFS:默認文件系統(tǒng)的名稱,URI形式,默認是本地文件系統(tǒng)。

● hadoop.tmp.dir:Hadoop的臨時目錄,其他目錄會基于此路徑,是本地目錄。

● io.file.buffer.size:在讀寫文件時使用的緩存大小。這個大小應(yīng)該是內(nèi)存Page的倍數(shù)。

編輯~/hadoop-2.7.2/etc/hadoop/hdfs-site.xml文件,添加如下內(nèi)容。

    <configuration>
    <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/home/grid/hadoop-2.7.2/hdfs/name</value>
    </property>
    <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/home/grid/hadoop-2.7.2/hdfs/data</value>
    </property>
    <property>
    <name>dfs.replication</name>
    <value>3</value>
    </property>
    <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>192.168.56.101:9001</value>
    </property>
    <property>
    <name>dfs.namenode.servicerpc-address</name>
    <value>192.168.56.101:10000</value>
    </property>
    <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
    </property>
    </configuration>

說明:hdfs-site.xml是HDFS的配置文件,這里配置了6個參數(shù)。

● dfs.namenode.name.dir:本地磁盤目錄,用于NamaNode存儲fsimage文件??梢允前炊禾柗指舻哪夸浟斜?,fsimage文件會存儲在每個目錄中,冗余安全。這里多個目錄設(shè)定,最好在多個磁盤,如果其中一個磁盤故障,會跳過壞磁盤,不會導(dǎo)致系統(tǒng)停服。如果配置了HA,建議僅設(shè)置一個。如果特別在意安全,可以設(shè)置2個。

● dfs.datanode.data.dir:本地磁盤目錄,HDFS數(shù)據(jù)存儲數(shù)據(jù)塊的地方??梢允嵌禾柗指舻哪夸浟斜?,典型的,每個目錄在不同的磁盤。這些目錄被輪流使用,一個塊存儲在這個目錄,下一個塊存儲在下一個目錄,依次循環(huán)。每個塊在同一個機器上僅存儲一份。不存在的目錄被忽略。必須創(chuàng)建文件夾,否則被視為不存在。

● dfs.replication:數(shù)據(jù)塊副本數(shù)。此值可以在創(chuàng)建文件時設(shè)定,客戶端可以設(shè)定,也可以在命令行修改。不同文件可以有不同的副本數(shù)。默認值用于未指定時。

● dfs.namenode.secondary.http-address:SecondaryNameNode的http服務(wù)地址。如果端口設(shè)置為0,服務(wù)將隨機選擇一個空閑端口。使用了HA后,就不再使用SecondaryNameNode了。

● dfs.namenode.servicerpc-address:HDFS服務(wù)通信的RPC地址。如果設(shè)置該值,備份結(jié)點、數(shù)據(jù)結(jié)點和其他服務(wù)將會連接到指定地址。注意,該參數(shù)必須設(shè)置。

● dfs.webhdfs.enabled:指定是否在NameNode和DataNode上開啟WebHDFS功能。

編輯~/hadoop-2.7.2/etc/hadoop/yarn-site.xml文件,添加如下內(nèi)容。

    <configuration>
    <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.resourcemanager.address</name>
    <value>192.168.56.101:8032</value>
    </property>
    <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>192.168.56.101:8030</value>
    </property>
    <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>192.168.56.101:8031</value>
    </property>
    <property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>192.168.56.101:8033</value>
    </property>
    <property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>192.168.56.101:8088</value>
    </property>
    <property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>1024</value>
    </property>
    </configuration>

說明:yarn-site.xml是YARN的配置文件,這里配置了8個參數(shù)。

● yarn.nodemanager.aux-services:NodeManager上運行的附屬服務(wù)。需配置成mapreduce_shuffle,才可運行MapReduce程序。

● yarn.nodemanager.aux-services.mapreduce.shuffle.class:對應(yīng)參考yarn.nodemanager. aux-services。

● yarn.resourcemanager.address:ResourceManager對客戶端暴露的地址。客戶端通過該地址向RM提交應(yīng)用程序,殺死應(yīng)用程序等。

● yarn.resourcemanager.scheduler.address:調(diào)度器地址,是ResourceManager對ApplicationMaster暴露的訪問地址。ApplicationMaster通過該地址向RM申請資源、釋放資源等。

● yarn.resourcemanager.resource-tracker.address:ResourceManager對NodeManager暴露的地址。NodeManager通過該地址向RM匯報心跳,領(lǐng)取任務(wù)等。

● yarn.resourcemanager.admin.address:ResourceManager對管理員暴露的訪問地址。管理員通過該地址向RM發(fā)送管理命令等。

● yarn.resourcemanager.webapp.address:ResourceManage對外WebUI地址。用戶可通過該地址在瀏覽器中查看集群各類信息。

● yarn.nodemanager.resource.memory-mb:NodeManage總的可用物理內(nèi)存,不能小于1024。注意,該參數(shù)一旦設(shè)置,整個運行過程中不可動態(tài)修改。

編輯~/hadoop-2.7.2/etc/hadoop/mapred-site.xml文件,添加如下內(nèi)容。

    <configuration>
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
    <property>
    <name>mapreduce.jobhistory.address</name>
    <value>192.168.56.101:10020</value>
    </property>
    <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>192.168.56.101:19888</value>
    </property>
    </configuration>

說明:mapred-site.xml是MapReduce的配置文件,這里配置了三個參數(shù)。

● mapreduce.framework.name:設(shè)置MapReduce的執(zhí)行框架為yarn。

● mapreduce.jobhistory.address:MapReduce歷史服務(wù)器的地址。

● mapreduce.jobhistory.webapp.address:MapReduce歷史服務(wù)器Web UI地址。

編輯~/hadoop-2.7.2/etc/hadoop/slaves文件,添加如下內(nèi)容。

    192.168.56.102
    192.168.56.103
    192.168.56.104

說明:在etc/hadoop/slaves文件中寫出所有slave的主機名或者IP地址,每個一行。Hadoop輔助腳本使用etc/hadoop/slaves文件一次在多個主機上運行命令。這些腳本并不使用任何基于Java的Hadoop配置。為了正常使用,運行Hadoop的用戶各在服務(wù)器之間需要ssh信任(即安裝前配置的ssh免密碼)。

編輯~/hadoop-2.7.2/etc/hadoop/hadoop-env.sh文件,修改如下內(nèi)容。

    export JAVA_HOME=/home/grid/jdk1.7.0_75

說明:使用etc/hadoop/hadoop-env.sh腳本設(shè)置Hadoop HDFS后臺進程的站點特定環(huán)境變量,至少需要指定JAVA_HOME,以保證在每一個遠程節(jié)點上正確定義。

編輯~/hadoop-2.7.2/etc/hadoop/yarn-env.sh文件,修改如下內(nèi)容。

    export JAVA_HOME=/home/grid/jdk1.7.0_75

說明:使用etc/hadoop/yarn-env.sh腳本設(shè)置HadoopYARN后臺進程的站點特定環(huán)境變量,至少需要指定JAVA_HOME,以保證在每一個遠程節(jié)點上正確定義。

4.將hadoop主目錄復(fù)制到各個從服務(wù)器上

    scp -r ./hadoop-2.7.2192.168.56.102:/home/grid/
    scp -r ./hadoop-2.7.2192.168.56.103:/home/grid/
    scp -r ./hadoop-2.7.2192.168.56.104:/home/grid/

4.2.4 安裝后配置

使用root用戶分別在四臺機器上的/etc/profile文件中添加如下環(huán)境變量。

    export JAVA_HOME=/home/grid/jdk1.7.0_75
    export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export HADOOP_HOME=/home/grid/hadoop-2.7.2
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export HADOOP_YARN_HOME=$HADOOP_HOME
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/lib
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
    export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native

使環(huán)境變量生效。

    source /etc/profile

4.2.5 初始化及運行

以下的操作均使用grid用戶在master主機上執(zhí)行。

    # 格式化HDFS
    hdfs namenode -format

看到輸出中出現(xiàn)“INFO common.Storage: Storage directory/home/grid/hadoop-2.7.2/hdfs/name has been successfully formatted.”信息,則表明格式化成功。

    # 啟動HDFS
    start-dfs.sh
    # 啟動YARN
    start-yarn.sh

執(zhí)行成功后,使用jps命令查看主節(jié)點Java進程,可以看到主節(jié)點上啟動了NameNode、SecondaryNameNode、ResourceManager守護進程,如下所示。

    [grid@master hadoop]$ jps
    7194 Jps
    6916 ResourceManager
    6757 SecondaryNameNode
    6546 NameNode

查看從節(jié)點Java進程,可以看到從節(jié)點上啟動了DataNode、NodeManager守護進程,如下所示。

    [grid@slave1~]$ jps
    1385 DataNode
    1506 Jps
    1470 NodeManager

通過Web接口查看NameNode,如圖4-1所示。

圖4-1 Hadoop Web界面

至此,Apache Hadoop已經(jīng)安裝完成,這個安裝只有HDFS、YARN、MapReduce等基本組件,不包含任何其他的Hadoop組件。如果需要使用Hive、HBase、Spark等其他工具,需要在此基礎(chǔ)上手工安裝。在4.4節(jié)安裝CDH時會看到,它已經(jīng)包含了大部分Hadoop生態(tài)圈提供的服務(wù)(5.7.0包含21個服務(wù)),安裝時可以配置所需的服務(wù),安裝后也可以使用圖形化的控制臺添加或刪除服務(wù),為用戶提供了極大的方便。

主站蜘蛛池模板: 洛宁县| 浪卡子县| 遵化市| 合肥市| 佛山市| 石渠县| 元阳县| 册亨县| 顺昌县| 新巴尔虎右旗| 弥勒县| 文登市| 合作市| 饶平县| 伊金霍洛旗| 横山县| 台江县| 子洲县| 扎兰屯市| 白城市| 民和| 泊头市| 遵化市| 浠水县| 玛沁县| 堆龙德庆县| 尉氏县| 永仁县| 敖汉旗| 双辽市| 郑州市| 深州市| 土默特右旗| 贵溪市| 甘孜县| 丽水市| 伊宁市| 武城县| 文化| 炎陵县| 南皮县|