一、測試環境準備
由於個人硬件環境的限制,在測試過程中我是以VMware開虛擬機來替代真實的機器,宿主機和虛擬機配置如下:
宿主機:
CPU: Intel i5-3470 CPU 3.20GHz 內存: 8.00 GB 操作系統: Windows 7 旗艦版 (64位)
虛擬機:
操作系統: Centos 6.8 x86_64 內存: 2.00 GB CPU核數: 1 網絡模式: host-only
在準備好Linux環境之後,下面進行一些前期的準備工作,主要包括虛擬機網絡模式設置、修改Linux主機名、修改IP、修改主機名和IP的映射關係以及關閉防火牆,下面一一介紹具體操作步驟:
1. 修改虛擬機網絡模式
在測試過程中爲方便操作Linux虛擬機,這裏我們把虛擬機與宿主機的網絡連接方式改爲host-only模式(這裏虛擬機不需要連接外網),當然選擇NAT、橋接模式也是可以的。具體的設置方式爲:
(1). 點擊VMware快捷方式,右鍵打開文件所在位置 -> 雙擊vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 設置網段:192.168.33.0 子網掩碼:255.255.255.0 -> apply -> ok
(2). 回到windows --> 打開網絡和共享中心 -> 更改適配器設置 -> 右鍵VMnet1 -> 屬性 -> 雙擊IPv4 -> 設置windows的IP:192.168.33.10 子網掩碼:255.255.255.0 -> 點擊確定
(3). 在虛擬軟件上 --My Computer -> 選中虛擬機 -> 右鍵 -> settings -> network adapter -> host only -> ok
當然修改虛擬機網絡的方式有好多種,只要配置連接方式爲host-only,設置好相應的IP就行了,這裏我採用的是192.168.33.0網段,連接Windows一端的IP我設置成了192.168.33.10,Linux自身的IP設置爲192.168.33.100,如有疑問也可以參考其他文章進行操作。
2. 修改Linux主機名
爲了操作方便,這裏我們修改一下Linux主機名。設置方式爲:
[hadoop@server ~]$ sudo vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=server.chargehadoop.com
3. 修改Linux自身IP
修改Linux環境IP,有兩種方式,喜歡使用圖形界面操作的可以選擇方式一,對於那些高大上的熟悉命令行操作的朋友可以選擇方式二(個人認爲,玩Linux還是推薦命令行模式比較好)。
方式一:通過Linux圖形界面進行修改
進入Linux圖形界面 -> 右鍵點擊右上方的兩個小電腦 -> 點擊Edit connections -> 選中當前網絡System eth0 -> 點擊edit按鈕 -> 選擇IPv4 -> method選擇爲manual -> 點擊add按鈕 -> 添加IP:192.168.33.100 子網掩碼:255.255.255.0 網關:192.168.33.1 -> apply
方式二:修改配置文件方式(###代表修改的部分,其他的可以不變)
[hadoop@server ~]$ sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static" ###
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR="192.168.33.100" ###
NETMASK="255.255.255.0" ###
GATEWAY="192.168.33.1" ###
修改完成後,重啓網絡,sudo service network restart,看到一切OK說明網絡設置成功,如果出現Feild刪除網絡連接再進行上述配置(這時候圖形模式就體現優勢了),最後通過ping進行驗證是否設置成功。
4. 修改主機名和IP的映射關係
[hadoop@server ~]$ sudo vim /etc/hosts
192.168.33.100 server.chargehadoop.com
5. 關閉防火牆
#查看防火牆狀態
[hadoop@server ~]$ sudo service iptables status
#關閉防火牆
[hadoop@server ~]$ sudo service iptables stop
#查看防火牆開機啓動狀態
[hadoop@server ~]$ sudo chkconfig iptables --list
#關閉防火牆開機啓動
[hadoop@server ~]$ sudo chkconfig iptables off
6. 配置ssh免登陸
生成ssh免登陸密鑰
cd ~,進入到我的home目錄
[hadoop@server ~]$ cd .ssh/
ssh-keygen -t rsa (四個回車)
執行完這個命令後,會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)
將公鑰拷貝到要免登陸的機器上
[hadoop@server ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
或
[hadoop@server ~]$ ssh-copy-id -i localhost
7. 重啓Linux
[hadoop@server ~]$ sudo reboot
到此,安裝Hadoop的準備工作已經完畢,下面分析Hadoop僞分佈式配置的詳細過程。
二、安裝jdk
1. 上傳jdk安裝包
到oracle官網http://www.oracle.com/technetwork/java/javase/downloads/index.html下載一個相對應的jdk安裝包,這裏使用的是jdk1.8.0_121 x64 linux版本,上傳到Linux虛擬機中。
2. 解壓jdk
#創建文件夾
[hadoop@server ~]$ sudo mkdir /usr/java
#解壓
[hadoop@server ~]$ sudo tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/java/
3. 將java添加到環境變量中
[hadoop@server ~]$ vim /etc/profile
#在文件最後添加
export JAVA_HOME=/usr/java/jdk1.8.0_121
export PATH=$PATH:$JAVA_HOME/bin
#刷新配置
[hadoop@server ~]$ source /etc/profile
三、安裝Hadoop
1. 上傳hadoop安裝包
到Hadoop官網http://mirrors.cnnic.cn/apache/hadoop/common/下載Hadoop2.7.4安裝包,上傳Hadoop2.7.4.tar.gz文件到虛擬機中。
2. 解壓hadoop安裝包
[hadoop@server ~]$ sudo mkdir -p /opt/modules/hadoop
更改目錄的屬主爲hadoop用戶
[hadoop@server ~]$ chown -R hadoop:hadoop /opt/modules/hadoop
#解壓到/opt/modules/hadoop目錄下
[hadoop@server ~]$ tar -zxvf hadoop-2.7.4.tar.gz -C /opt/modules/hadoop
3. 修改配置文件(這裏需要修改5個)
第一個:配置hadoop-env.sh、mapred-env.sh、yarn-env.sh的JAVA_HOME設置
找到對應的JAVA_HOME設置項,更改爲:
export JAVA_HOME=/usr/java/jdk1.8.0_121
第二個:core-site.xml
<configuration>
<!-- 指定HDFS(namenode)的通信地址 -->
<property>
<name>fs.defaultFS</name>
<!--hadoop2.x以後版本namenode的rpc端口一般都用8020,1.x默認使用9000-->
<value>hdfs://server.chargehadoop.com:8020</value>
</property>
<!-- 指定hadoop運行時產生文件的存儲路徑 -->
<property>
<name>hadoop.tmp.dir</name>
<!--需要提前創建好此目錄-->
<value>/opt/data/hadoop/tmp</value>
</property>
</configuration>
第三個:hdfs-site.xml
<configuration>
<!-- 設置hdfs副本數量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
第四個:mapred-site.xml.template 需要重命名: mv mapred-site.xml.template mapred-site.xml
<configuration>
<!-- 通知框架MR使用YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
第五個:yarn-site.xml
<configuration>
<!-- reducer取數據的方式是mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
4. 將hadoop添加到環境變量
[hadoop@server hadoop-2.7.4]$ vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_121
export HADOOP_HOME=/opt/modules/hadoop/hadoop-2.7.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
[hadoop@server hadoop-2.7.4]$ source /etc/profile
5. 格式化HDFS(namenode)第一次使用時要格式化
[hadoop@server hadoop-2.7.4]$ bin/hdfs namenode -format
6. 啓動hadoop
先啓動HDFS
1) 先啓動namenode:
[hadoop@server hadoop-2.7.4]$ sbin/hadoop-daemon.sh start namenode
2) 接着啓動datanode:
[hadoop@server hadoop-2.7.4]$ sbin/hadoop-daemon.sh start datanode
再啓動YARN
1) 先啓動ResourceManager:
[hadoop@server hadoop-2.7.4]$ sbin/yarn-daemon.sh start resourcemanager
2) 接着啓動NodeManager:
[hadoop@server hadoop-2.7.4]$ sbin/yarn-daemon.sh start nodemanager
7. 驗證是否啓動成功
[hadoop@server ~]$ jps
2369 NameNode
3010 ResourceManager
4854 Jps
2456 DataNode
3259 NodeManager
如果安裝成功,通過jps命令可以看到以上四個java進程。同時可以通過hadoop自帶的管理界面驗證服務是否成功。
http://192.168.33.100:50070 (HDFS管理界面)
http://192.168.33.100:8088 (MR管理界面)
到此,hadoop2.7.4僞分佈式搭建已經完成,大家可以用一下操作進行驗證。
1. 驗證HDFS
向hdfs上傳一個文件,然後查看hdfs中是否存在
[hadoop@server hadoop-2.7.4]$ bin/hdfs dfs -mkdir -p /user/hadoop/conf
[hadoop@server hadoop-2.7.4]$ bin/hdfs dfs -put etc/hadoop/core-site.xml /user/hadoop/conf
[hadoop@server hadoop-2.7.4]$ bin/hdfs dfs -ls /user/hadoop/conf
2. 驗證YARN
運行一下hadoop提供的demo中的WordCount程序,統計每個單詞出現的次數
yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar wordcount input output
注意,這裏需要事先創建hdfs上的input目錄,並將準備好的文件上傳到此目錄下,並且output目錄必須不存在,否則運行失敗。
[hadoop@server hadoop-2.7.4]$ cd /opt/data/hadoop/data/
[hadoop@server data]$ vim wc.input
hadoop spark
hadoop hive
mapreduce hive
hadoop yarn
hello world
hello hadoop
[hadoop@server hadoop-2.7.4]$ cd /opt/modules/hadoop/hadoop-2.7.4
[hadoop@server hadoop-2.7.4]$ bin/hdfs dfs -mkdir -p /user/hadoop/wordcount/input
[hadoop@server hadoop-2.7.4]$ bin/hdfs dfs -put /opt/data/hadoop/data/wc.input /user/hadoop/wordcount/output
[hadoop@server hadoop-2.7.4]$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar wordcount /user/hadoop/wordcount/input /user/hadoop/wordcount/output
等待運行完成可以查看運行結果:
[hadoop@server hadoop-2.7.4]$ bin/hdfs dfs -ls /user/hadoop/wordcount/output
運行結果保存在part-r-00000中,可以通過以下命令查看具體結果
[hadoop@server hadoop-2.7.4]$ bin/hdfs dfs -text /user/hadoop/wordcount/output/pa*
OK,至此,hadoophadoop2.7.4僞分佈式搭建已經完成,大功告成!!!