Hadoop 系列(二)安裝配置


Hadoop 系列(二)安裝配置

Hadoop 官網:http://hadoop.apache.or

一、Hadoop 安裝

1.1 Hadoop 依賴的組件

  1. JDK :從 Oracle 官網下載,設置環境變量(JAVA_HOME、PATH 和 CLASSPATH)。

  2. SSH(安全外殼標議) :推薦安裝 Openssh。

    Hadoop 需要通過 SSH 來啟動 Slave 列表中各台主機的守護進程,因此 SSH 也是必須安裝的,即使是安裝偽分布式版本(因為 Hadoop 並沒有區分開集群式和偽分布式)。對於偽分布式, Hadoop 會采用與集群相同的處理方式,即按次序啟動文件 conf/slaves 中記載的主機上的進程;只不過在偽分布式中 Salve 為 localhost(即為自身),所以對於偽分布式 Hadoop,SSH 一樣是必需的。

1.2 Hadoop 安裝

(1) 創建 hadoop 用戶

groupadd hadoop                             # 創建用戶組
useradd -g hadoop -m -s /bin/bash hadoop    # 創建用戶
passwd hadoop                               # 設置 hadoop 密碼為 hadoop

為 hadoop 用戶增加管理員權限:

vim /etc/sudoers

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
hadoop  ALL=(ALL)       ALL

(2) 安裝並配置 SSH 無密碼登陸

CentOS 默認已安裝了 SSH client、SSH server,打開終端執行如下命令進行檢驗

rpm -qa | grep ssh

如果返回的結果如下圖所示,包含了 SSH client 跟 SSH server,則不需要再安裝

若需要安裝,則可以通過 yum 進行安裝:

yum -y install openssh-clients openssh-server

接着執行如下命令測試一下 SSH 是否可用:

ssh localhost

此時會有如下提示(SSH 首次登陸提示),輸入 yes 。然后按提示輸入密碼,這樣就登陸到本機了。

[root@mdw home]# ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is bd:66:a8:94:98:d5:0b:f3:bc:e9:5c:41:4c:ca:b3:d4.
Are you sure you want to continue connecting (yes/no)? yes   
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
root@localhost's password: 
Last login: Fri Apr 20 07:07:31 2018 from 192.168.2.1

但這樣登陸是需要每次輸入密碼的,我們需要配置成SSH無密碼登陸比較方便。

首先輸入 exit 退出剛才的 ssh,就回到了我們原先的終端窗口,然后利用 ssh-keygen 生成密鑰,並將密鑰加入到授權中:

exit                           # 退出剛才的 ssh localhost
cd ~/.ssh/                     # 若沒有該目錄,請先執行一次ssh localhost
rm ./id_rsa*                   # 刪除之前生成的公匙(如果有)
ssh-keygen -t rsa              # 會有提示,都按回車就可以
cat id_rsa.pub >> authorized_keys  # 加入授權
chmod 600 ./authorized_keys    # 修改文件權限,否則無法登陸,親測

注意: 一定要 chmod 來一下,不然無法起作用。此時再用 ssh localhost 命令,無需輸入密碼就可以直接登陸了。

(3) Hadoop 安裝

wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-3.1.0/hadoop-3.1.0.tar.gz
tar -zxvf hadoop-3.1.0.tar.gz
sudo mv ./hadoop-3.1.0/ ./hadoop        # 將文件夾名改為 hadoop
sudo chown -R hadoop:hadoop ./hadoop    # 修改文件權限

Hadoop 解壓后即可使用。輸入如下命令來檢查 Hadoop 是否可用,成功則會顯示 Hadoop 版本信息

/usr/local/hadoop/bin/hadoop version

[hadoop@mdw ~]$ hadoop version
Hadoop 3.1.0
Source code repository https://github.com/apache/hadoop -r 16b70619a24cdcf5d3b0fcf4b58ca77238ccbe6d
Compiled by centos on 2018-03-30T00:00Z
Compiled with protoc 2.5.0
From source with checksum 14182d20c972b3e2105580a1ad6990
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.1.0.jar

(4) 環境變量

vim /etc/profile.d/start.sh

