1. 程式人生 > >VirtualBox centos 7 安裝hadoop

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顯示的宣告一下。