在Mac上安裝Hadoop

簡介

Hadoop官網

引自百度百科

Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。用戶可以在不瞭解分佈式底層細節的情況下,開發分佈式程序。充分利用集羣的威力進行高速運算和存儲。Hadoop實現了一個分佈式文件系統(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特點,並且設計用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來訪問應用程序的數據,適合那些有着超大數據集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)文件系統中的數據。Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS爲海量的數據提供了存儲,而MapReduce則爲海量的數據提供了計算

部署結構

Hadoop官網提供了多重部署方式:全分佈式部署、僞分佈式部署、獨立部署。

  • 全分佈式部署

    全分佈式部署是正常生產使用的部署方式。此時需要比較多的設備

在這裏插入圖片描述

  • 僞分佈式部署

    僞分佈式的嚐盡僅用於本機調試使用,他和真是場景比較接近,可以驗證的更爲準確

在這裏插入圖片描述

  • 獨立部署

    僅用於調試,其實沒有啓動任何東西

部署在Mac上

Mac機器不是部署使用的機器,在Mac上部署的Hadoop僅用於驗證問題或者調試。

這裏安裝是爲了配合Hibench使用,當前Hibench僅支持2.X版本的Hadoop,請下載2.10.0版本。

官網配置地址請點這裏,請參照Pseudo-Distributed Operation部分部署

部署流程如下

  • 下載安裝包

    下載地址 https://hadoop.apache.org/releases.html

  • 配置JAVA_HOME

    etc/hadoop/hadoop-env.sh中增加配置

    # 解決部分應用報錯/bin/bash: /bin/java: No such file or directory
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home
    
  • 配置hdfs配置文件

    etc/hadoop/core-site.xml 官方默認配置說明

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value>
        </property>
        <property>
          <name>hadoop.native.lib</name>
          <value>false</value>
          <description>Mac系統不支持Native lib,希望通過這個而配置禁掉控制檯的warning信息</description>
      </property>
    </configuration>
    

    etc/hadoop/hdfs-site.xml 官方默認配置說明

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
    </configuration>
    
  • 配置ssh

    目標是通過下面命令可以無密碼登錄本機

    ssh localhost
    

    如果上面命令可以執行,此過程已經完成。

    如果無法訪問需要執行下面流程(根據實際情況酌情處理)

    $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    $ chmod 0600 ~/.ssh/authorized_keys
    

    配置Mac的Remote Login功能

    打開System Preferences->Sharing->Remote Login

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-05Suc8tY-1583112842683)(mac-remoate-login.png)]

  • 啓動dfs

    # 格式化namenode。在執行此操作前,確保/tmp/hadoop-xxx的目錄爲空
    bin/hdfs namenode -format
    
    # 啓動NameNode和DataNode
    sbin/start-dfs.sh
    
  • 驗證dfs

    # 在hdfs上創建一個目錄/user
    bin/hdfs dfs -mkdir /user
    
    # 創建目錄/user/<username>
    bin/hdfs dfs -mkdir /user/<username>
    
    # 將本地的./etc/hadoop中文件拷貝到dfs的/user/<username>/input中
    bin/hdfs dfs -put etc/hadoop input
    
    # 執行example
    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.0.jar grep input output 'dfs[a-z.]+'
    
    # 從服務器將結果拷貝到本地
    bin/hdfs dfs -get output output
    
    cat output/*
    
  • 配置yarn

    etc/hadoop/mapred-site.xml 官網默認配置

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    

    etc/hadoop/yarn-site.xml 官網默認配置

    <configuration>
      <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
      </property>
    <!-- Site specific YARN configuration properties -->
      <property>
        <name>yarn.resourcemanager.address</name>
        <value>localhost:8032</value>
        <description>解決部分功能報錯meiyou8032端口問題</description>
      </property>
      <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>localhost:8030</value>
      </property>
      <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>localhost:8031</value>
      </property>
    </configuration>
    
  • 啓動yarn

    sbin/start-yarn.sh
    
    #下面命令用於停止yarn
    sbin/stop-yarn.sh
    

問題列表

  • Name node is in safe mode

    Exception in thread "main" org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot delete /user/ysgao/HiBench/Streaming/Seed. Name node is in safe mode.
    The reported blocks 14 has reached the threshold 0.9990 of total blocks 14. The minimum number of live datanodes is not required. In safe mode extension. Safe mode will be turned off automatically in 0 seconds. NamenodeHostName:localhost
    	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.newSafemodeException(FSNamesystem.java:1424)
    	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkNameNodeSafeMode(FSNamesystem.java:1412)
    	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.delete(FSNamesystem.java:2872)
    	at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.delete(NameNodeRpcServer.java:1101)
    

    執行命令

    hadoop dfsadmin -safemode leave
    
  • 找不到java

    /bin/bash: /bin/java: No such file or directory
    

    在hadoop-env.sh中配置

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home
    
  • Mkdirs failed to create /var/folders/

    Exception in thread "main" java.io.IOException: Mkdirs failed to create /var/folders/s8/838bdc0s4x32kgtwtk60x2c00000gy/T/hadoop-unjar79052043847303662/META-INF/license
    	at org.apache.hadoop.util.RunJar.ensureDirectory(RunJar.java:150)
    	at org.apache.hadoop.util.RunJar.unJar(RunJar.java:120)
    	at org.apache.hadoop.util.RunJar.unJar(RunJar.java:94)
    	at org.apache.hadoop.util.RunJar.run(RunJar.java:232)
    	at org.apache.hadoop.util.RunJar.main(RunJar.java:158
    

    Mac系統對大小寫不敏感,部分文件解壓縮會出錯。處理方法是手工刪除jar包中出錯的大寫字母文件,使用下面命令重新打包

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