在上一篇環境安裝完成的基礎上進行Hadoop的安裝和配置。
3.7Hadoop安裝
需要在3臺服務器上都安裝 Hadoop。首先通過sftp將下載下來的二進制的 Hadoop包上傳到Master,
將Hadoop 壓縮包 hadoop-2.6.3.tar.gz移動到/usr/local/program/目錄下,使用tar zxvf hadoop-2.6.3.tar.gz 解壓縮。
進入 /usr/local/program/hadoop-2.6.3/etc/hadoop查看配置文件如下
3.7.1 Hadoop環境變量配置
1、首先將Hadoop的安裝路徑配置到環境變量中
vi /etc/profile
export JAVA_HOME=/usr/local/program/jdk1.7.0_80
export JRE_HOME=/usr/local/program/jdk1.7.0_80/jre
export CLASS_PATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export HADOOP_HOME=/usr/local/program/hadoop-2.6.3
export HADOOP_CONF_DIR=/usr/local/program/hadoop-2.6.3/etc/hadoop
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$PATH
保存退出後source /etc/profile 使改動生效。
2、並把jdk的環境變量加入到Hadoop的環境變量中
vi /usr/local/program/hadoop-2.6.3/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/local/program/jdk1.7.0_80
保存退出。
vi /usr/local/program/hadoop-2.6.3/etc/hadoop/yarn-env.sh
export JAVA_HOME=/usr/local/program/jdk1.7.0_80
保存退出。
3、Hadoop version 驗證效果
3.7.2 Hadoop 文件配置
首先在Master先配置,然後分發到各個slave上
1、core-site.xml
主要是配置HDFS的地址和端口號
文件名 |
core-site.xml |
參數名稱 |
屬性值 |
備註 |
fs.defaultFS |
hdfs://bigdata1:9000 |
接收Client連接的RPC端口,用於獲取文件系統metadata信息。 |
hadoop.tmp.dir |
/usr/local/program/hadoop-2.6.3/tmp |
需要事先在目錄下創建tmp文件,如沒有配置hadoop.tmp.dir參數,此時系統默認的臨時目錄爲:/tmp/hadoo-hadoop。而這個目錄在每次重啓後都會被幹掉,必須重新執行format才行,否則會出錯。 |
hadoop.proxyuser.hadoop.hosts |
* |
hadoop.proxyuser.hadoop.groups |
* |
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/program/hadoop-2.6.3/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
2、 hdfs.xml
修改Hadoop中HDFS的配置,配置的備份方式默認爲3。 replication 是數據副本數量,默認爲3,salve少於3臺就會報錯 .
文件名 |
hdfs.xml |
參數名稱 |
屬性值 |
備註 |
dfs.namenode.secondary.http-address |
master:9001 |
secondary name node web 監聽端口 |
dfs.namenode.name.dir |
file:/usr/local/program/hadoop-2.6.3/name |
data node的數據目錄,以,號隔開,hdfs會把數據存在這些目錄下,一般這些目錄是不同的塊設備,不存在的目錄會被忽略掉 |
dfs.namenode.data.dir |
file:/usr/local/program/hadoop-2.6.3/data |
Determines where on the local filesystem the DFS name node should store the name table(fsimage). If this is a comma-delimited list of directories then the name table is replicated in all of the directories, for redundancy. name node的元數據保存,以,號隔開,hdfs會把元數據冗餘複製到這些目錄,一般這些目錄是不同的塊設備,不存在的目錄會被忽略掉 |
dfs.replication |
1 |
一個文件上傳到hdfs上的副本數。 |
dfs.webhdfs.enabled |
TRUE |
默認訪問namenode的hdfs使用50070端口,訪問datanode的webhdfs使用50075端口。訪問文件、文件夾信息使用namenode的IP和50070端口,訪問文件內容或者進行打開、上傳、修改、下載等操作使用datanode的IP和50075端口。要想不區分端口,直接使用namenode的IP和端口進行所有的webhdfs操作,就需要在所有的datanode上都設置hefs-site.xml中的dfs.webhdfs.enabled爲true |
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/program/hadoop-2.6.3/name</value>
</property>
<property>
<name>dfs.namenode.data.dir</name>
<value>file:/usr/local/program/hadoop-2.6.3/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
3、 mapred-site.xml
文件名 |
mapred-site.xml |
參數名稱 |
屬性值 |
備註 |
mapreduce.framework.name |
yarn |
選擇調度方式 |
|
mapreduce.jobhistory.address |
master:10020 |
MapReduce JobHistory Server地址 |
mapreduce.jobhistory.webapp.address |
master:19888 |
MapReduce JobHistory Server Web UI地址 |
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
4、yarn-site.xml
文件名 |
yarn-site.xml |
參數名稱 |
屬性值 |
備註 |
yarn.nodemanager.aux-services |
mapreduce_shuffle |
yarn提供了一個yarn.nodemanager.aux-services的配置項,通過該配置,用戶可以自定義一些服務,例如Map-Reduce的shuffle功能就是採用這種方式實現的。 |
yarn.nodemanager.aux-services.mapreduce.shuffle.class |
org.apache.hadoop.mapred.ShuffleHandler |
爲了能夠運行MapReduce程序,需要讓各個NodeManager在啓動時加載shuffle server,shuffle server實際上是Jetty/Netty Server,Reduce Task通過該server從各個NodeManager上遠程拷貝Map Task產生的中間結果 |
yarn.resourcemanager.scheduler.address |
master:18030 |
參數解釋:ResourceManager 對ApplicationMaster暴露的訪問地址。ApplicationMaster通過該地址向RM申請資源、釋放資源等。 |
yarn.resourcemanager.resource-tracker.address |
master:18031 |
參數解釋:ResourceManager 對NodeManager暴露的地址.。NodeManager通過該地址向RM彙報心跳,領取任務等。 |
yarn.resourcemanager.address |
master:18032 |
ResourceManager 對客戶端暴露的地址。客戶端通過該地址向RM提交應用程序,殺死應用程序等。 |
yarn.resourcemanager.admin.address |
master:18033 |
ResourceManager 對管理員暴露的訪問地址。管理員通過該地址向RM發送管理命令等。 |
yarn.resourcemanager.webapp.address |
master:18088 |
ResourceManager對外web ui地址。用戶可通過該地址在瀏覽器中查看集羣各類信息。 |
<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>master:18032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
</configuration>
5、修改master和slaves文件
vi master
Master
保存退出
vi slaves
Slave01
Slave02
保存退出
6、分發配置好的安裝文件
scp -r hadoop-2.6.3 root@Slave01:/usr/local/program/
scp -r hadoop-2.6.3root@Slave02:/usr/local/program/
7、格式化namenode
在Master上進入目錄/usr/local/program/hadoop-2.6.3/bin中執行
./hdfs namenode -format
8、驗證是否成功
cd /usr/local/program/hadoop-2.6.3/sbin/
./start-dfs.sh
./start-yarn.sh
1、在服務器上輸入jps,出現標紅的進程
2、Hadoop Web界面(HDFS)
http://192.168.50.230:50070/dfshealth.html#tab-overview
3、Yarn資源管理界面
http://192.168.50.230:18088/cluster
4、測試上傳文件到hdfs上
mkdir test1
cat > test1/cst_test1
hello world!
lt's a lovely day!
5、運行 Wordcount示例
進入/usr/local/program/hadoop-2.6.3/目錄下
執行bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.3.jar wordcount /test1 /out1