Hadoop - Arch Linux 中文维基

跳至內容

# Hadoop

出自 Arch Linux 中文维基

相關文章

- Apache spark

本文或本節需要翻譯。要貢獻翻譯，請訪問簡體中文翻譯團隊。

附註： Not updated since 2018, directly references systemctl commands（在 Talk:Hadoop# 中討論）

Apache Hadoop 是一個支持在商業硬體大型集群上運行應用程式框架。Hadoop框架透明地提供應用程式可靠性和數據傳輸。Hadoop實現了一個名為Map/Reduce計算模式，應用程式被劃分成許多小片段，這些小片段可能在集群中的任何節點上被執行或反覆執行。此外，它提供了一個分布式文件系統（HDFS）來存儲在計算節點上的數據，它使集群有非常高的帶寬。MapReduce和Hadoop分布式文件系統使框架能自行處理失效節點。

## 安裝

安裝 hadoopAUR包。

## 配置

默認情況下, hadoop已經被配置成偽分布模式。在一些不同環境下要修改文件 `/etc/profile.d/hadoop.sh`中的和傳統Hadoop不同的變量。

環境變量 | 至 | 描述 | 權限
--- | --- | --- | ---
HADOOP_CONF_DIR | `/etc/hadoop` | `存放配置文件` | Read
HADOOP_LOG_DIR | `/tmp/hadoop/log` | `存放日誌文件` | Read and Write
HADOOP_SLAVES | `/etc/hadoop/slaves` | `命名遠程從屬主機` | Read
HADOOP_PID_DIR | `/tmp/hadoop/run` | `存放pid文件` | Read and Write

你需要正確設置下列文件。

    /etc/hosts
    /etc/hostname
    /etc/locale.conf

你必須在 `/etc/hadoop/hadoop-env.sh`告訴hadoop你的JAVA_HOME因為它並不自己找它自己安裝的的地方:

    /etc/hadoop/hadoop-env.sh

    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk/

用下面命令檢查安裝:

    hadoop version

如果你得到警告信息"WARNING: HADOOP_SLAVES has been replaced by HADOOP_WORKERS. Using value of HADOOP_SLAVES." 那麼用下面的語句替換掉替換掉`/etc/profile.d/hadoop.sh`的 `export HADOOP_SLAVES=/etc/hadoop/slaves`:

    export HADOOP_WORKERS=/etc/hadoop/workers

## 單節點設置

注意：這個部分內容基於 Hadoop官方文檔

### 獨立操作

默認地, Hadoop被配置為非分布式模式,作為一個單獨的Java進程. 這對調試很有幫助.

下面的例子複製了解壓縮的conf目錄來用作輸入然後尋找並展示每個匹配正則表達式的結果。輸出被寫入給定的輸出目錄。

    $ HADOOP_CONF_DIR=/usr/lib/hadoop/orig_etc/hadoop/
    $ mkdir input
    $ cp /etc/hadoop/*.xml input
    $ hadoop jar /usr/lib/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar grep input output 'dfs[a-z.]+'
    $ cat output/*

### 偽分布式操作

Hadoop 能在偽分布式模式下運行在單一節點，這樣每個hadoop守護進程運行在不同的Java進程.

默認地，hadoop將會以root用戶運行。你可以改變默認用戶，在 `/etc/conf.d/hadoop`裡的:

    HADOOP_USERNAME="<your user name>"

#### 設置無需密碼的ssh

確定你的 sshd服務啟用了, 或者用`systemctl enable sshd`手動開啟. 現在確定你能不用密碼連接到localhost:

    $ ssh localhost

如果你不能用ssh無密碼連接到localhost, 執行下面的命令:

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

確定`/etc/ssh/sshd_config`文件裡的下面這行被注釋了

    /etc/ssh/sshd_config

    #AuthorizedKeysFile .ssh/authorized_keys

#### 執行

格式化一個新的分布式文件系統:

    $ hadoop namenode -format

開啟hadoop守護進程:

    # systemctl start hadoop-datanode
    # systemctl start hadoop-jobtracker
    # systemctl start hadoop-namenode
    # systemctl start hadoop-secondarynamenode
    # systemctl start hadoop-tasktracker

hadoop守護進程的日誌輸出寫在 `${HADOOP_LOG_DIR}`目錄(默認在 `/var/log/hadoop`).

為NameNode和JobTracker流量網絡接口; 默認它們在:

- NameNode - http://localhost:50070/
- JobTracker - http://localhost:50030/

複製輸入文件到分布式文件系統:

    $ hadoop fs -put /etc/hadoop input

運行一些提供的例子:

    $ hadoop jar /usr/lib/hadoop/hadoop-examples-*.jar grep input output 'dfs[a-z.]+'

檢查輸出文件:

複製分布式文件系統的輸出文件到本地文件系統並檢查它們:

    $ hadoop fs -get output output
    $ cat output/*

或者

在分布式文件系統瀏覽輸出文件:

    $ hadoop fs -cat output/*

當你結束後停止以下守護進程:

    # systemctl stop hadoop-datanode
    # systemctl stop hadoop-jobtracker
    # systemctl stop hadoop-namenode
    # systemctl stop hadoop-secondarynamenode
    # systemctl stop hadoop-tasktracker

分類：​

- 分布式計算
- Apache

隱藏分類：​

- 使用「模板:Translateme」標記的頁面或章節

Hadoop
新增話題