Hadoop手把手逐級(jí)搭建 第一階段: Hadoop單機(jī)偽分布(single)

0. 步驟概述

1). 配置網(wǎng)絡(luò)修改主機(jī)名

2). 配置ssh免密碼登錄

3). 安裝jdk

4). 安裝hadoop

5). 配置hadoop單機(jī)偽分布運(yùn)行環(huán)境(不使用yarn)

6). 為hadoop單機(jī)偽分布增加yarn配置

1. 配置網(wǎng)絡(luò)修改主機(jī)名

1.1 查看VMware虛擬網(wǎng)絡(luò)

1.1.1 點(diǎn)擊VMware菜單“編輯(E)”

1.1.2 在下拉菜單列表選擇“虛擬網(wǎng)絡(luò)編輯器”

1.1.3 在彈出的“虛擬網(wǎng)絡(luò)編輯器”窗口右下角選擇“更改設(shè)置(C)”

1.1.4 如果windows彈出的安全提示選擇“是”

1.1.5 在窗口上方重新刷新的網(wǎng)絡(luò)列表里選中“NAT模式”,窗口中間的“WMnet信息”下,復(fù)選框會(huì)默認(rèn)選中“NAT模式(與虛擬機(jī)共享主機(jī)的IP地址)(N)”

1.1.6 點(diǎn)擊“NAT設(shè)置(S)…”

1.1.7 在彈出的“NAT設(shè)置”窗口可以查看到如下信息:
網(wǎng)絡(luò)VMnet8
子網(wǎng)IP:192.168.111.0
子網(wǎng)掩碼:255.255.255.0
網(wǎng)關(guān)IP(G):192.168.111.2

#使用上述信息配置網(wǎng)卡相關(guān)屬性

1.2 配置虛擬機(jī)網(wǎng)卡ifcfg-eth0

