CentOS 7 64位操做系統 | 選擇minimal
版本便可(不帶可視化桌面環境),也能夠選擇帶完整版
Hadoop-2.8.0 | 本文采用的是Hadoop-2.8.0
版本。
JDK1.8 | 本文采用jdk-8u131-linux-x64.tar.gz
版本。html
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
執行source ~/.bash_profile 使變量生效
2. 解壓hadoop-2.8.0
將下載好的Hadoop壓縮包解壓到目標文件夾下,(本文解壓目錄爲:/usr/local
)
修改解壓後獲得Hadoop的文件夾名爲:Hadoop-2.8.0
並獲得以下文件:web
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
再次執行 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爲絕對路徑
修改 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
修改etc/hadoop/slaves
添加當前主機ip
至此,基本配置已經完畢
3. 列表項目
hadoop目錄下執行以下指令,進行編譯
./bin/hdfs namenode –format
出現如上圖,表示編譯成功。
4. 關閉防火牆:
關閉防火牆服務:systemctl stop firewalld.service
使防火牆服務不隨機器啓動:systemctl disable firewalld.service
開啓Hadoop
服務
./sbin/start-all.sh
輸入jps
查看相關節點是否開啓
打開瀏覽器:地址欄輸入http://192.168.0.181:8088
問題一:nameNode節點沒法啓動,jps目錄缺乏相應活動程序
在第一次格式化dfs
後啓動並使用了Hadoop
,後來又從新執行了格式化命令hdfs namenode –format
這時namenode
的clusterID
會從新生成,而datanode
的clusterID
保持不變。
從而致使二者的id不一致,出現一系列錯誤。
解決辦法:
到hadoop/hdfs
目錄下分別查看data/current
下的VERSION
和name/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>