1. 程式人生 > >centos6.5 安裝hadoop2.7.6 1master2node

centos6.5 安裝hadoop2.7.6 1master2node

centos6.5 hadoop 2.7

環境采用centos 6.5最小化安裝,hadoop下載的hadoop2.7.6.tar.gz安裝,Java下載的oracle官網的1.8.0_172的包安裝。

參考了別人的文檔,遇到了不同的問題。

技術分享圖片
技術分享圖片
技術分享圖片

1. 3臺centos6.5 vmware

192.168.17.205 Master
192.168.17.206 hadoop1
192.168.17.207 hadoop2
為三臺主機添加同一用戶,設置密碼:

添加用戶
useradd hadoop
修改密碼
passwd hadoop

SSH 免密碼登錄安裝,配置
保證由master主機能夠免密碼登錄到datanodes節點機上

# ssh-keygen -t rsa -P ‘‘ -f ~/.ssh/id_rsa
#ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.17.206

測試

[root@Master ~]# ssh 192.168.17.206
Last login: Mon Apr 23 12:56:33 2018 from 192.168.17.1
[root@hadoop1 ~]# 

JDK的安裝與卸載
卸載 JDK

# 檢查當前安裝的JDK
rpm -qa|grep gcj
rpm -qa|grep jdk
rpm -e  --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
rpm -e  --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

#查詢當前系統中相關java 目錄並刪除
whereis java
java: /etc/java /usr/lib/java /usr/share/java

#刪除查詢出的結果目錄
rm -fr /usr/share/java
rm -fr /usr/lib/java
rm -fr /etc/java

安裝JDK

在usr目錄下創建java目錄並且下載JDK並且解壓到 /usr/java 目錄下

cd /usr
mkdir java
cd java
wget http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-x64.tar.gz
tar -zxvf jdk-8u172-linux-x64.tar.gz

可能要手工下載再傳進去,下載到的可能是html而不是tar.

編輯 vim /etc/profile 文件並且在末尾追加

JAVA_HOME=/usr/java/jdk1.8.0_172
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH

在不重新啟動操作系統的情況下使 /etc/profile 文件生效
source /etc/profile
檢查java的安裝狀態
java -version

2. 安裝 Hadoop2.7.6

下載hadoop-2.7.6

cd /tmp
wget http://apache.fayea.com/hadoop/common/hadoop-2.7.3/hadoop-2.7.6.tar.gz
解壓 hadoop-2.7.6.tar.gz
tar -zxvf hadoop-2.7.6.tar.gz
復制文件到 /usr 目錄下
cp -R /tmp/hadoop-2.7.3 /usr/hadoop
配置hadoop的環境變量,在/etc/profile下追加
vi /etc/profile
追加如下的環境變量設置

HADOOP_HOME=/usr/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

修改 etc/hadoop/hadoop-env.sh 文件
vi etc/hadoop/hadoop-env.sh

# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/java/jdk1.8.0_172

修改 etc/hadoop/core-site.xml 文件


<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://Master:9000</value>
    </property>

</configuration>

修改 etc/hadoop/hdfs-site.xml 文件

<!-- Put site-specific property overrides in this file. -->

<configuration>

        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Master:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/hadoop/tmp/dfs/data</value>
        </property>

</configuration>

修改 etc/hadoop/yarn-site.xml 文件

<configuration>

        <!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>Master</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>

</configuration>

修改 etc/hadoop/mapred-site.xml 文件

<!-- Put site-specific property overrides in this file. -->
<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>Master:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>Master:19888</value>
        </property>
</configuration>

修改 etc/hadoop/slaves 文件,添加

192.168.17.206
192.168.17.207
打包文件夾 /usr/hadoop ,復制到 datanode 節點機,保證節點機環境配置與master保持一致格式化文件系統

hdfs namenode -format
啟動文件服務
start-dfs.sh
Make the HDFS directories required to execute MapReduce jobs:
關閉文件服務
stop-dfs.sh
創建用戶文件系統文件夾
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/hadoop
復制文件本地文件到分布式文件系統 input 下
hdfs dfs -mkdir /input
hdfs dfs -put etc/hadoop/*.xml input

3. 遇到的問題

3.1安裝後會一直提示錯誤“WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable ”

export  HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

把相同配置添加到hadoop-env.sh文件末尾。

3.2hadoop Live Nodes :0

 對於這些網上的說法已經很多了,主要包括:
1 關閉safemode模式,輸入如下命令:
bin/hadoop dfsadmin -safemode leave
2 檢查存儲空間是否足夠,輸入如下命令:
df -hl
3 重新格式化hdfs,按照如下步驟
a) 刪除master和所有slave上的 hadoop目錄下的logs文件,並重新建立
b) 刪除master和所有slave上的hdfs存儲目錄,即conf/core-site.xml配置文件中  hadoop.tmp.dir屬性對應的value所指向的目錄,並重新建立
4 檢查防火墻是否關閉,輸入下面命令查看狀態:
service iptables status
輸入下面命令關閉防火墻
service iptables stop
5 重新檢查配置文件
不過上述方法都用過了,依然沒有解決問題,下面一點是如何解決了該問題的操作。
檢查每臺機器上的/etc/hosts文件,將沒有用或不清楚作何用的ip:name對刪除,最後只留下了
[root@hadoop1 hadoop]# cat /etc/hosts
127.0.0.1   localhost
192.168.17.205 Master
192.168.17.206 hadoop1
192.168.17.207 hadoop2

centos6.5 安裝hadoop2.7.6 1master2node