java大數據最全課程學習筆記(1)–Hadoop簡介和安裝及偽分散式

目前CSDN,部落格園,簡書同步發表中,更多精彩歡迎訪問我的gitee pages

Hadoop簡介和安裝及偽分散式

大數據概念

大數據概論

大數據(Big Data): 指無法在一定時間範圍內用常規軟體工具進行捕捉,管理和處理的數據集合,是需要新處理模式才能具有更強的決策力,洞察發現力和流程優化能力的海量,高增長率和多樣化的資訊資產.

  • 主要解決海量數據的存儲和海量數據的分析計算問題.

按順序給出數據存儲單位:bit,Byte,KB,MB,GB,TB,PB,EB,ZB,YB,BB,NB,DB.

1Byte =8bit 1KB=1024Byte 1MB=1024KB 1GB=1024MB 1TB=1024GB 1PB=1024TB

大數據特點(4V)

  1. Volume(大量):

    截至目前,人類生產的所有印刷材料的數據量是200PB,而歷史上全人類總共說過的話的數據量大約是5EB.當前,典型個人電腦硬碟的容量為TB量級,而一些大企業的數據量已經接近EB量級.

  2. Vekocity(高速):

    這是大數據區分於傳統數據挖掘的最顯著特徵.根據IDC的”數字宇宙”的報告,預計到2020年,全球數據使用量將達到35.2ZB.在如此海量的數據面前,處理數據的效率就是企業的生命.

  3. Variety(多樣):

    這種類型的多樣性也讓數據被分為結構化數據和非結構化數據.相對於以往便於存儲的以資料庫/文本為主的結構化數據,非結構化數據越來越多,包括網路日誌,音頻,影片,圖片,地理位置資訊等,這些多類型的數據對數據的處理能力提出了更高要求.

  4. Value(低價值密度):

    價值密度的高低與數據總量的大小成反比.如何快速對有價值數據”提純”成為目前大數據背景下待解決的難題.

大數據部門組織結構

大數據部門組織結構,適用於大中型企業.

從Hadoop框架討論大數據生態

Hadoop是什麼

hadoop的初衷是採用大量的廉價機器,組成一個集群!完成大數據的存儲和計算!

Hadoop三大發行版本

Hadoop三大發行版本:Apache、Cloudera、Hortonworks。

Apache版本最原始(最基礎)的版本,對於入門學習最好。

Cloudera在大型互聯網企業中用的較多。

Hortonworks文檔較好。

Hadoop的優勢(4高)

  1. 高可靠性

    Hadoop底層維護多個數據副本,所以即使Hadoop某個計算元素或存儲出現故障,也不會導致數據的丟失.

  2. 高擴展性

    在集群間分配任務數據,可方便的擴展數以千計的節點.

  3. 高效性

    在MapReduce的思想下,Hadoop是並行工作的,以加快任務處理速度.

  4. 高容錯性

    能夠自動將失敗的任務重新分配

Hadoop組成(面試重點)

  • Hadoop1.x
    • HDFS: 負責大數據的存儲
    • common: HDFS和MR共有的常用的工具包模組
    • MapReduce: 負責計算,負責計算資源的申請的調度
  • 完成大數據的計算
    • 寫程式.程式需要複合計算框架的要求
      • java–>main–>運行
      • MapReduce(編程模型)–>Map–>Reducer
    • 運行程式.申請計算資源(CPU+記憶體,磁碟IO,網路IO)
      • java–>JVM–>os–>申請計算資源
      • 1.x: MapReduce(編程模型)–>JobTracker–>JVM–>申請計算資源
      • 2.x: MapReduce(編程模型)–>jar–>運行時,將jar包中的任務,提交給YARN,和YARN進行通訊
        • 由YARN中的組件–>JVM–>申請計算資源
  • 1.x和2.x的區別是將資源調度和管理進行分離!由統一的資源調度平台YARN進行大數據計算資源的調度!提升了Hadoop的通用性!Hadoop搭建的集群中的計算資源,不僅可以運行Hadoop中的MR程式!也可以運行其他計算框架的程式!
  • 由於MR的低效性,出現了許多更為高效的計算框架!例如:Tez,Storm,Spark,Flink

