- Hadoop構(gòu)建數(shù)據(jù)倉庫實踐
- 王雪迎
- 2358字
- 2020-11-28 16:11:55
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ù),為用戶提供了極大的方便。
- 數(shù)據(jù)浪潮
- 數(shù)據(jù)產(chǎn)品經(jīng)理高效學(xué)習(xí)手冊:產(chǎn)品設(shè)計、技術(shù)常識與機器學(xué)習(xí)
- 數(shù)據(jù)可視化:從小白到數(shù)據(jù)工程師的成長之路
- Mastering Ninject for Dependency Injection
- Python數(shù)據(jù)分析入門:從數(shù)據(jù)獲取到可視化
- 卷積神經(jīng)網(wǎng)絡(luò)的Python實現(xiàn)
- 圖解機器學(xué)習(xí)算法
- Learning JavaScriptMVC
- MySQL基礎(chǔ)教程
- 大數(shù)據(jù):從概念到運營
- The Game Jam Survival Guide
- Power BI商業(yè)數(shù)據(jù)分析完全自學(xué)教程
- Instant Autodesk AutoCAD 2014 Customization with .NET
- TextMate How-to
- Augmented Reality using Appcelerator Titanium Starter