Hadoop 2.8集群安裝及配置記錄


第一部分:環境配置(含操作系統、防火牆、SSH、JAVA安裝等)

Hadoop 2.8集群安裝模擬環境為:

主機:Hostname:Hadoop-host,IP:10.10.11.225

節點1:Hostname:Hadoopnode1,IP:10.10.11.254

兩台機器均為Centos 7.*,64位版本。

主機操作系統安裝時采用界面化形式,節點1采用最小化安裝。安裝完成后,首先設置機器名稱並設置固定IP,方法如下:

1.修改主機名:

修改/etc/host、hostname文件,注意請在host文件中一並添加hadoopnode1機器的IP地址。

10.10.11.225 Hadoop-host
10.10.11.254 hadoopnode1
::1         localhost

2.修改IP為固定IP方法:

修改網絡配置文件:/etc/sysconfig/network-scripts/ifcfg-eno16777736的內容,最終如下:

最難的是DNS的設置,剛開始在網上找了很多資料,都說是設置為虛擬機的網關即可,設置后發現主機與節點計算機之間可以Ping通,但是無法上網。幾經周折,后發現網絡配置頁面里面明明寫着DNS地址,於是抄過來,按其修改后保存后一切正常。

3.SSH面密碼登錄設置

首先生成rsa密匙與公匙,ssh-keygen -t  rsa,一路回車后生成。然后利用命令:ssh-copy-id -i  ~/.ssh/id_rsa.pub  root@10.10.11.254,然后輸入密碼后搞定。

備注:如果執行以上命令時遇到以下錯誤:

The authenticity of host 192.168.***.*** can't be established.可運行命令:ssh  -o StrictHostKeyChecking=no  192.168.***.***,然后輸入密碼解決。

4.升級java openjdk。

centos 7.*系統版本自帶openjdk,因為懶得緣故,本人想利用openjdk,這樣就不用安裝java jdk了。在此,用命令:yum install java,升級openjdk。升級完后,通過查詢得知,openjdk的安裝路徑默認為:usr/lib/jvm/,根據此路徑,設置系統的全局變量JAVA_HOME。打開文件/etc/profile,並在文件最后添加:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64/jre
export PATH=$JAVA_HOME/bin:$PATH

注意,全局變量中的路徑中是到bin文件夾上級目錄位置,因此,路徑最終必須為****/jre.


第二部分:安裝並配置Hadoop 2.8

 

本人比較喜歡wget方式,找一個國內的Hadoop鏡像站點,下載后,解壓到指定目錄(本示例解壓到:/usr/hadoop),然后打開文件/etc/profile,並在文件最后添加:

export HADOOP_HOME=/usr/hadoop  
export PATH=$PATH:$HADOOP_HOME/bin

保存並退出。

配置/usr/hadoop/etc/hadoop/文件夾下的各個配置文件,分別為:

core-site.xml

 <configuration>  
      
    <property>   
        <name>hadoop.tmp.dir</name>   
        <value>/usr/hadoop/tmp</value>   
        <final>true</final>  
        <description>A base for other temporary directories.</description>   
    </property>   
    <property>   
        <name>fs.default.name</name>   
        <value>hdfs://10.10.11.225:9000</value>  
    <!-- hdfs://Master.Hadoop:22-->  
            <final>true</final>   
    </property>   
    <property>    
         <name>io.file.buffer.size</name>    
         <value>131072</value>    
    </property>  
    </configuration>   

hdfs-site.xml

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

mapred-site.xml

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

yarn-site.xml

<property>    
  <name>yarn.resourcemanager.address</name>    
  <value>hadoop-host:18040</value>    
</property>    
<property>    
  <name>yarn.resourcemanager.scheduler.address</name>    
  <value>hadoop-host:18030</value>    
</property>    
<property>    
  <name>yarn.resourcemanager.webapp.address</name>    
  <value>hadoop-host:18088</value>    
</property>    
<property>    
  <name>yarn.resourcemanager.resource-tracker.address</name>    
  <value>hadoop-host:18025</value>    
</property>    
<property>    
  <name>yarn.resourcemanager.admin.address</name>    
  <value>hadoop-host:18141</value>    
</property>    
<property>    
  <name>yarn.nodemanager.aux-services</name>    
  <value>mapreduce_shuffle</value>    
</property>    
<property>    
  <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>    
  <value>org.apache.hadoop.mapred.ShuffleHandler</value>    
</property>    
</configuration> 

hadoop-env.sh

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64/jre

即與系統的環境變量JAVA_HOME保持一致。


設置關鍵的分布式IP地址配置:(補充:只配置slaves文件也可以)

masters文件:

10.10.11.225

slaves文件:

10.10.11.254
10.10.11.225

如果在slaves文件里面沒有包含Hadoop主機IP,那么啟動時會只有一個datanode.

至此Hadoop配置工作告一段落。

最后,利用命令:scp –r /usr/hadoop root@hadoopnode1 :/usr/,將hadoop配置分發至hadoopnode1節點計算機。

第三部分:運行及結果

首先使用命令:hadoop namenode -format,格式化namenode,否則會報:Call From ****/**** to ****:9000 failed on connection exception: java.net.ConnectException: 拒絕連接;錯誤。

然后運行Hadoop啟動命令:

start-all.sh

然后通過命令:hadoop dfsadmin -report可以查看節點情況,本示例為2個datanode,因此結果為:

由上圖可以看出,有2個活躍的datanode節點。

通過網址查看整體運行情況:

如果出現節點無法連接情況,很可能是防火牆忘記關了。可采用命令:systemctl stop firewalld.service來關閉,還可以通過命令:system disable firewalld.service來禁止防火牆隨開機啟動。

總結:Hadoop 2.8本身的配置不算復雜,重點在於Centos 7.*系統環境的各種配置。Centos 7的命令較以前的版本發生了變化,網上資料要么都是以前版本的,無法直接應用,要么就是針對7.*版本的資料很少。這時需要認真分析,仔細排查,找出問題,這樣才能逐步掌握配置方法。另外,剛開始學習時,由於缺乏積累,出現幾次配置失敗是很稀松平常的,這時候千萬要抵住壓力與挫折,在學習過程中一定要保持足夠的耐心,不能因為一點點的挫折而放棄學習新環境的機會。拿自己來說,自己經過幾次的配置,滿以為總算能成功了,沒想到在運行時卻發現結果不對,當時差點就放棄了,還好最終時刻通過排查防火牆,發現並解決了問題,出現了預期結果。總之,耐心與細心缺一不可。

 


免責聲明!

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



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