hadoop偽分散式環境如何搭建

> 主要分享在centos的環境下搭建hadoop的偽分散式環境。

# 前期準備

centos虛擬機環境

hadoop安裝軟體

# 環境配置

## 創建hadoop用戶

```

sudo useradd -m hadoop -s /bin/bash

sudo passwd hadoop

sudo adduser hadoop sudo #為 hadoop 用戶增加管理員許可權,方便部署

```

## 配置網路連接

### 虛擬機選擇host-only模式

![](http://img.blog.csdn.net/20161006204026173)

![](http://img.blog.csdn.net/20161006204207546)

> 驗證:宿主機能夠ping通虛擬機,虛擬機ping不通主機,只能ping通192.168.83.1(說明:如果ping不通,請不必主機的防火牆)。

### 主機名和網路連接

可以使用centos7中的**nmtui**文本工具來設置主機名和網路連接。

> 驗證

```

hostnamectl status

```

![](http://img.blog.csdn.net/20161006204643020)

```

ip addr

```

![](http://img.blog.csdn.net/20161006204743536)

### ip與hostname綁定

```

vi /etc/hosts

ip 主機名

```

> 驗證

```

ping 主機名

```

![](http://img.blog.csdn.net/20161006205005411)

### 關閉防火牆

> CentOS 7.0默認使用的是firewall作為防火牆,並且自動運行。

```

systemctl start firewalld.service#啟動firewall

systemctl stop firewalld.service#停止firewall

systemctl disable firewalld.service#禁止firewall開機啟動

```

> 驗證

```

systemctl status firewalld.service

```

## ssh免密碼登陸

```

ssh-keygen -t rsa #生成密鑰

```

![](http://img.blog.csdn.net/20161006205840101)

```

cp id_rsa.pub authorized_keys

```

![](http://img.blog.csdn.net/20161006205937884)

> 驗證

```

ssh localhost

```

## 安裝jdk

利用rpm安裝;先檢驗系統原版本:java -version;進一步查看JDK信息:rpm -qa | grep java;

卸載OpenJDK,執行以下操作:

```

rpm -e --nodeps tzdata-java-2014i-1.el7.noarch

rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.71-2.5.3.1.el7_0.x86_64

rpm -e --nodeps java-1.7.0-openjdk-1.7.0.71-2.5.3.1.el7_0.x86_64

```

安裝命令(JDK默認安裝在/usr/java中,如果要安裝到/usr/local/,請到該目錄下執行此命令,本例採用默認安裝方式):

```

rpm -ivh jdk-8u25-linux-x64.rpm

cd /usr/java

ls

```

> 驗證

```

java -version

```

![](http://img.blog.csdn.net/20161006210654248)

## 安裝hadoop

```

cp /home/hadoop/Downloads/hadoop-2.7.1.tar.gz /usr/local/

tar zxvf hadoop-2.7.1.tar.gz

chmod -R 777 hadoop-2.7.1 #更改hadoop-2.7.1文件夾許可權

```

### 修改配置文件

> etc/hadoop/hadoop-env.sh

```

# The java implementation to use.

#export JAVA_HOME=${JAVA_HOME}

export JAVA_HOME=/usr/java/jdk1.8.0_60

```

> etc/hadoop/yarn-env.sh

```

#export JAVA_HOME=/home/y/libexec/jdk1.7.0/

export JAVA_HOME=/usr/java/jdk1.8.0_60

```

> etc/hadoop/core-site.xml 添加如下內容:

```

hadoop.tmp.dir

file:/user/local/hadoop-2.7.1/tmp

namenode上本地的hadoop臨時文件夾

fs.defaultFS

hdfs://localhost:9000

HDFS的URI,文件系統://namenode標識:埠號

```

> etc/hadoop/hdfs-site.xml 添加如下內容:

```

dfs.replication

1

副本個數,配置默認是3,應小於datanode機器數量

dfs.namenode.name.dir

file:/user/local/hadoop-2.7.1/tmp/dfs/name

namenode上存儲hdfs名字空間元數據

dfs.datanode.data.dir

file:/user/local/hadoop-2.7.1/tmp/dfs/data

datanode上數據塊的物理存儲位置

```

> 補充:由於系統重啟後,找不到namenode進程,這是因為系統在重啟後被刪除,所以加入下面配置*

> etc/hadoop/mapred-site.xml

> 將mapred-site.xml.templat重命名成mapred-site.xml,添加:

```

mapreduce.framework.name

yarn

```

> 解釋:相比於Hadoop1.0,用戶無需再配置mapred.job.tracker,這是因為JobTracker已變成客戶端的一個庫,他可能被隨機調度到任何一個slave上,也就是它的位置是動態生成的。需要注意的是,在該配置文件中需用mapreduce.framework.name指定採用的框架名稱,默認是將作業提交到MRv1的JobTracker端。*

> etc/hadoop/yarn-site.xml 添加如下內容:

```

yarn.nodemanager.aux-services

mapreduce_shuffle

```

> 解釋:為了能夠運行MapReduce程序,需要讓各個NodeManager在啟動時載入shuffle server,shuffle server實際上是Jetty/Netty Server,Reduce Task通過該server從各個NodeManager上遠程拷貝Map Task產生的中間結果。上面增加的兩個配置均用於指定shuffle serve。如果YARN集群有多個節點,你還要配置yarn.resourcemanager.address等參數*

## 配置環境變數

```

#> vi /etc/profile

export JAVA_HOME=/usr/java/jdk1.8.0_60

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export HADOOP_HOME=/usr/local/hadoop-2.7.1

export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

#> source /etc/profile

```

> 驗證

```

java -version

hadoop version

```

![](http://img.blog.csdn.net/20161006224630401)

## hadoop啟動

> 格式化namenode

```

hdfs namenode –format

```

> 啟動namenode 和 datanode 守護進程

```

start-dfs.sh

```

> 啟動resourcemanager 和 nodemanager 守護進程

```

start-yarn.sh

```

> 驗證

```

jps

```

![](http://img.blog.csdn.net/20161006225108669)

## 查看集群信息

```

http://192.168.83.100:8088

```

![](http://img.blog.csdn.net/20161006225308108)

## 查看dfs信息

```

http://localhost:50070

```

![](http://img.blog.csdn.net/20161006225427241)


推薦閱讀:

VPC網路環境連接OSS地址失敗,腫么辦?
從0到數千萬日活,靠什麼?音樂+社交
2018最新千鋒教育Linux雲計算架構師+Python運維開發課程學習路線圖
對象存儲OSS控制台—圖片處理

TAG:Hadoop | 編程語言 | 分散式 | Spark | 雲計算 |