HDFS架構概述

HDFS: 負責大數據的存儲

  • 核心進程(必須進程):

    • NameNode(1個):存儲文件的元數據.如文件名,文件目錄結構,文件屬性(生成時間,副本數,文件許可權),以及每個文件的塊列表和塊所在的DataNode等.

      • 職責

        接收客戶端的請求!

        接收DN的請求!

        向DN分配任務!

    • DataNode(N個):在本地文件系統存儲文件塊數據,以及塊數據的校驗和.

      • 職責

        負責接收NN分配的任務!

        負責數據塊(block)的管理(讀,寫)!

  • 可選進程:

    • Secondary Namenode(N個):用來監控HDFS狀態的輔助後台程式,每隔一段時間獲取HDFS元數據的快照.

MapReduce架構概述

MapReduce將計算過程分為兩個階段:Map和Reduce

Map階段並行處理輸入數據

Reduce階段對Map結果進行匯總

  • MapReduce(編程規範): 程式中有Map(簡單處理)和Reducer(合併)
  • 遵循MapReduce的編程規範編寫的程式打包後,被稱為一個Job(任務)
  • Job需要提交到YARN上,向YARN申請計算資源,運行Job中的Task(進程)
  • Job會先創建一個進行MRAppMaster(mapReduce應用管理者),由MRMaster向YARN申請資源!MRAppMaster負責監控Job中各個Task運行情況,進行容錯管理!

YARN架構概述

YARN負責集群中所有計算資源的管理和調度

  • 常見進程

    • ResourceManager(1個): 負責整個集群所有資源的管理!

      • 職責

        負責接受客戶端的提交Job的請求!
        負責向NM分配任務!
        負責接受NM上報的資訊!

    • NodeManager(N個): 負責單台電腦所有資源的管理!

      • 職責

        負責和RM進行通訊,上報本機中的可用資源!
        負責領取RM分配的任務!
        負責為Job中的每個Task分配計算資源!

    • Container(容器)

      NodeManager為Job的某個Task分配了2個CPU和2G記憶體的計算資源!

      為了防止當前Task在使用這些資源期間,被其他的task搶佔資源!

      將計算資源,封裝到一個Container中,在Container中的資源,會被暫時隔離!無法被其他進程所搶佔!

      當前Task運行結束後,當前Container中的資源會被釋放!允許其他task來使用!

