1 僞分佈式模式介紹
1.特點
- 在一臺機器上安裝,使用的是分佈式思想,即分佈式文件系統,非本地文件系統。
- Hdfs涉及到的相關守護進程(namenode,datanode,secondarynamenode)都運行在一臺機器上,
都是獨立的java進程。
2. 用途
比Standalone mode 多了代碼調試功能,允許檢查內存使用情況,HDFS輸入輸出,以及其他的守
護進程交互。
2 平臺軟件說明
- 操作系統: win10/win7
- 虛擬軟件: VMware14
- 虛擬機: CentOS_7.7_64_master 192.168.10.200
- 軟件包存儲路徑: /opt/software/
- 軟件安裝路徑: /opt/apps/
- Jdk: jdk-8u221-linux-x64.tar.gz
- Hadoop: hadoop-2.7.6.tar.gz
- 用戶: root
3 僞分佈式環境需求及搭建:
3.1 環境需求:
--1. 確保防火牆是關閉的.
--2. NAT模式和靜態IP的確定 (192.168.10.200)
--3. 確保/etc/hosts文件裏 ip和hostname的映射關係
--4. 確保免密登陸localhost有效
--5. jdk和hadoop的環境變量配置
3.2 防火牆關閉確認
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld
#最好也把selinux關閉掉,這是linux系統的一個安全機制,進入文件中將SELINUX設置爲disabled
[root@master ~]# vi /etc/selinux/config
.........
SELINUX=disabled
.........
3.3 配置/etc/hosts文件
-- 進入hosts文件,配置一下ip和hostname
[root@master ~]# sudo vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.81.200 master <=添加本機的靜態IP和本機的主機名之間的映射關係
3.4 確保ssh對localhost的免密登陸認證有效
-1. 使用rsa加密技術,生成公鑰和私鑰。一路回車即可
[root@master ~]# ssh-keygen -t rsa
-2. 進入~/.ssh目錄下,將id_rsa.pub複製一份文件,文件名爲authorized_keys。保證此文件的權限是600
[root@master ~]# cd ~/.ssh
[root@master .ssh]# cp id_rsa.pub authorized_keys
或者使用ssh-copy-id命令
[root@master .ssh]# ssh-copy-id -i id_ras.pub root@master
-3. 進行驗證:
[hadoop@master .ssh]# ssh localhost
#輸入yes後,不提示輸入密碼就對了
3.5 安裝Jdk和Hadoop,配置相關環境變量
-1. 上傳和解壓兩個軟件包
[root@master ~]# cd /opt/software/
[root@master software]# tar -zxvf jdk-8u221-linux-x64.tar.gz -C /opt/apps/
[root@master software]# tar -zxvf hadoop-2.7.6.tar.gz -C /opt/apps/
-2. 進入apps裏,給兩個軟件更名
[root@master software]# cd /opt/apps/
[root@master apps]# mv jdk1.8.0_221/ jdk
[root@master apps]# mv hadoop-2.7.6/ hadoop
-3. 配置環境變量
[hadoop@master apps]# vi /etc/profile
.....省略...........
#java environment
export JAVA_HOME=/opt/apps/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
#hadoop environment
export HADOOP_HOME=/opt/apps/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
4 僞分佈式相關文件的配置
4.1 core-site.xml的配置
[root@master ~]# cd $HADOOP_HOME/etc/haoop
[root@master hadoop]# vi core-site.xml
<configuration>
<!-- 配置分佈式文件系統的schema和ip以及port,默認8020-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
擴展: hadoop1.x的默認端口是9000,hadoop2.x的默認端口是8020,使用哪一個都可以
4.2 hdfs-site.xml的配置:
[root@master hadoop]# vi hdfs-site.xml
<configuration>
<!-- 配置副本數,注意,僞分佈模式只能是1。-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
4.3 hadoop-env.sh的配置:指定jdk的環境
[root@master hadoop]# vi hadoop-env.sh
................
# The java implementation to use.
export JAVA_HOME=/opt/apps/jdk
..................
5 格式化NameNode
5.1 格式化命令
[root@master hadoop]# hdfs namenode -format
5.2 格式化的日誌解讀
6 啓動HDFS
6.1 啓動僞分佈式
[root@master hadoop]# start-dfs.sh
6.2 啓動滾動信息說明
6.3 jps命令查看守護進程
從上圖我們可以看到,啓動腳本會開啓分佈式文件系統上的相關進程:
namenode
datanode
secondary namenode
7 WebUI_50070
可以在瀏覽器上輸入:192.168.10.200:50070 來查看一下僞分佈式集羣的信息
--1. 瀏覽一下頁面上提示的ClusterID,BlockPoolID
--2. 查看一下活躍節點(Live Nodes)的個數,應該是1個
8 程序案例演示:wordcount程序
8.1 準備要統計的兩個文件,存儲到~/data/下
--1. 創建data目錄
[root@master hadoop]# mkdir ~/data
--2. 將以下兩個文件上傳到data目錄下
- poetry1.txt
- poetry2.txt
8.2 在hdfs上創建存儲目錄
[root@master hadoop]# hdfs dfs -mkdir /input
8.3 將本地文件系統上的上傳到hdfs上,並在web上查看一下
[root@master hadoop]$ hdfs dfs -put ~/data/poetry* /input/
4.8.4 運行自帶的單詞統計程序wordcount
[root@master hadoop]# cd $HADOOP_HOME
[root@master hadoop]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount /input /out
效果如下:
8.5 查看webui
8.6 查看part-r-00000文件
[root@master hadoop]# hdfs dfs -cat /out/part-r-00000