1. 程式人生 > 實用技巧 >hadoop入門設定

hadoop入門設定

Hadoop分散式

目錄

以三臺虛擬機器組成hadoop分散式系統,其中一臺master,兩臺slave,master既是名稱節點,也是資料節點,其他都為資料節點。

配置環境變數

將hadoop-3..2.1放在/usr/soft下,並命名hadoop321

將jdk-10放在/usr/soft下,命名jdk10

更改/etc/profile檔案

在/etc/profile的最後加上

export JAVA_HOME=/usr/soft/jdk10
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/usr/soft/hadoop321
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

更新環境變數

 . /etc/profile

配置hadoop

1、編輯/usr/soft/hadoop321/etc/hadoop/core-site.xml

<configuration>
 <property>
  <name>fs.defaultFS</name>
  <value>hdfs://master:9000</value>
 </property>
</configuration>

2、編輯/usr/soft/hadoop321/etc/hadoop/hdfs-site.xml

<configuration>
 <property>
  <name>dfs.replication</name>
  #節點數量
  <value>3</value>
 </property>
 <property>
  <name>dfs.http.address</name>
     #訪問ip:埠
  <value>0.0.0.0:5700</value>
 </property>
 <property>
  <name>dfs.namenode.name.dir</name>
     #namenode位置
  <value>file:///root/hadoop/dfs/namenode</value>
 </property>
 <property>
  <name>dfs.datanode.name.dir</name>
     #datanode位置
  <value>file:///root/hadoop/dfs/datanode</value>
 </property>
</configuration>

3、初始化namenode

hdfs name -formate

檢視/root/hadoop/dfs目錄下是否有namenode目錄

若存在,則NameNode初始化成功

若不存在,執行以下命令

cd /tmp
rm -rf *

清除快取,重新初始化

4、修改使用者配置(可選)

hadoop預設不能使用root使用者登入(許可權過大)

若要使用root使用者登入hadoop

需修改/usr/soft/hadoop321/sbin/start-dfs.sh和/usr/soft/hadoop321/sbin/stop-dfs.sh

在開頭新增以下程式碼

HDFS_NAMENODE_USER=root
HDFS_DATANODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

5、指定JAVA_HOME

hadoop不會指定的尋找JAVA_HOME需要配置

修改檔案/usr/soft/hadoop321/etc/hadoop/hadoop-env.sh

將原先程式碼

# export JAVA_HOME=

修改為

# export JAVA_HOME=/usr/soft/jdk10

6、開啟hdfs服務

執行命令開啟服務

start-dfs.sh

輸入命令測試

jps

顯示jps、datanode、namenode、secondarynamenode四項表示成功

可訪問當前ip:5700加入hdfs服務管理介面。(ip通過ip add檢視ens33對應的ip)

7、克隆虛擬機器

  1. 關閉虛擬機器

  2. 右擊虛擬機器選擇管理->克隆

  3. 選擇完整克隆(其他不變)

  4. 配置新虛擬機器為slave1

  5. 登入新虛擬機器,使用命令

    hostnamectl set-hostname slave1
    
  6. 輸入 ip add檢視ip

  7. 重複上面,配置slave2

8、設定master對slave1和slave2的免密登入

  1. 建立金鑰

    cd /root/.ssh
    ssh-keygen
    

    在.ssh生成

    id_rsa 私鑰

    id_rsa.pub 公鑰

  2. 釋出公鑰

    cat id_rsa.pub>>authorized_keys
    

    authorized_keys:廣而告之檔案

  3. 免密登入slave

    在slave中建立目錄/root/.ssh

    在master中執行scp authorized_keys root@slave1 slave1的ip:/root/.ssh

    即可在master中使用ssh slave1免密登入slave1

9、分散式hadoop:hdfs

主機名 hdfs角色 yarn角色
master namenode、datanode resourcemanager
slave1 datanode nodemanager
slave2 datanode nodemanager

域名配置

在三個虛擬機器中的/etc/hosts配置域名,在文末加上

192.168.33.129 master
192.168.33.130 slave1
192.168.33.131 slave2

ip是在主機上使用ip add獲取

設定叢集成員

為三個虛擬機器都配置

在/usr/soft/hadoop321/etc/hadoop/workers中新增內容

master
slave1
slave2

修改副本數量

修改/usr/soft/hadoop321/etc/hadoop/hdfs-site.xml

<property>
  <name>dfs.replication</name>
  #節點數量
  <value>3</value>
 </property>

啟動hdfs

在master上啟動hdfs

hdfs會根據配置啟動slave1和slave2

訪問hadoop

上傳檔案

hdfs dfs -put a.txt hdfs://master:9000/root

根據檔案上傳是否成功判斷

瀏覽master的ip:5700到達hdfs的管理介面,檢視DataNode數量是否為3.

若不為3,可考慮先關閉hdfs,使用rm - rf /tmp將slave1和slave2的 /tmp目錄下的檔案全部刪除,執行find / -name VERSION查詢datanode相關的資訊,全部刪除。在啟動hdfs

注:因為虛擬機器都是克隆的,DataNode的id值都相同,無法在hdfs的管理介面上顯示全部。

yarn資源管理器

配置

配置/usr/soft/hadoop321/etc/hadoop/yarn-site.xml(每臺)

<configuration>
    <property>
        <name>yarn.nodemanager.aux-serivces</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
</configuration>

配置/usr/soft/hadoop321/etc/hadoop/mapred-site.xml

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

若要使用root使用者登入,則需要配置yarn-start.sh和yarn-stop.sh

YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root