1.2.1 打開(kāi)配置文件ifcfg-eth0
[root@hadoop0 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

1.2.2 刪除ifcfg-eth0文件中的如下屬性
HWADDR=xx:xx:xx:xx:xx:xx
UUID=xxx

1.2.3 為ifcfg-eth0文件添加如下屬性,如已經(jīng)存在則替換或修改
TYPE=Ethernet
IPADDR=192.168.111.111   #ip地址
NETMASK=255.255.255.0   #子網(wǎng)掩碼
GATEWAY=192.168.111.2   #網(wǎng)關(guān)
ONBOOT=yes             #隨系統(tǒng)自動(dòng)啟動(dòng)
BOOTPROTO=static        #靜態(tài)地址

1.2.4 修改完成后/etc/sysconfig/network-scripts/ifcfg-eth0完整內(nèi)容如下
DEVICE=eth0
NM_CONTROLLED=yes
TYPE=Ethernet
IPADDR=192.168.111.111 
NETMASK=255.255.255.0 
GATEWAY=192.168.111.2 
ONBOOT=yes 
BOOTPROTO=static 

1.3 設(shè)置NETWORKING,修改主機(jī)名

1.3.1 向/etc/sysconfig/network添加如下內(nèi)容
[root@hadoop0 ~]# vi /etc/sysconfig/network
NETWORKING=yes      #啟動(dòng)時(shí)激活網(wǎng)絡(luò)
HOSTNAME=hadoop0   #自定義主機(jī)名
GATEWAY=192.168.111.2 #網(wǎng)關(guān)

1.3.2 修改完成后/etc/sysconfig/network完整內(nèi)容如下
NETWORKING=yes 
HOSTNAME=hadoop0 
GATEWAY=192.168.111.2 

1.4 刪除70-persistent-net.rules文件

[root@hadoop0 ~]# rm -rf /etc/udev/rules.d/70-persistent-net.rules

#如果虛擬機(jī)克隆自另一臺(tái)虛擬機(jī),不刪除該文件會(huì)產(chǎn)生如下錯(cuò)誤
device eth0 does not seem to present

1.5 重啟網(wǎng)絡(luò)使配置生效

[root@hadoop0 ~]# service network restart

1.6 測(cè)試連接local是否暢通

[root@hadoop0 ~]# ping 127.0.0.1
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.021 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.021 ms

#暢通則持續(xù)顯示上述內(nèi)容

1.7 測(cè)試連接外網(wǎng)是否暢通

[root@hadoop0 ~]# ping baidu.com
64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=5.50 ms
64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=5.50 ms

#暢通則持續(xù)顯示上述內(nèi)容

1.8 配置resolv.conf

1.8.1 如果ping外網(wǎng)ip地址暢通,ping域名出現(xiàn)如下錯(cuò)誤
unknown host baidu.com  
說(shuō)明配置文件缺少nameserver

1.8.2 向resolv.conf文件添加如下內(nèi)容
[root@hadoop0 ~]# vi /etc/resolv.conf
nameserver 114.114.114.114
nameserver 8.8.4.4

1.8.3 修改完成后/etc/resolv.conf完整內(nèi)容如下
nameserver 114.114.114.114
nameserver 8.8.4.4


1.8.4重新測(cè)試連接外網(wǎng)域名
[root@hadoop0 ~]# ping baidu.com
64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=5.50 ms
64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=5.50 ms

#暢通則持續(xù)顯示上述內(nèi)容
#其中111.13.101.208是baidu.com解析后的ip地址,可能會(huì)有所不同

1.9 關(guān)閉防火墻

# 如果測(cè)試外網(wǎng)不通,輸入如下命令關(guān)閉防火墻
1.9.1 臨時(shí)關(guān)閉防火墻
[root@hadoop0 ~]# service iptables off

1.9.2 永久關(guān)閉防火墻
[root@hadoop0 ~]# chkconfig iptables off

1.10 在hosts文件中添加主機(jī)名映射

1.10.1 為/etc/hosts文件添加如下內(nèi)容
[root@hadoop0 ~]# vi /etc/hosts
192.168.111.111 hadoop0

1.10.2 添加完成后/etc/hosts文件完整內(nèi)容如下

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.111.111 hadoop0

1.11 其他

1.11.1 安裝vim
連接網(wǎng)絡(luò)成功后,如果vim命令不存在,使用如下命令安裝vim
[root@hadoop0 ~]# yum install -y vim*

1.11.2 使用xShell連接并操作虛擬機(jī)
網(wǎng)絡(luò)連接成功后,可自行選擇使用xShell連接并操作虛擬機(jī),提供了比VMware原生界面更方便的操作

2. 設(shè)置SSH免密登錄

2.1 生成密匙

[root@hadoop0 ~]# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

2.2 查看生成的密匙

[root@hadoop0 ~]# cd ~/.ssh
[root@hadoop0 .ssh]# ls
id_dsa  id_dsa.pub

#在~/.ssh目錄下生成了id_dsa和id_dsa.pub兩個(gè)文件

2.3 測(cè)試ssh連接本機(jī)

[root@hadoop0 ~]# ssh hadoop0
The authenticity of host 'hadoop0 (192.168.111.111)' can't be established.
RSA key fingerprint is xxx
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'hadoop0,192.168.111.111' (RSA) to the list of known hosts.
root@hadoop0's password:

# ssh連接本機(jī)仍需輸入密碼

2.4 登錄自身免密

[root@hadoop0 ~]# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

2.5 查看結(jié)果

2.5.1 進(jìn)入~/.ssh目錄
[root@hadoop0 ~]# cd ~/.ssh

2.5.2 ~/.ssh目錄在id_dsa和id_dsa.pub的基礎(chǔ)上又新增了authorized_keys
[root@hadoop0 .ssh]# ls
authorized_keys  id_dsa  id_dsa.pub

2.6 驗(yàn)證ssh連接本機(jī)

[root@hadoop0 ~]# ssh hadoop0

# 無(wú)須再輸入密碼,表示配置成功

3 安裝JDK(在虛擬機(jī)hadoop0上)

3.1 在hadoop0上創(chuàng)建目錄/usr/java/

[root@hadoop0 ~]# mkdir /usr/java

3.2使用xftp上傳jdk-7u67-linux-x64.tar.gz

xftp左側(cè)窗口為windows文件目錄;
右側(cè)窗口為當(dāng)前虛擬機(jī)linux文件目錄;
從左側(cè)窗口找到windows本地的jdk-7u67-linux-x64.tar.gz;
在右側(cè)窗口進(jìn)入/usr/java/目錄;
左側(cè)窗口雙擊jdk-7u67-linux-x64.tar.gz文件,即可上傳至左側(cè)窗口目前所在的虛擬機(jī)目錄;
如有問(wèn)題自行查詢(xún)xShell和xFtp的使用方法

3.3 解壓jdk-7u67-linux-x64.tar.gz到/usr/java

3.3.1 進(jìn)入/usr/java目錄
[root@hadoop0 ~]# cd /usr/java
[root@hadoop0 java]

3.3.2 解壓jdk-7u67-linux-x64.tar.gz到/usr/java
[root@hadoop0 java]# tar -zxvf jdk-7u67-linux-x64.tar.gz

3.4 配置java環(huán)境變量

# 編輯/etc/profile文件并添加如下內(nèi)容
[root@hadoop0 ~]# vim /etc/profile
#jdk
export JAVA_HOME=/usr/java/jdk1.7.0_67
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

3.5 使/etc/profile配置生效

[root@hadoop0 ~]# source /etc/profile

3.6 查看java版本,檢查環(huán)境變量是否生效

[root@hadoop0 ~]# java -version
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

#正常顯示如上信息則配置成功

4 在hadoop0上配置hadoop環(huán)境變量

4.1 創(chuàng)建/opt/test目錄

[root@hadoop0 ~]# mkdir /opt/test

4.2 使用xftp上傳hadoop-2.6.5.tar.gz到/opt/test/

4.3 將hadoop-2.6.5.tar.gz解壓到文件夾/opt/test/

4.3.1 進(jìn)入/opt/test目錄
[root@hadoop0 ~]# cd /opt/test/
[root@hadoop0 test]#

4.3.2解壓hadoop-2.6.5.tar.gz到文件夾/opt/test/
[root@hadoop0 test]# tar -zxvf hadoop-2.6.5.tar.gz

4.4 配置HADOOP環(huán)境變量

# 在/etc/profile添加如下內(nèi)容
[root@hadoop0 test]# vim /etc/profile
#hadoop
export HADOOP_PREFIX=/opt/test/hadoop-2.6.5
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin

4.5使/etc/profile配置生效

[root@hadoop0 test]# source /etc/profile 

4.6 輸入hadoop命令查看是否配置成功

[root@hadoop0 test]# hadoop version
Hadoop 2.6.5
…

#出現(xiàn)上述版本號(hào)信息表示環(huán)境變量配置成功

5 配置hadoop單機(jī)偽分布運(yùn)行環(huán)境(不使用yarn)

5.0 進(jìn)入$HADOOP_HOME/etc/hadoop/目錄

[root@hadoop0 ~]# cd /opt/test/hadoop-2.6.5/etc/hadoop/
[root@hadoop0 hadoop]#

5.1在hadoop-env.sh上配置JAVA_HOME

# 為$HADOOP_HOME/etc/hadoop/hadoop-env.sh添加如下內(nèi)容
[root@hadoop0 hadoop]# vim hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_67

5.2 配置core-site.xml

# 將$HADOOP_HOME/etc/hadoop/core-site.xml內(nèi)容替換如下
[root@hadoop0 hadoop]# vim core-site.xml
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop0:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/var/test/hadoop/local</value>
</property>
</configuration>

5.3 配置hdfs-site.xml

# 將$HADOOP_HOME/etc/hadoop/hdfs-site.xml內(nèi)容替換如下
[root@hadoop0 hadoop]# vim hdfs-site.xml
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop0:50090</value>
    </property>
</configuration>

5.4 配置slaves

5.4.1將原有內(nèi)容替換為當(dāng)前虛擬機(jī)名稱(chēng),單機(jī)偽分布只配置一臺(tái)
[root@hadoop0 hadoop]# vim slaves
hadoop0

5.4.2 配置完成后$HADOOP_HOME/etc/hadoop/slaves完整內(nèi)容如下
hadoop0

5.5 啟動(dòng)hadoop偽分布集群

5.5.1 首次啟動(dòng)格式化namenode
[root@hadoop0 ~]# hdfs namenode -format

5.5.2 啟動(dòng)集群
[root@hadoop0 ~]# start-dfs.sh

5.5.3 查看進(jìn)程
[root@hadoop0 ~]# jps
2051 SecondaryNameNode
1870 DataNode
1781 NameNode
2159 Jps

5.5.4 查看集群信息
[root@hadoop0 ~]# hadoop fs

5.5.5 查看根目錄下的所有內(nèi)容
[root@hadoop0 ~]# hdfs dfs -ls 

5.6 上傳文件測(cè)試單機(jī)偽分布集群(未使用yarn)

5.6.1 進(jìn)入$HADOOP_HOME/share/hadoop/mapreduce/目錄
[root@hadoop0 ~]# cd /opt/test/hadoop-2.6.5/share/hadoop/mapreduce/

5.6.2 為方便測(cè)試直接在mapreduce目錄生成測(cè)試文件
[root@hadoop0 mapreduce]# echo "hello world hello world hello" >> test.txt

# 或者使用語(yǔ)句生成包含更多內(nèi)容的文本
for i in `seq 100000`;do echo “hello world hello world $i” >>test.txt;done

5.6.3上傳test.txt文件到根目錄
5.6.3.1 默認(rèn)上傳
[root@hadoop0 mapreduce]# hadoop fs -put test.txt /

5.6.3.2 也可以指定blocksize
[root@hadoop0 mapreduce]# hdfs dfs -D dfs.blocksize=1048576 -put test.txt /

5.6.4 運(yùn)行wordcount測(cè)試程序
[root@hadoop0 mapreduce]# 
hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /test.txt /output

#其中output是在hdfs文件系統(tǒng)的根目錄下創(chuàng)建的輸出路徑

5.6.5 查看mapreduce運(yùn)行結(jié)果
[root@hadoop0 mapreduce]# hadoop dfs -text /output/part-*
hello   100003
world   200002
“hello  100000

6. 為hadoop單機(jī)偽分布添加yarn

6.0 進(jìn)入$HADOOP_HOME/etc/hadoop目錄

[root@hadoop0 ~]# cd /opt/test/hadoop-2.6.5/etc/hadoop/
[root@hadoop0 hadoop]

6.1 分別在mapred-env.sh, yarn-env.sh上配置JAVA_HOME

6.1.1 為$HADOOP_HOME/etc/hadoop/mapred-env.sh添加JAVA_HOME
[root@hadoop0 hadoop]# vim mapred-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_67

6.1.2 為$HADOOP_HOME/etc/hadoop/yarn-env.sh添加JAVA_HOME
[root@hadoop0 hadoop]# vim yarn-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_67

6.2 配置mapred-site.xml

6.2.1復(fù)制一份mapred-site.xml.template并命名為mapred-site.xml
[root@hadoop0 hadoop]# cp mapred-site.xml.template mapred-site.xml

6.2.2 將$HADOOP_HOME/etc/hadoop/mapred-site.xml內(nèi)容替換如下
[root@hadoop0 hadoop]# vim mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

6.3 配置yarn-site.xml

# 將$HADOOP_HOME/etc/hadoop/yarn-site.xml內(nèi)容替換如下
[root@hadoop0 hadoop]# vim yarn-site.xml
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

6.4 啟動(dòng)配置了yarn的單機(jī)偽分布集群

6.4.1 啟動(dòng)hdfs
[root@hadoop0 ~]# start-dfs.sh

6.4.2 查看進(jìn)程
[root@hadoop0 ~]# jps
2051 SecondaryNameNode
1870 DataNode
1781 NameNode
2159 Jps

6.4.3 啟動(dòng)yarn
[root@hadoop0 ~]# start-yarn.sh

6.4.4 查看進(jìn)程
[root@hadoop0 ~]# jps
2051 SecondaryNameNode
1870 DataNode
1781 NameNode
2650 Jps
2291 NodeManager
2203 ResourceManager

# 增加了NodeManager和ResourceManager兩個(gè)進(jìn)程

6.5 在運(yùn)行yarn的單機(jī)偽分布集群上測(cè)試wordcount程序

6.5.1 進(jìn)入$HADOOP_HOME/share/hadoop/mapreduce/目錄
[root@hadoop0 ~]# cd /opt/test/hadoop-2.6.5/share/hadoop/mapreduce/

6.5.2 運(yùn)行wordcount測(cè)試程序,輸出到/output2
[root@hadoop0 mapreduce]# 
hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /test.txt /output2
#運(yùn)行時(shí)會(huì)首先看到如下信息
INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032

6.5.3 查看mapreduce運(yùn)行結(jié)果
[root@hadoop0 mapreduce]# hadoop dfs -text /output2/part-*
hello   100003
world   200002
“hello  100000

參考資料:

a). Hadoop數(shù)據(jù)分析平臺(tái)實(shí)戰(zhàn)——010hadoop介紹安裝

后續(xù)步驟:

2). 第二階段:Hadoop完全分布式(full)

3). 第三階段:Hadoop高可用(HA)

4). 第四階段:Hadoop高可用+聯(lián)邦+視圖文件系統(tǒng)(HA+Federation+ViewFs)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容