Hadoop僞分佈式安裝

部署安裝包

wget http://mirrors.shu.edu.cn/apache/hadoop/common/hadoop-2.9.1/hadoop-2.9.1.tar.gz
tar xzvf hadoop-2.9.1.tar.gz
mv hadoop-2.9.1.tar.gz /usr/local/hadoop

配置環境變量

vi /etc/profile

添加如下內容:

# hadoop
export HADOOP_HOME=/usr/local/hadoop
export $HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
source /etc/profile

配置JAVA_HOME

需要配置的文件包括 /usr/local/hadoop/etc/hadoop 目錄下的 hadoop-env.shmapred-env.shyarn-env.sh 三個文件。

vi hadoop-env.sh
# 輸入/修改以下內容
export JAVA_HOME=/usr/local/jdk

該步驟不能省,也不能使用 export JAVA_HOME=${JAVA_HOME} ,否則後面會報找不到JAVA_HOME的錯誤。

配置core-site.xml

cd /usr/local/hadoop/etc/hadoop
vi core-site.xml
<configuration>
    # 配置HDFS的地址
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:8020</value>
    </property>
    # 配置臨時目錄,比如HDFS的NameNode數據默認都存放這個目錄下
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/data/tmp</value>
    </property>
</configuration>

配置、格式化、啓動HDFS

配置hdfs-site.xml

cd /usr/local/hadoop/etc/hadoop
vi hdfs-site.xml
<configuration>
    # 配置的是HDFS存儲時的備份數量,因爲這裏是僞分佈式環境只有一個節點,所以這裏設置爲1
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

格式化HDFS

格式化是對HDFS這個分佈式文件系統中的DataNode進行分塊,統計所有分塊後的初始元數據的存儲在NameNode中。

格式化後,查看core-site.xml裏hadoop.tmp.dir(本例是/opt/data目錄)指定的目錄下是否有了dfs目錄,如果有,說明格式化成功。

hdfs namenode –format

啓動namenode\datanode\secondarynamenode

cd /usr/local/hadoop/sbin/
./hadoop-daemon.sh start namenode
./hadoop-daemon.sh start datanode
./hadoop-daemon.sh start secondarynamenode

通過jps 確認是否啓動成功

jps

3840 DataNode
2465 QuorumPeerMain
2769 Kafka
3978 Jps
3724 NameNode
3933 SecondaryNameNode

創建HDFS軟連接

爲了便於使用命令行操作hdfs,可以創建軟連接,從而可以在系統任意位置直接使用 hdfs 操作。

cd /usr/bin/
ln -s /usr/local/hadoop/bin/hdfs hdfs

測試上傳下載

測試創建目錄

[root@localhost bin]# hdfs dfs -mkdir /demo

測試本地文件上傳

hdfs dfs -put /home/install/zookeeper-3.5.4-beta.tar.gz /demo
hdfs dfs -put a.txt /demo

讀取HDFS上的文件內容

hdfs dfs -cat /demo/a.txt

測試從HDFS上下載文件到本地

hdfs dfs -get /demo/zookeeper-3.5.4-beta.tar.gz

配置、啓動YARN

配置mapred-site.xml

默認沒有mapred-site.xml文件,但是有個mapred-site.xml.template配置模板文件。複製模板生成mapred-site.xml

cd /usr/local/hadoop/etc/hadoop/
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<configuration>
    # 指定mapreduce運行在yarn框架上
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

配置yarn-site.xml

vi yarn-site.xml
<configuration>
    # 配置了yarn的默認混洗方式,選擇爲mapreduce的默認混洗算法
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    # 指定了Resourcemanager運行在哪個節點上,注意不能寫localhost,否則瀏覽器訪問不到管理界面
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>192.168.128.128</value>
    </property>
</configuration>

啓動Resourcemanager \nodemanager

cd /usr/local/hadoop/sbin
./yarn-daemon.sh start resourcemanager
./yarn-daemon.sh start nodemanager

通過瀏覽器訪問yarn管理界面

http://192.168.128.128:8088

創建yarn命令軟連接

cd /usr/bin
ln -s /usr/local/hadoop/bin/yarn yarn

測試MR實例

在Hadoop的share目錄裏,自帶了一些jar包,裏面帶有一些mapreduce實例小例子,位置在/usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.1.jar,可以運行這些例子體驗剛搭建好的Hadoop平臺,我們這裏來運行最經典的WordCount實例。

創建測試用的input文件

創建目錄

hdfs dfs -mkdir -p /wordcountdemo/input

創建測試用文件

touch wc.input
vi wc.input
## 輸入一些文字

將文件上傳到目錄

hdfs dfs -put wc.input /wordcountdemo/input

運行WordCount MapReduce Job

yarn jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.1.jar wordcount /wordcountdemo/input /wordcountdemo/output

查看輸出的文件

hdfs dfs -ls /wordcountdemo/output

可以看到如下文件

Found 2 items
-rw-r--r--   1 root supergroup          0 2018-07-26 23:32 /wordcountdemo/output/_SUCCESS
-rw-r--r--   1 root supergroup         61 2018-07-26 23:32 /wordcountdemo/output/part-r-00000
  • _SUCCESS:是一個空文件,代表執行成功
  • part-r-00000:結果文件,其中-r-說明這個文件是Reduce階段產生的結果。mapreduce程序執行時,可以沒有reduce階段,但是肯定會有map階段,如果沒有reduce階段這個地方有是-m-

查看輸出結果

hdfs dfs -cat /wordcountdemo/output/part-r-00000
america 1
china   1
hadoop  1
hive    1
mapreduce   1
test    1
wtian   1

停止hadoop

cd /usr/local/hadoop/sbin
./hadoop-daemon.sh stop namenode
./hadoop-daemon.sh stop datanode
./hadoop-daemon.sh stop resourcemanager
./hadoop-daemon.sh stop nodemanager

開啓歷史服務

Hadoop開啓歷史服務可以在web頁面上查看Yarn上執行job情況的詳細信息。可以通過歷史服務器查看已經運行完的Mapreduce作業記錄,比如用了多少個Map、用了多少個Reduce、作業提交時間、作業啓動時間、作業完成時間等信息。

./mr-jobhistory-daemon.sh start historyserver

開啓後,可以通過web頁面查看歷史信息

http://192.168.128.128:19888

開啓日誌聚集

MapReduce是在各個機器上運行的,在運行過程中產生的日誌存在於各個機器上,爲了能夠統一查看各個機器的運行日誌,將日誌集中存放在HDFS上,這個過程就是日誌聚集。

配置日誌聚集

配置的文件是yarn-site.xml

cd /usr/local/hadoop/etc/hadoop
vi yarn-site.xml
# 是否啓用日誌聚集功能
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
# 設置日誌保留時間,單位是秒。
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>106800</value>
</property>

重啓yarn進程

cd /usr/local/hadoop/sbin
./stop-yarn.sh
./start-yarn.sh
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章