第一部分:環境配置(含操作系統、防火牆、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.*版本的資料很少。這時需要認真分析,仔細排查,找出問題,這樣才能逐步掌握配置方法。另外,剛開始學習時,由於缺乏積累,出現幾次配置失敗是很稀松平常的,這時候千萬要抵住壓力與挫折,在學習過程中一定要保持足夠的耐心,不能因為一點點的挫折而放棄學習新環境的機會。拿自己來說,自己經過幾次的配置,滿以為總算能成功了,沒想到在運行時卻發現結果不對,當時差點就放棄了,還好最終時刻通過排查防火牆,發現並解決了問題,出現了預期結果。總之,耐心與細心缺一不可。