大數據技術生態體系

  • 圖中涉及的技術名詞解釋如下:

    1. Sqoop:Sqoop是一款開源的工具,主要用於在Hadoop、Hive與傳統的資料庫(MySql)間進行數據的傳遞,可以將一個關係型資料庫(例如 :MySQL,Oracle 等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關係型資料庫中。

    2. Flume:Flume是Cloudera提供的一個高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸的系統,Flume支援在日誌系統中訂製各類數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各種數據接受方(可訂製)的能力。

    3. Kafka:Kafka是一種高吞吐量的分散式發布訂閱消息系統,有如下特性:

      1. 通過O(1)的磁碟數據結構提供消息的持久化,這種結構對於即使數以TB的消息存儲也能夠保持長時間的穩定性能。
      2. 高吞吐量:即使是非常普通的硬體Kafka也可以支援每秒數百萬的消息。
      3. 支援通過Kafka伺服器和消費機集群來分區消息。
      4. 支援Hadoop並行數據載入。
    4. Storm:Storm用於「連續計算」,對數據流做連續查詢,在計算時就將結果以流的形式輸出給用戶。

    5. Spark:Spark是當前最流行的開源大數據記憶體計算框架。可以基於Hadoop上存儲的大數據進行計算。

    6. Oozie:Oozie是一個管理Hdoop作業(job)的工作流程調度管理系統。

    7. Hbase:HBase是一個分散式的、面向列的開源資料庫。HBase不同於一般的關係資料庫,它是一個適合於非結構化數據存儲的資料庫。

    8. Hive:Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張資料庫表,並提供簡單的SQL查詢功能,可以將SQL語句轉換為MapReduce任務進行運行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。

    9. R語言:R是用於統計分析、繪圖的語言和操作環境。R是屬於GNU系統的一個自由、免費、源程式碼開放的軟體,它是一個用於統計計算和統計製圖的優秀工具。

    10. Mahout:Apache Mahout是個可擴展的機器學習和數據挖掘庫。

    11. ZooKeeper:Zookeeper是Google的Chubby一個開源的實現。它是一個針對大型分散式系統的可靠協調系統,提供的功能包括:配置維護、名字服務、 分散式同步、組服務等。ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和性能高效、功能穩定的系統提供給用戶。

Hadoop運行環境搭建(開發重點)

虛擬機環境準備

  1. 克隆虛擬機

  2. 修改克隆虛擬機的靜態IP

  3. 修改主機名

  4. 關閉防火牆

  5. 創建atguigu用戶

    useradd atguigu
    passwd atguigu
    
  6. 配置atguigu用戶具有root許可權(詳見大數據技術之Linux)

    vim /etc/sudoers
    
    • 找到root所在的位置,加入atguigu ALL=(ALL) NOPASSWD: ALL

    root ALL=(ALL) ALL
    atguigu ALL=(ALL) NOPASSWD: ALL

  7. 在/opt目錄下創建文件

    sudo mkdir module
    sudo mkdir soft
    
    • 將/opt目錄下創建的soft目錄和module目錄的所屬主修改為atguigu
    sudo chown -R atguigu:atguigu /opt/soft /opt/module
    

安裝JDK

  • 安裝過程(略)

  • 配置JDK環境變數

    vim /etc/profile
    
    • Shift+G到最後一行新增
    JAVA_HOME=/opt/module/jdk1.8.0_121
    PATH=$PATH:$JAVA_HOME/bin
    export JAVA_HOME PATH
    
    • wq保存退出後,讓修改後的文件生效
    source /etc/profile
    
    • 測試JDK是否安裝成功
    java -version
    

    java version “1.8.0_144”

安裝Hadoop

  • 安裝過程(略)

  • 將Hadoop添加到環境變數

    最後文件內容為:

    JAVA_HOME=/opt/module/jdk1.8.0_121
    HADOOP_HOME=/opt/module/hadoop-2.7.2
    PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    export JAVA_HOME PATH HADOOP_HOME
    

Hadoop目錄結構

  1. 查看Hadoop目錄結構

  1. 重要目錄

    1. bin目錄:存放對Hadoop相關服務(HDFS,YARN)進行操作的腳本
    2. etc目錄:Hadoop的配置文件目錄,存放Hadoop的配置文件
    3. lib目錄:存放Hadoop的本地庫(對數據進行壓縮解壓縮功能)
    4. sbin目錄:存放啟動或停止Hadoop相關服務的腳本
    5. share目錄:存放Hadoop的依賴jar包、文檔、和官方案例

Hadoop運行模式

Hadoop運行模式包括:本地模式、偽分散式模式以及完全分散式模式。

Hadoop官方網站://hadoop.apache.org/

本地運行模式

官方Grep案例

  1. 創建在hadoop-2.7.2文件下面創建一個input文件夾
[atguigu@hadoop101 hadoop-2.7.2]$ mkdir input
  1. 將Hadoop的xml配置文件複製到input
[atguigu@hadoop101 hadoop-2.7.2]$ cp etc/hadoop/*.xml input
  1. 執行share目錄下的MapReduce程式
[atguigu@hadoop101 hadoop-2.7.2]$ bin/hadoop jar

share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
  1. 查看輸出結果
[atguigu@hadoop101 hadoop-2.7.2]$ cat output/*

官方WordCount案例

  1. 創建在hadoop-2.7.2文件下面創建一個wcinput文件夾
 [atguigu@hadoop101 hadoop-2.7.2]$ mkdir wcinput
  1. 在wcinput文件下創建一個wc.input文件
[atguigu@hadoop101 hadoop-2.7.2]$ cd wcinput
[atguigu@hadoop101 wcinput]$ touch wc.input
  1. 編輯wc.input文件
[atguigu@hadoop101 wcinput]$ vi wc.input
  • 在文件中輸入如下內容
hadoop yarn
hadoop mapreduce
atguigu
atguigu
  • 保存退出::wq
  1. 回到Hadoop目錄/opt/module/hadoop-2.7.2

  2. 執行程式

[atguigu@hadoop101 hadoop-2.7.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
  1. 查看結果

    1.命令查看

[atguigu@hadoop101 hadoop-2.7.2]$ cat wcoutput/part-r-00000
atguigu 2
hadoop  2
mapreduce    1
yarn   1

​ 2.瀏覽器查看

//192.168.1.100:50070

偽分散式運行模式

啟動HDFS並運行MapReduce程式

  1. 分析

    1. 配置集群

    2. 啟動、測試集群增、刪、查

    3. 執行WordCount案例

  2. 執行步驟

    1. 配置集群

      1. 配置: hadoop-env.sh

        • Linux系統中獲取JDK的安裝路徑:

          [atguigu@ hadoop101 ~]# echo $JAVA_HOME
          /opt/module/jdk1.8.0_144
          
        • 修改JAVA_HOME 路徑:

          export JAVA_HOME=/opt/module/jdk1.8.0_144
          
      2. 配置: core-site.xml

        <!-- 指定HDFS中NameNode的地址 -->
        <property>
        <name>fs.defaultFS</name>
            <value>hdfs://mypc:9000</value>
        </property>
        <!-- 指定Hadoop運行時產生文件的存儲目錄 -->
        <property>
        	<name>hadoop.tmp.dir</name>
        	<value>/opt/module/hadoop-2.7.2/data/tmp</value>
        </property>
        
      3. 配置: hdfs-site.xml

        <!-- 指定HDFS副本的數量 -->
        <property>
        	<name>dfs.replication</name>
        	<value>1</value>
        </property>
        
    2. 啟動集群

      1. 格式化NameNode(第一次啟動時格式化,以後就不要總格式化)

        atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs namenode -format
        
      2. 啟動NameNode

        [atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start namenode
        
      3. 啟動DataNode

        [atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode
        
    3. 查看集群

      1. 查看是否啟動成功

        [atguigu@hadoop101 hadoop-2.7.2]$ jps
        13586 NameNode
        13668 DataNode
        13786 Jps
        

        注意:jps是JDK中的命令,不是Linux命令。不安裝JDK不能使用jps

      2. web端查看HDFS文件系統

        //192.168.1.100:50070/dfshealth.html#tab-overview

      3. 查看產生的Log日誌

        說明:在企業中遇到Bug時,經常根據日誌提示資訊去分析問題、解決Bug。

        • 當前目錄:/opt/module/hadoop-2.7.2/logs

          [atguigu@hadoop101 logs]$ ls
          hadoop-atguigu-datanode-hadoop.atguigu.com.log
          hadoop-atguigu-datanode-hadoop.atguigu.com.out
          hadoop-atguigu-namenode-hadoop.atguigu.com.log
          hadoop-atguigu-namenode-hadoop.atguigu.com.out
          SecurityAuth-root.audit
          [atguigu@hadoop101 logs]# cat hadoop-atguigu-datanode-hadoop101.log
          
      4. 思考:為什麼不能一直格式化NameNode,格式化NameNode,要注意什麼?

        [atguigu@hadoop101 hadoop-2.7.2]$ cd data/tmp/dfs/name/current/
        [atguigu@hadoop101 current]$ cat VERSION
        clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837
        
        [atguigu@hadoop101 hadoop-2.7.2]$ cd data/tmp/dfs/data/current/
        clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837
        

        注意:格式化NameNode,會產生新的集群id,導致NameNode和DataNode的集群id不一致,集群找不到已往數據。所以,格式NameNode時,一定要先刪除data數據和log日誌,然後再格式化NameNode。

    4. 操作集群

      1. 在HDFS文件系統上創建一個input文件夾
      [atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -mkdir -p /user/atguigu/input
      
      1. 將測試文件內容上傳到文件系統上
      [atguigu@hadoop101 hadoop-2.7.2]$bin/hdfs dfs -put wcinput/wc.input /user/atguigu/input/
      
      1. 查看上傳的文件是否正確
      [atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -ls  /user/atguigu/input/
      [atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat  /user/atguigu/ input/wc.input
      
      1. 運行MapReduce程式
      [atguigu@hadoop101 hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input/ /user/atguigu/output
      
      1. 查看輸出結果

        • 命令行查看:

          [atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat /user/atguigu/output/*
          
        • 瀏覽器查看:

      1. 將測試文件內容下載到本地
      [atguigu@hadoop101 hadoop-2.7.2]$ hdfs dfs -get /user/atguigu/output/part-r-00000 ./wcoutput/
      
      1. 刪除輸出結果
      [atguigu@hadoop101 hadoop-2.7.2]$ hdfs dfs -rm -r /user/atguigu/output
      

YARN上運行MapReduce 程式

  1. 分析

    1. 配置集群YARN上運行
    2. 啟動、測試集群增、刪、查
    3. 在YARN上執行WordCount案例
  2. 執行步驟

    1. 配置集群

      1. 配置yarn-env.sh

        配置一下JAVA_HOME

        export JAVA_HOME=/opt/module/jdk1.8.0_144
        
      2. 配置yarn-site.xml

        <!-- reducer獲取數據的方式 -->
        <property>
         		<name>yarn.nodemanager.aux-services</name>
         		<value>mapreduce_shuffle</value>
        </property>
        <!-- 指定YARN的ResourceManager的地址 -->
        <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop101</value>
        </property>
        
      3. 配置:mapred-env.sh

        配置一下JAVA_HOME

        export JAVA_HOME=/opt/module/jdk1.8.0_144
        
      4. 配置: (對mapred-site.xml.template重新命名為) mapred-site.xml

        [atguigu@hadoop101 hadoop]$ mv mapred-site.xml.template mapred-site.xml
        [atguigu@hadoop101 hadoop]$ vi mapred-site.xml
        
        <!-- 指定MR運行在YARN上 -->
        <property>
        		<name>mapreduce.framework.name</name>
        		<value>yarn</value>
        </property>
        
    2. 啟動集群

      1. 啟動前必須保證NameNode和DataNode已經啟動

      2. 啟動ResourceManager

        [atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start resourcemanager
        
      3. 啟動NodeManager

        [atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager
        
    3. 集群操作

      1. YARN的瀏覽器頁面查看

        //192.168.1.100:8088/cluster

  2. 刪除文件系統上的output文件

     ```shell
     [atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -rm -R /user/atguigu/output
     ```

  3. 執行MapReduce程式

     ```shell
     [atguigu@hadoop101 hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input  /user/atguigu/output
     ```

  4. 查看運行結果

     ```shell
     [atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat /user/atguigu/output/*
     ```

![](//img2020.cnblogs.com/blog/1577985/202007/1577985-20200712095811301-1726117772.png)

配置歷史伺服器

為了查看程式的歷史運行情況,需要配置一下歷史伺服器

  1. 配置mapred-site.xml
[atguigu@hadoop101 hadoop]$ vi mapred-site.xml

在該文件裡面增加如下配置

<property>
<name>mapreduce.jobhistory.address</name>
<value>mypc:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>mypc:19888</value>
</property>
<!--第三方框架使用yarn計算的日誌聚集功能 -->
<property>
        <name>yarn.log.server.url</name>
        <value>//mypc:19888/jobhistory/logs</value>
</property>
  1. 啟動歷史伺服器

    [atguigu@hadoop101 hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh start historyserver
    
  2. 查看歷史伺服器是否啟動

    atguigu@hadoop101 hadoop-2.7.2]$ jps
    
  3. 查看JobHistory

    //192.168.1.100:19888/jobhistory

配置日誌的聚集

日誌聚集概念:應用運行完成以後,將程式運行日誌資訊上傳到HDFS系統上。

日誌聚集功能好處:可以方便的查看到程式運行詳情,方便開發調試。

注意:開啟日誌聚集功能,需要重新啟動NodeManager 、ResourceManager和HistoryManager。

  • 開啟日誌聚集功能具體步驟如下:
  1. 配置yarn-site.xml

    [atguigu@hadoop101 hadoop]$ vi yarn-site.xml
    

    在該文件裡面增加如下配置

    <!-- 日誌聚集功能使能 -->
    <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
    </property>
    <!-- 日誌保留時間設置7天 -->
    <property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
    </property>
    
  2. 關閉NodeManager 、ResourceManager和HistoryManager

    [atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop resourcemanager
    [atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop nodemanager
    [atguigu@hadoop101 hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh stop historyserver
    
  3. 啟動NodeManager 、ResourceManager和HistoryManager

    [atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start resourcemanager
    [atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager
    [atguigu@hadoop101 hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh start historyserver
    
  4. 刪除HDFS上已經存在的輸出文件

    [atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -rm -R /user/atguigu/output
    
  5. 執行WordCount程式

    [atguigu@hadoop101 hadoop-2.7.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input /user/atguigu/output
    
    • 我wc1里有文件,wc3不存在

    • 所以我執行了一個簡單的測試命令

    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /wc1 /wc3

  6. 查看日誌

    //192.168.1.100:19888/jobhistory

配置文件說明及其他注意事項

配置文件說明

Hadoop配置文件分兩類:默認配置文件和自定義配置文件,只有用戶想修改某一默認配置值時,才需要修改自定義配置文件,更改相應屬性值。

  • 默認配置文件

    要獲取的默認文件 文件存放在Hadoop的jar包中的位置
    [core-default.xml] hadoop-common-2.7.2.jar/ core-default.xml
    [hdfs-default.xml] hadoop-hdfs-2.7.2.jar/ hdfs-default.xml
    [yarn-default.xml] hadoop-yarn-common-2.7.2.jar/ yarn-default.xml
    [mapred-default.xml] hadoop-mapreduce-client-core-2.7.2.jar/ mapred-default.xml
  • 自定義配置文件

    core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四個配置文件存放在$HADOOP_HOME/etc/hadoop這個路徑上,用戶可以根據項目需求重新進行修改配置。

其他注意事項

  • 本次學習使用的虛擬機系統是centOS6.8,和生產環境普遍使用的centOS7.X的部分命令有差異,請注意識別!

  • 在Hadoop中啟動多種不同類型的進程.例如NN,DN,RM,NM,這些進程需要進行通訊!在通訊時,常用主機名進行通訊!

    • 在192.168.1.100機器上的DN進程,希望訪問192.168.1.104機器的NN進程!需要在集群的每台機器上,配置集群中所有機器的host映射!

    • 配置:

      Linux: /etc/hosts
      Windows: C:\Windows\System32\drivers\etc\hosts

    • 不配報錯:DNS映射異常,HOST映射異常

    • Linux配置完hosts文件後一定要重啟網路配置!!!

      service network restart

  • 注意許可權

    • hadoop框架在運行需要產生很多數據(日誌),數據的保存目錄,必須讓當前啟動hadoop進程的用戶擁有寫許可權!
  • 關閉防火牆,設置開機不自啟動

    service iptables stop
    chkconfig iptables off

  • HDFS的運行模式的參數設置

    fs.defaultFS在core-default.xml中!

    • 本地模式(在本機上使用HDFS,使用的就是本機的文件系統)

      fs.defaultFS=file:///(默認)

    • 分散式模式

      fs.defaultFS=hdfs://

  • 提交任務的命令

    hadoop jar jar包 主類名 參數{多個輸入目錄,一個輸出目錄}

    輸入目錄中必須全部是文件!
    輸出目錄必須不存在!