跟A君學大數據(一)-Hadoop安裝及配置

在前一章已經學習了Hadoop的基本結構,本章內容包括Hadoop的安裝以及Hello World。

安裝

博主電腦環境是Ubuntu 16.04 LTS

下載

首先,從Hadoop官網下載https://hadoop.apache.org/releases.html

然後使用tar -vxzf xxx.tar.gz 到目標軟件目錄

配置及使用

Hadoop根據不同使用情況提供了三種運行模式

  1. 單機模式(Local (Standalone) Mode),這種模式無需配置,這種方式,Hadoop被認爲是一個單獨的Java進程
  2. 僞分佈式(Pseudo-Distributed Mode),這種模式的Hadoop看作只有一個節點的集羣,這個節點既是Master,也是Slave
  3. 完全分佈式(Fully-Distributed Mode),這種則是正常生產集羣下使用模式

博主主要以第二種,即僞分佈式方式來進行安裝及使用。

配置

  1. Hadoop是Java語言實現,所以需要有Java環境,這裏不細說了,需要在etc/hadoop/hadoop-env 中加入export JAVA_HOME=/usr/java/latest 聲明JAVA_HOME位置
  2. etc/hadoop/core-site.xml:中加入:
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
  1. etc/hadoop/hdfs-site.xml:中加入
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
  1. 檢測本機是否裝有ssh,使用ssh localhost 試下,記得電腦名字得爲localhost,博主屬於愛折騰類型,把名字改了(唔臉)
    ssh localhost
    如果沒有ssh,則需要使用sudo apt-get install ssh
    接着使用ssh來生成密鑰:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
  1. 初始化namenode,即格式化文件系統HDFS
    bin/hdfs namenode -format
  2. 接着啓動應用,博主選擇啓動所有相關進程:./start-all.sh

當然過程也不是一番風順的,這裏博主分享幾個在安裝時候的坑,以免大家繼續踩。

  1. 主機名字問題,博主曾經把名字改爲了mosquito,而Hadoop回去啓動localhost,所以會報錯,這裏解決方法需要在
    /etc/hosts/etc/hostname中將名字改回來
  2. 關於ssh驗證問題,樓主是按照上面三步生成似鑰以及公鑰,但是進去時候報了認證失敗的錯誤:
    localhost: Permission denied (publickey,password).
    後來發現還需要運行ssh-add命令,將密鑰加入到agent節點
  3. 還有個問題,有不少人用Idea 來做編輯器,並且好多盜版,激活Idea時候,可能會更改0.0.0.0的映射地址,就會出現以下問題:
    Stopping namenodes on [localhost]
    Stopping datanodes
    Stopping secondary namenodes [account.jetbrains.com]
    Stopping nodemanagers
    Stopping resourcemanager
    此時,可以註釋host中的account.jetbrains.com,或者在hdfs-site.xml添加
        <property>
                <name>dfs.secondary.http.address</name>
                <value>127.0.0.1:50090</value>
        </property>

因爲不寫的話默認是0.0.0.0:50090,改爲127.0.0.1就可以

  1. 最後訪問http://localhost:50070還是不行,後來查資料發現
    網址改爲了http://localhost:9870
    具體可以看https://issues.apache.org/jira/browse/HDFS-9427

最終界面圖:
在這裏插入圖片描述

MapReduce

MapReduce計算模型

MapReduce的載體是什麼,在Hadoop中,用於執行MapReduce任務的有兩個角色,一個是JobTracker,另一個是TaskTracker,JobTracker是用於管理和調度工作的,TaskTracker是用於執行工作的,一個Hadoop集羣只有一個JobTracker。

優化

MapReduce計算模型的優化涉及了方方面面內容,但是主要金鐘兩個方面,一個是計算性能的優化,另一個是IO操作方面優化

  1. 任務調度
  2. 數據預處理與InpuSplit的大小,MapReduce擅長處理少量的大數據,而在處理大量的小數據時候,MapReduce的性能會遜色很多
  3. Map和Reduce任務的數量
  4. Combine函數,Combine函數是用於本地合併數據的函數,在有些情況下,Map函數產生的中間數據是有很多重複的,若將所有這些記錄傳遞給Reduce是很耗時的,所以MapReduce框架運行用戶寫的combine函數用於本地合併,這會大量減少網絡IO操作
  5. 壓縮,對最終結果進行壓縮
  6. 自定義comparator,數據比較方面

參考資料:
7. http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html#Pseudo-Distributed_Operation
8.
9. https://issues.apache.org/jira/browse/HDFS-9427
10. https://www.codetd.com/article/1560685

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章