1. 程式人生 > >Linux centos7 安裝Hadoop單結點

Linux centos7 安裝Hadoop單結點

Hadoop實現了一個分散式檔案系統(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特點,並且設計用來部署在低廉的(low-cost)硬體上;而且它提供高吞吐量(high throughput)來訪問應用程式的資料,適合那些有著超大資料集(large data set)的應用程式。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)檔案系統中的資料。

下面我們就來在虛擬機器上在安裝一下單結點的hadoop吧。

一、ssh免密碼登入

Hadoop的程序之間同信使用ssh方式,需要每次都要輸入密碼。為了實現自動化操作,需要配置ssh免密碼登陸方式。

1.停止並禁用防火牆

systemctl stop firewalld && systemctl disable firewalld

2.開啟sshd服務

需要編輯/etc/ssh/sshd_config開啟sshd服務.

vi /etc/ssh/sshd_config

放開標註的文件(去掉#):

這裡寫圖片描述

重啟服務,使剛才的修改生效(centos7上命令)

systemctl restart sshd.service

3.修改/etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain
4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 # add 192.168.89.130 master

4、修改/etc/sysconfig/network

# Created by anaconda
NETWORKING=yes
HOSTNAME=master

使用如下命令使剛才的修改/etc/sysconfig/network生效

source /etc/sysconfig/network
service network restart

5.建立hadoop使用者

adduser hadoop '123456'

6.建立hdfs目錄

su hadoop
cd ~

建立如下目錄的資料夾

  • home
    • hadoop
      • hdfs
        • data
        • name
mkdir -p hdfs/data
mkdir -p hdfs/name

7.生成ssh公私鑰對

生成ssh公私鑰對,輸入如下命令然後一路回車.

這裡寫圖片描述

這時候會在/home/hadoop/下生成.ssh目錄,目錄中有檔案id_rsa和id_rsa.pub。下面我們實現免密登陸過程

cd .ssh/
cat id_rsa.pub >> authorized_keys
chmod 644 authorized_keys

這時候在.ssh目錄下會多出一個authorized_keys檔案。下面我們測試下是否能免密登陸

這裡寫圖片描述

如有提示輸入“yes”回車即可。之後可以看到免密登陸成功.

二、安裝hadoop

1.官網下載hadoop

可以到官網下載 hadoop-2.8.0,然後通過rz上傳到虛擬機器當中。

解壓hadoop到/usr/local目錄

tar -zxvf hadoop-2.8.0 -C /usr/local
chown -R hadoop:hadoop /usr/local/hadoop-2.8.0

2、配置hadoop環境變數

修改/etc/profile,配置環境變數。

export JAVA_HOME=/usr/local/jdk1.8.0_111
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/usr/local/hadoop-2.8.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

3、修改hadoop配置檔案

修改hadoop配置檔案 hadoop安裝目錄/etc/hadoop 修改的檔案,需要修改的檔案如下:

hadoop-env.sh
yarn-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
slaves

在目錄中我們可以看到並沒有mapred-site.xml,但是有mapred-site.xml.template,所以我們可以做如下操作。

cp mapred-site.xml.template mapred-site.xml

3.1 hadoop-env.sh
在檔案中增加如下配置:

export JAVA_HOME=/usr/local/jdk1.8.0_111
export HADOOP_PREFIX=/usr/local/hadoop-2.8.0

修改後如下:

這裡寫圖片描述

3.2 yarn-env.sh
yarn-env.sh在檔案中增加如下配置:

export JAVA_HOME=/usr/local/jdk1.8.0_111

修改後如下:

這裡寫圖片描述

3.3 core-site.xml

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

3.4 hdfs-site.xml

<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:/home/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/hdfs/data</value>
    </property>
</configuration>

3.5 mapred-site.xml

<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>

3.6 yarn-site.xml

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master:8088</value>
    </property>
</configuration>

3.7 slaves

修改slaves,加入節點主機名稱,儲存並退出:

master

4.格式化namenode命令

hdfs namenode -format

5. 啟動hadoop

# 啟動hadoop方法一
start-all.sh

# 啟動hadoop方法二
start-dfs.sh
start-yarn.sh

6、啟動成功

訪問http://192.168.89.130:8088/,顯示如下頁面:

這裡寫圖片描述

訪問http://192.168.89.130:50070/,顯示如下頁面:
這裡寫圖片描述

三、遇到的問題

訪問但是http://192.168.89.130:8088/成功,但是訪問”http://192.168.89.130:50070/”不成功。發現data下面沒有檔案。
把name下面的檔案copy到data資料夾下面。

cp -r name/* data/

其實當你真正啟動成功使用jps命令可以看到如下顯示當前所有java程序pid。

這裡寫圖片描述