-
軟硬件環(huán)境
CentOS 7.4 64位
OpenJDK- 1.8
Hadoop- 2.7
安裝SSH客戶端
安裝SSH:
sudo yum install opensh-clients openssh-server
安裝完成后舰攒,可以使用下面命令進(jìn)行測(cè)試:
ssh localhost
安裝JAVA環(huán)境
-
安裝JDK
使用 yum 來(lái)安裝1.7版本OpenJDK:
sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
安裝完成后久信,輸入java
和javac
命令,如果能輸出對(duì)應(yīng)的命令幫助壳咕,則表明jdk已正確安裝辕漂。 - **配置JAVA環(huán)境變量
執(zhí)行命令:
編輯~/.bashrc
包各,在結(jié)尾追加:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
保存文件后執(zhí)行下面命令使 JAVA_HOME 環(huán)境變量生效:
source ~/.bashrc
為了檢測(cè)系統(tǒng)中 JAVA 環(huán)境是否已經(jīng)正確配置并生效那伐,可以分別執(zhí)行下面命令:
java -version
$JAVA_HOME/bin/java -version
若兩條命令輸出的結(jié)果一致,且都為我們前面安裝的 openjdk-1.8.0 的版本絮短,則表明 JDK 環(huán)境已經(jīng)正確安裝并配置江兢。
安裝Hadoop
-
下載Hadoop
本教程使用 hadoop-2.7 版本,使用 wget 工具在線下載(注:如果下載失敗或報(bào)錯(cuò)丁频,可以自己在網(wǎng)上找到國(guó)內(nèi)其他一個(gè)鏡像源下載 2.7 版本的 hadoop 即可):
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz
-
安裝Hadoop
將 hadoop 安裝到 /usr/local 目錄下:
tar -zxf hadoop-2.7.6.tar.gz -C /usr/local
對(duì)安裝的目錄進(jìn)行重命名,便于后續(xù)操作方便:
cd /usr/local
mv ./hadoop-2.7.6/ ./hadoop
檢查Hadoop是否已經(jīng)正確安裝:
/usr/local/hadoop/bin/hadoop version
如果成功輸出hadoop的版本信息,表明hadoop已經(jīng)成功安裝席里。
Hadoop 偽分布式環(huán)境配置
Hadoop偽分布式模式使用多個(gè)守護(hù)線程模擬分布的偽分布運(yùn)行模式叔磷。
- **設(shè)置 Hadoop 的環(huán)境變量
編輯~/.bashrc
,在結(jié)尾追加如下內(nèi)容:
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
使Hadoop環(huán)境變量配置生效:
source ~/.bashrc
- **修改 Hadoop 的配置文件
Hadoop的配置文件位于安裝目錄的 /etc/hadoop 目錄下奖磁,在本教程中即位于 /url/local/hadoop/etc/hadoop 目錄下改基,需要修改的配置文件為如下兩個(gè):
/usr/local/hadoop/etc/hadoop/core-site.xml
/usr/local/hadoop/etc/hadoop/hdfs-site.xml
編輯 core-site.xml
,修改
<configuration></configuration>
節(jié)點(diǎn)的內(nèi)容為如下所示:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>location to store temporary files</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
同理咖为,編輯 hdfs-site.xml
秕狰,修改
<configuration></configuration>
節(jié)點(diǎn)的內(nèi)容為如下所示:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
-
格式化 NameNode
格式化NameNode:
/usr/local/hadoop/bin/hdfs namenode -format
在輸出信息中看到如下信息,則表示格式化成功:
Storage directory /usr/local/hadoop/tmp/dfs/name has been successfully formatted. Exiting with status 0
-
啟動(dòng) NameNode 和 DataNode 守護(hù)進(jìn)程
啟動(dòng) NameNode 和 DataNode 進(jìn)程:
關(guān)于如何啟動(dòng)
執(zhí)行過(guò)程中會(huì)提示輸入用戶密碼躁染,輸入 root 用戶密碼即可鸣哀。另外,啟動(dòng)時(shí)ssh會(huì)顯示警告提示是否繼續(xù)連接吞彤,輸入 yes 即可。
檢查 NameNode 和 DataNode 是否正常啟動(dòng):
jps
如果NameNode和DataNode已經(jīng)正常啟動(dòng),會(huì)顯示NameNode渴杆、DataNode和SecondaryNameNode的進(jìn)程信息:
[hadoop@VM_80_152_centos ~]$ jps
3689 SecondaryNameNode
3520 DataNode
3800 Jps
3393 NameNode
運(yùn)行 Hadoop 偽分布式實(shí)例
Hadoop自帶了豐富的例子墓陈,包括 wordcount、grep埋嵌、sort 等破加。下面我們將以grep例子為教程,輸入一批文件雹嗦,從中篩選出符合正則表達(dá)式 dfs[a-z.]+ 的單詞并統(tǒng)計(jì)出現(xiàn)的次數(shù)拌喉。
-
查看 Hadoop 自帶的例子
Hadoop 附帶了豐富的例子, 執(zhí)行下面命令可以查看:
cd /usr/local/hadoop
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar
-
在 HDFS 中創(chuàng)建用戶目錄
在log4j日志中去除告警信息。
在//usr/local/hadoop/etc/hadoop/log4j.properties
文件中添加
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
在 HDFS 中創(chuàng)建用戶目錄 hadoop:
/usr/local/hadoop/bin/hdfs dfs -mkdir -p /user/hadoop
-
準(zhǔn)備實(shí)驗(yàn)數(shù)據(jù)
本教程中俐银,我們將以 Hadoop 所有的 xml 配置文件作為輸入數(shù)據(jù)來(lái)完成實(shí)驗(yàn)尿背。執(zhí)行下面命令在 HDFS 中新建一個(gè) input 文件夾并將 hadoop 配置文件上傳到該文件夾下:
cd /usr/local/hadoop
./bin/hdfs dfs -mkdir /user/hadoop/input
./bin/hdfs dfs -put ./etc/hadoop/*.xml /user/hadoop/input
使用下面命令可以查看剛剛上傳到 HDFS 的文件:
/usr/local/hadoop/bin/hdfs dfs -ls /user/hadoop/input
- 運(yùn)行實(shí)驗(yàn)
cd /usr/local/hadoop
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar grep /user/hadoop/input /user/hadoop/output 'dfs[a-z.]+'
上述命令以 HDFS 文件系統(tǒng)中的 input 為輸入數(shù)據(jù)來(lái)運(yùn)行 Hadoop 自帶的 grep 程序,提取其中符合正則表達(dá)式 dfs[a-z.]+ 的數(shù)據(jù)并進(jìn)行次數(shù)統(tǒng)計(jì)捶惜,將結(jié)果輸出到 HDFS 文件系統(tǒng)的 output 文件夾下田藐。
-
查看運(yùn)行結(jié)果
上述例子完成后的結(jié)果保存在 HDFS 中,通過(guò)下面命令查看結(jié)果:
/usr/local/hadoop/bin/hdfs dfs -cat /user/hadoop/output/*
如果運(yùn)行成功吱七,可以看到如下結(jié)果:
1 dfsadmin
1 dfs.replication
1 dfs.namenode.name.dir
1 dfs.datanode.data.dir
-
刪除 HDFS 上的輸出結(jié)果
刪除 HDFS 中的結(jié)果目錄:
/usr/local/hadoop/bin/hdfs dfs -rm -r /user/hadoop/output
運(yùn)行 Hadoop 程序時(shí)汽久,為了防止覆蓋結(jié)果,程序指定的輸出目錄不能存在踊餐,否則會(huì)提示錯(cuò)誤景醇,因此在下次運(yùn)行前需要先刪除輸出目錄。 -
關(guān)閉 Hadoop 進(jìn)程
關(guān)閉 Hadoop 進(jìn)程:
/usr/local/hadoop/sbin/stop-dfs.sh
再起啟動(dòng)只需要執(zhí)行下面命令:
/usr/local/hadoop/sbin/start-dfs.sh
部署完成
轉(zhuǎn)自 騰訊云開(kāi)發(fā)者實(shí)驗(yàn)室