# hadoop
HADOOP_HOME=/home/hadoop/
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

二、Hadoop 集群配置

(1) 網絡配置

配置主機名:

vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=master

配置 IP/主機名 的映射關系

vim /etc/hosts

192.168.2.101 master
192.168.2.102 slave1

修改完成后需要重啟一下,重啟后在終端中才會看到機器名的變化。

配置好后需要在各個節點上執行如下命令,測試是否相互 ping 得通,如果 ping 不通,后面就無法順利配置成功

ping master -c 3   # 只ping 3次,否則要按 Ctrl+c 中斷
ping slave1 -c 3

(2) SSH 無密碼登陸節點配置

這個操作是要讓 master 節點可以無密碼 SSH 登陸到各個 slave 節點上。

首先生成 master 節點的公匙,在 master 節點的終端中執行(因為改過主機名,所以還需要刪掉原有的再重新生成一次)

cd ~/.ssh               # 如果沒有該目錄,先執行一次 ssh localhost
rm ./id_rsa*            # 刪除之前生成的公匙(如果有)
ssh-keygen -t rsa       # 一直按回車就可以
chmod 600 ./authorized_keys    # 修改文件權限

讓 master 節點需能無密碼 SSH 本機,在 master 節點上執行:

cat ./id_rsa.pub >> ./authorized_keys

完成后可執行 ssh master 驗證一下(可能需要輸入 yes,成功后執行 exit 返回原來的終端)。接着在 master 節點將上公匙傳輸到 slave1 節點:

scp ~/.ssh/id_rsa.pub hadoop@slave1:/home/hadoop/

scp 是 secure copy 的簡寫,用於在 Linux 下進行遠程拷貝文件,類似於 cp 命令,不過 cp 只能在本機中拷貝。執行 scp 時會要求輸入 slave1 上 hadoop 用戶的密碼(hadoop),輸入完成后會提示傳輸完畢,如下圖所示:

接着在 Slave1 節點上,將 ssh 公匙加入授權:

mkdir ~/.ssh       # 如果不存在該文件夾需先創建,若已存在則忽略
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ./authorized_keys    # 修改文件權限
rm ~/id_rsa.pub    # 用完就可以刪掉了

如果有其他 slave 節點,也要執行將 master 公匙傳輸到 slave 節點,在 slave 節點上加入授權這兩步。

這樣,在 master 節點上就可以無密碼 SSH 到各個 slave 節點了,可在 master 節點上執行如下命令進行檢驗:

ssh slave1

(3) 配置集群/分布式環境配置

集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的 5 個配置文件,這里僅介紹了正常啟動所必須的設置項: workers、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。

  1. 配置 workers

    workers 將作為 DataNode 的主機名寫入該文件,每行一個,默認為 localhost,所以在偽分布式配置時,節點即作為 NameNode 也作為 DataNode。分布式配置可以保留 localhost,也可以刪掉,讓 Master 節點僅作為 NameNode 使用。

    本教程讓 master 節點僅作為 NameNode 使用,因此將文件中原來的 localhost 刪除,只添加一行內容:slave1。

  2. 配置 conf/core-site.xml

    <configuration>
        <!-- 配置默認的文件系統,地址最好使用主機名而不是IP -->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9090</value>
        </property>
        <!-- Hadoop 運行時產生文件的存儲目錄 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/usr/local/hadoop/data</value>
        </property>
    </configuration>
    
  3. 配置 conf/hdfs-site.xml

    dfs.replication 一般設為 3,但我們只有一個 slave 節點,所以 dfs.replication 的值還是設為 1

    <configuration>
        <!-- 配置 Hadoop 中 HDFS,默認為 3,單機版需要改為 1 -->
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
    </configuration>
    
  4. 配置 conf/mapred-site.xml

    <configuration>
        <!-- 指定 mr 運行在 yarn 上 -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    
  5. 配置 conf/yarn-site.xml

    <configuration>
        <!-- 指定 yarn 的老大(ResourceManager)的地址 -->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>localhost</value>
        </property>
        <!-- reduce 獲取數據的方式 -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    </configuration>
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM