VirtualBox centos 7 安裝hadoop
首先確保ssh已安裝,如果沒有安裝執行yum install ssh
然後執行ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa生成祕鑰
這裡用的hadoop2.8.5,下載.tar.gz檔案上傳到虛擬機器上,如何將主機檔案上傳到VritualBox已經有了充分的說明,自行檢視,上傳到指定目錄之後執行tar -xvf xxxx.tar.gz進行解壓。
解壓完hadoop要配置環境變數,vi /etc/profile
新增
HADOOP_HOME=/root/hadoop
PATH=$JAVA_HOME/bin:$PATH:$HOME/bin
export HADOOP_HOME
export PATH
這裡PATH裡面有$JAVA_HOME/bin如果上面配置java的環境變數的時候寫了可以把之前寫的PATH註釋掉。
然後執行 source /etc/profile使環境變數生效。
接下來配置hadoop的一些檔案:
第一個解壓後的hadoop目錄下的/etc/hadoop/core-site.xml
看一下是否有這個<configuration></configuration>,如果沒有自己寫上去,然後在這個<configuration></configuration>中加入
<property> <name>fs.defaultFS</name> <value>hdfs://s204:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/root/hadoop/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>
第二個檔案是解壓後的hadoop目錄下/etc/hadoop/hdfs-site.xml
同樣在<configuration></configuration>中加入
<property> <name>dfs.namenode.name.dir</name> <value>file:/root/hadoop/hdfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/root/hadoop/hdfs/data</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>s204:9001</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property>
第三個檔案是解壓後的hadoop目錄下的/etc/hadoop/mapred-site.xml
接下來的幾個xml裡都要寫在<configuration></configuration>中
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>s204:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>s204:19888</value>
</property>
第四個檔案是在解壓後的hadoop目錄下的/etc/hadoop/yarn-site.xml
<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>s204:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>s204:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>s204:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>s204:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>s204:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>6078</value>
</property>
接下來修改檔案也是在解壓後的hadoop目錄下的/etc/hadoop/yarn-env.sh
找到被註釋掉的生命 export JAVA_HOME=/usr/local/java/jdk1.8.0_191(確保這個地址是jdk的安裝路徑)去掉註釋
然後找到JAVA_HEAP_MAX=-Xmx1000m改成JAVA_HEAP_MAX=-Xmx1024m(這個的作用暫時未查明,不過使用沒問題)。
最後一個檔案是在解壓後的hadoop目錄下的/etc/hadoop/slaves
這個檔案裡面只寫s204就可以。
接下來配置網路,vi /etc/sysconfig/network-scripts/ifcfg-enp0s3(這個名字可能是不同的),你可以通過命令ip add檢視
這樣就確定是哪個了,然後編輯修改這個檔案對照內容如下:
TYPE="Ethernet"
#BOOTPROTO="dhcp"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="b9fe1e5c-be20-47f1-a2d3-e12f5ddb6aa1"
DEVICE="ens33"
ONBOOT="yes"
IPADDR0=192.168.9.10
PREFIX0=24
GATEWAY0=192.168.9.5
DNS1=114.114.114.114
重啟網路systemctl restart network或者/etc/rc.d/init.d/network restart
現在可以啟動hadoop了,首先進入解壓後的hadoop目錄下執行./bin/hdfs namenode -format
在輸出中看到Exiting with status 0表示成功
然後執行./sbin/start-all.sh
看輸出沒有error等報錯資訊就是成功了,或者通過執行命令./bin/hdfs dfsadmin -report檢視。
打通主機與虛擬機器網路去訪問http://s204:8088
首先在virtualBox中選中虛擬機器然後右鍵--》設定出現如下圖
選擇“橋接網絡卡”介面名稱中選中你的網路,我這裡是使用無線網路,然後點“OK”,之後要進入虛擬機器centos下設定網路獲取方式為自動獲取
nmcli connection modify enp0s3 \connection.autoconnect yes \ipv4.method auto --設定自動獲取ip
nmcli connection up enp0s3 ----啟用設定
這裡enp0s3每個虛擬機器可能不一樣,可以使用ip add
或者nmcli connection show
最後systemctl stop firewalld.service --關閉防火牆
或者systemctl disable firewalld.service --禁止開機啟動防火牆
===========================================================================================
下面是一些在啟動hadoop時出現的問題及解決辦法。
在執行./sbin/start-all.sh的時候出現異常could not resolve hostname s204:name or service not known
使用./bin/hdfs dfsadmin -report檢視是否有節點的時候報錯java.net.UnknownHostException:s204(這個在上面出現過,也可以換成別的)
這時候要檢視/etc下面的hosts檔案,新增上對應的ip與主機名即:192.168.10.11 s204
重新執行./sbin/start-all.sh。
在執行./sbin/start-all.sh的時候出現異常error:JAVA_HOME is not set and could not be found
這時候需要修改Hadoop目錄下/etc/hadoop下的hadoop-env.sh,將這個檔案中的宣告export JAVA_HOME=/usr/local/java/jdk1.8.0_191顯示的宣告一下。