(單機)CentOS 7_64位系統下搭建Hadoop_2.8.0分佈式環境

準備條件:

CentOS 7 64位操做系統 | 選擇minimal版本便可(不帶可視化桌面環境),也能夠選擇帶完整版
Hadoop-2.8.0 | 本文采用的是Hadoop-2.8.0版本。
JDK1.8 | 本文采用jdk-8u131-linux-x64.tar.gz版本。html


- 解壓並配置JDK並配置Hadoop

1. 將下載好的jdk放入/usr 下並在/usr目錄下新建java目錄java

[root@localhost /]# cd /usr
[root@localhost usr]# mkdir java
[root@localhost usr]# cd /usr/java/jdk1.8

進入該目錄,並解壓jdk到當前文件夾node

tar -xzvf jdk-8.tar.gz

解壓獲得文件夾修改文件夾名爲jdk1.8以方便使用。
修改JAVA環境變量:
編輯java環境 vi ~/.bash_profile
添加以下命令:linux

export JAVA_HOME=/usr/java/jdk1.8.0_121

export PATH=$JAVA_HOME/bin:$PATH

clipboard.png

執行source ~/.bash_profile 使變量生效

2. 解壓hadoop-2.8.0
將下載好的Hadoop壓縮包解壓到目標文件夾下,(本文解壓目錄爲:/usr/local
修改解壓後獲得Hadoop的文件夾名爲:Hadoop-2.8.0 並獲得以下文件:web

clipboard.png

Hadoop不須要安裝,下面進行環境配置apache

下面的修改過程可以使用vi命令,或者vim命令,或使用xftp直接對文件進行修改
  • 再次修改bash_profile 添加hadoop的文件路徑:
    加上以前修改的配置的jdk環境,改該文件總體修改成:vim

PATH=$PATH:$HOME/bin
export PATH
export JAVA_HOME=/usr/java/jdk1.8
export HADOOP_HOME=/usr/local/hadoop-2.8.0
export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin:$HADOOP_HOME/bin

clipboard.png

再次執行 source ~/.bash_profile 使得文件當即生效centos

  • 修改etc/hadoop/core-site.xml將configurarion標籤修改成:
    注意: 192.168.0.181是本文的測試地址,相應的,須要修改爲本身虛擬機的ip地址,若是虛擬機不是橋接方式,則能夠改成:127.0.0.1 9000是Hadoop的默認端口,建議先不要修改瀏覽器

<configuration>
             <property>
                <name>fs.defaultFS</name>
                <value>hdfs://192.168.0.181:9000</value>
            </property>
            <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop-2.8.0/tmp</value>
            </property>
            <property>
                <name>io.file.buffer.size</name>
                <value>131702</value>
            </property>
            <property>
                <name>hadoop.proxyuser.hadoop.hosts</name>
                <value>*</value>
            </property>
            <property>
                <name>hadoop.proxyuser.hadoop.groups</name>
                <value>*</value>
            </property>
        </configuration>
  • 修改etc/hadoop/hdfs-site.xml安全

    <configuration>
           <property>
               <name>dfs.namenode.name.dir</name>
               <value>file:/usr/local/hadoop-2.8.0/hdfs/name</value>
           </property>
           <property>
               <name>dfs.datanode.data.dir</name>
               <value>file:/usr/local/hadoop-2.8.0/hdfs/data</value>
           </property>
           <property>
               <name>dfs.replication</name>
               <value>3</value>
           </property>
           <property>
               <name>dfs.namenode.secondary.http-address</name>
               <value>192.168.0.181:9001</value>
           </property>
           <property>
               <name>dfs.webhdfs.enabled</name>
               <value>true</value>
           </property>
            <property>
               <name>dfs.permissions</name>
               <value>false</value>
             </property>  
       </configuration>

    以上,分別配置的是相應的幾個節點和安全認證,文件目錄會在服務開啓時自動建立

dfs.permissions設置爲false能夠容許徹底分佈式模式下的多機訪問
  • 修改etc/hadoop/yarn-site.xml

    <configuration>
       
       <!-- Site specific YARN configuration properties -->
           <property>
               <name>yarn.nodemanager.aux-services</name>
               <value>mapreduce_shuffle</value>
           </property>
           <property>
               <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
               <value>org.apache.hadoop.mapred.ShuffleHandler</value>
           </property>
           <property>
               <name>yarn.resourcemanager.address</name>
               <value>192.168.0.181:8032</value>
           </property>
           <property>
               <name>yarn.resourcemanager.scheduler.address</name>
               <value>192.168.0.181:8030</value>
           </property>
           <property>
               <name>yarn.resourcemanager.resource-tracker.address</name>
               <value>192.168.0.181:8031</value>
           </property>
           <property>
               <name>yarn.resourcemanager.admin.address</name>
               <value>192.168.0.181:8033</value>
           </property>
           <property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>192.168.0.181:8088</value>
           </property>
           <property>
               <name>yarn.nodemanager.resource.memory-mb</name>
               <value>6078</value>
           </property>
       </configuration>
  • 修改etc/hadoop/hadoop-env.sh

    # The java implementation to use.

    export JAVA_HOME=/usr/java/jdk1.8

    以上修改JAVA_HOME爲絕對路徑

    clipboard.png

  • 修改 etc/hadoop/mapred-site.xml
    注意: etc/hadoop/目錄下並無這個xml文件,仔細查找,有個mapred-site.xml.template把這個文件複製,重命名爲 mapred-site.xml並修改成:

<configuration>
                <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
                </property>
                <property>
                    <name>mapreduce.jobhistory.address</name>
                    <value>192.168.0.181:10020</value>
                </property>
                <property>
                    <name>mapreduce.jobhistory.webapp.address</name>
                    <value>192.168.0.181:19888</value>
                </property>
            </configuration>
  • 修改 etc/hadoop/yarn-env.sh
    在其中找到 export JAVA_HOME 並去掉註釋,編輯java地址 export JAVA_HOME=/usr/java/jdk1.8

clipboard.png

  • 修改etc/hadoop/slaves
    添加當前主機ip

clipboard.png

至此,基本配置已經完畢

3. 列表項目

hadoop目錄下執行以下指令,進行編譯

./bin/hdfs namenode –format

clipboard.png

clipboard.png
出現如上圖,表示編譯成功。

4. 關閉防火牆:
關閉防火牆服務systemctl stop firewalld.service
使防火牆服務不隨機器啓動systemctl disable firewalld.service
開啓Hadoop服務

./sbin/start-all.sh

clipboard.png
輸入jps查看相關節點是否開啓
打開瀏覽器:地址欄輸入http://192.168.0.181:8088

clipboard.png

使用過程當中遇到的問題:

  • 問題一:nameNode節點沒法啓動,jps目錄缺乏相應活動程序
    在第一次格式化dfs後啓動並使用了Hadoop,後來又從新執行了格式化命令hdfs namenode –format
    這時namenodeclusterID會從新生成,而datanodeclusterID 保持不變。
    從而致使二者的id不一致,出現一系列錯誤。
    解決辦法:
    hadoop/hdfs目錄下分別查看data/current下的VERSIONname/current下的VERSION文件對比兩文件中的clusterID是否相同,若不一樣,使用name/current下的VERSION中的clusterID覆蓋data/current下的clusterID. 修改後從新啓動Hadoop便可

  • 問題二:如何配置單機互信?
    每次啓動和關閉Hadoop的時候,都須要頻繁輸入屢次密碼,經過配置單機互信或者多機互信來簡化操做:
    解決辦法:
    使用指令:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
    隨後:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
    並執行:chmod 600 .ssh/authorized_keys
    便可。

  • 問題三:在徹底分佈式模式下運行失敗,沒法登錄或沒有訪問權限
    解決辦法:
    修改etc/hadoop/hdfs-site.xml
    添加

    <property>
          <name>dfs.permissions</name>
          <value>false</value>
    </property>
相關文章
相關標籤/搜索