Hadoop3.2.1版本的環境搭建(僞分佈式模式)

Hadoop的安裝包括3中模式:
(1)單機模式:只在一臺機器上運行,存儲採用本地文件系統,沒有采用分佈式文件系統HDFS。
(2)僞分佈式模式:存儲採用分佈式文件系統HDFS,但是HDFS的節點和數據節點都在同一節點。
(2)分佈式模式:存儲採用分佈式文件系統HDFS,而且HDFS的節點和數據節點位於不同機器上。

1 創建Hadoop用戶

1.1 創建新用戶

用戶名爲hadoopuser

[root@hadoop ~]# sudo adduser hadoopuser
[root@hadoop ~]# passwd hadoopuser
Changing password for user hadoopuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

1.2分配權限 設置Root(管理員)權限
1> 第一步:將用戶加入管理權限組

  執行命令: usermod -a -G wheel hadoopuser

 2> 第二步,修改sudoers文件爲可修改狀態,如下:

      chmod -v u+w /etc/sudoers

 3> 第三步,修改sudoers文件,新增一行指令,使新用戶和Root一樣的權限,如下圖所示:

      vim /etc/sudoers

      在 root    ALL=(ALL)       ALL 下       新增一行:hadoopuser    ALL=(ALL)       ALL

      注意:小細節:ypsroot  ALL=(ALL)    NOPASSWD:   ALL         可以讓ypsroot賬號在操作時不輸入密碼!(nopasswd:)

    wq保存即可;

    

     **在使用的時候,記住指令前面要加 sudo 

    上面我們修改sudoers文件爲可修改,此時我們應該重新把它修改爲只讀模式:

 4> 執行如下命令: chmod -v u-w /etc/sudoers 

 

解壓 hadoop-3.2.1.tar.gz

cd  /usr/local

tar   -zxvf   hadoop-3.2.1.tar.gz

查看hadoop版本號:hadoop version

僞分佈式配置

在單個節點(一臺機器上)以僞分佈式的方式運行。

修改配置文件

cd    /usr/local/hadoop-3.2.1/etc/hadoop

修改core-site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml文件

core-site.xml

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://localhost:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop-3.2.1/hdfs-tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>

  • hadoop.tmp.dir用於保存臨時文件,如果沒有配置這個參數,則默認使用的臨時目錄爲/tmp/hadoo-hadoop,這個目錄在Hadoop重啓後會被系統清理掉。
  • fs.defaultFS用於指定HDFS的訪問地址。

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>localhost:50090</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop-3.2.1/file-tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop-3.2.1/file-tmp/dfs/data</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
</configuration>

  • dfs.replicaion:指定副本數量,在分佈式文件系統中,數據通常會被冗餘的存儲多份,以保證可靠性和安全性,但是這裏用的是僞分佈式模式,節點只有一個,也有就只有一個副本。
  • dfs.namenode.name.di:設定名稱節點元數據的保存目錄
  • dfs.datanode.data.dir:設定數據節點的數據保存目錄

mapred-site.xml

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>mapreduce.jobhistory.address</name>
            <value>localhost:10020</value>
        </property>
        <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>localhost:19888</value>
        </property>

        <property>
            <name>yarn.app.mapreduce.am.env</name>
            <value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.1/hdfs-tmp</value>
        </property>
        <property>
            <name>mapreduce.map.env</name>
            <value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.1/hdfs-tmp</value>
        </property>
        <property>
            <name>mapreduce.reduce.env</name>
            <value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.1/hdfs-tmp</value>
        </property>
</configuration>

yarn-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>localhost</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>
                 <name>yarn.resourcemanager.webapp.address</name>
                 <value>localhost:8088</value>
         </property>
         <property>
                 <name>yarn.resourcemanager.scheduler.address</name>
                 <value>localhost:8030</value>
         </property>
         <property>
                 <name>yarn.resourcemanager.address</name>
                 <value>localhost:8032</value>
         </property>
         <property>
                 <name>yarn.resourcemanager.resource-tracker.address</name>
                 <value>localhost:8031</value>
         </property>
         <property>
                 <name>yarn.resourcemanager.admin.address</name>
                 <value>localhost:8033</value>
         </property>
</configuration>

 

 

格式化hdfs

hdfs namenode -format

啓動hadoop

start-all.sh

關閉hadoop

stop-all.sh

查看啓動情況

 

hdfs網頁如下圖,可以看到文件信息,地址:http://127.0.0.1:9870/

yarn的網頁如下圖,可以看到任務信息,地址:http://127.0.0.1:8088/cluster

至此,hadoop3.2.1僞分佈式搭建和驗證完畢。

 

提示:

ERROR: Unable to write in xxx/logs. Aborting.

在進行Hadoop節點格式化時候出現

Starting resourcemanager  ERROR: Unable to write in /home/zhang/opt/hadoop-3.1.0/logs. Aborting.

原因:權限不夠

加入-R 參數,將讀寫權限傳遞給子文件夾
chmod -R  777      /logs

或者出現了Cannot create directory

同樣是因爲權限不夠:將需要的權限給予相應的 文件夾

sudo chmod -R a+w     /tmp

 

 

啓動hadoop,報錯Error JAVA_HOME is not set and could not be found

報如錯誤:JAVA_HOME is not set and could not be found,可能是因爲JAVA_HOME環境沒配置正確,還有一種情況是即使各結點都正確地配置了JAVA_HOME,但在集羣環境下還是報該錯誤,解決方法是顯示地重新聲明一遍JAVA_HOME

        1、檢查JAVA_HOME是否配置正確(僞分佈式環境)

        啓動start-all.sh時報錯,錯誤所示 Error JAVA_HOME is not set and could not be found

         檢查環境變量

           輸入java –version,查看jdk是否安裝成功

           輸入export,查看jdk環境變量是否設置成功

        2.在集羣環境下,即使各結點都正確地配置了JAVA_HOME,也會錯誤Error JAVA_HOME is not set and could not be found

           在hadoop-env.sh中,再顯示地重新聲明一遍JAVA_HOME

  

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