Hadoop〖一〗Hadoop3.2.1版本本地安裝僞集羣實現詞頻統計案例
一. 安裝Hadoop在虛擬機上
1.1 準備一臺虛擬機
我這邊準備的是Centos7版本的虛擬機
爲了以防萬一,可以在不確定虛擬機是否崩盤的情況下,克隆一下虛擬機,右鍵虛擬機打開管理點克隆~
1.2 安裝JDK
我在桌面準備了這次安裝的所有壓縮文件,因爲Hadoop依靠於JDK環境,所以我們首先安裝JDK1.8
首先用我們的xftp工具把JDK拷貝到 /usr/java/ 路徑下,然後使用
tar -zxvf jdk-8u231-linux-i586.tar.gz
將壓縮包解壓到當前目錄,注意虛擬機自帶OpenJDK的需要提前卸載以免安裝錯誤
解壓完成後進入JDK目錄(藍色的)
這裏我們打印出來當前目錄: /usr/java/jdk1.8.0_231
cd jdk1.8.0_231/
[root@kaikai jdk1.8.0_231]# pwd
/usr/java/jdk1.8.0_231
提前進入root權限 su 命令輸入密碼,編輯環境變量,
vim /etc/profile
先按i進入insert模式,我們在如下 unset -f pathmunge 添加如下三條 第一行爲JDK的地址
unset i
unset -f pathmunge
#jdk
export JAVA_HOME=/usr/java/jdk1.8.0_231
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
修改完後,按ESC退出編輯模式再按shift+: 輸入wq保存並退出
緊接着我們在命令行輸入來使我們的配置文件生效,每配置一次環境變量就得刷新一次使生效
source /etc/profile
接着我們來驗證一下jdk安裝成功沒,輸入
[root@kaikai jdk1.8.0_231]# java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) Server VM (build 25.231-b11, mixed mode)
出現以上即可證明JDK安裝成功~
1.3 安裝Hadoop
首先把Hadoop安裝包copy到虛擬機目錄下
[root@kaikai jdk1.8.0_231] cd /opt/hadoop/
解壓Hadoop安裝包
[root@kaikai hadoop] tar -zxvf hadoop-3.2.1.tar.gz
進入Hadoop查看當目錄
[root@kaikai hadoop-3.2.1] pwd
/opt/hadoop/hadoop-3.2.1
配置環境變量
[root@kaikai hadoop-3.2.1]# vim /etc/profile
在 HADOOP_HOME 後面填上你自己安裝的hadoop目錄,剛用pwd查看過的
#hadoop
export HADOOP_HOME=/opt/hadoop/hadoop-3.2.1
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使配置生效
[root@kaikai hadoop-3.2.1] source /etc/profile
判斷是否安裝成功
[root@kaikai hadoop-3.2.1] hadoop version
Hadoop 3.2.1
Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r b3cbbb467e22ea829b3808f4b7b01d07e0bf3842
Compiled by rohithsharmaks on 2019-09-10T15:56Z
Compiled with protoc 2.5.0
From source with checksum 776eaf9eee9c0ffc370bcbc1888737
This command was run using /opt/hadoop/hadoop-3.2.1/share/hadoop/common/hadoop-common-3.2.1.jar
出現版本信息,說明成功
二. 接下來進行配置僞分佈式(上面的Hadoop只是單機模式)
2.1 創建文件夾
創建以下幾個文件夾
/opt/hadoop/tmp
/opt/hadoop/hdfs/name
/opt/hadoop/hdfs/data
2.2 修改hadoop配置文件
找到如下目錄,進入
[root@kaikai hadoop] pwd
/opt/hadoop/hadoop-3.2.1/etc/hadoop
輸入 vim core-site.xml 修改配置
<configuration>
<!--指定fs的缺省名稱-->
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<!--指定HDFS的(NameNode)的缺省路徑地址,localhost:是計算機名,也可以是ip地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!-- 指定hadoop運行時產生文件的存儲目錄(以個人爲準) -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
</configuration>
輸入 vim hdfs-site.xml 修改配置
<configuration>
<!-- 指定HDFS副本的數量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/opt/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/opt/hadoop/hdfs/data</value>
</property>
</configuration>
etc/hadoop目錄下查看是否有配置文件mapred-site.xml。目錄下默認情況下沒有該文件,可通過執行如下命令:cp mapred-site.xml.template mapred-site.xml修改一個文件的命名,然後執行編輯文件命令:gedit mapred-site.xml並修改該文件內容:
HADOOP_MAPRED_HOME= 後面配置的是Hadoop目錄,就是一開始Hadoop的環境變量
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/opt/hadoop/hadoop-3.2.1</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/opt/hadoop/hadoop-3.2.1</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/opt/hadoop/hadoop-3.2.1</value>
</property>
</configuration>
在etc/hadoop目錄下執行vim yarn-site.xml修改配置
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
2.3 啓動Hadoop
第一次啓動時需要格式化namenode
[root@kaikai hadoop] hdfs namenode -format
進入如下目錄,修改啓動配置
[root@kaikai sbin] pwd
/opt/hadoop/hadoop-3.2.1/sbin
將start-dfs.sh,stop-dfs.sh兩個文件頂部添加以下參數
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
start-yarn.sh,stop-yarn.sh頂部也需添加以下
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
一鍵啓動命令
[root@kaikai sbin] ./start-all.sh
如下圖正自啓動
[root@kaikai sbin] ./start-all.sh
WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.
Starting namenodes on [localhost]
Last login: Sat Feb 29 14:42:15 CST 2020 on pts/1
Starting datanodes
Last login: Sat Feb 29 19:48:02 CST 2020 on pts/1
Starting secondary namenodes [kaikai.com]
Last login: Sat Feb 29 19:48:05 CST 2020 on pts/1
2020-02-29 19:48:25,974 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting resourcemanager
Last login: Sat Feb 29 19:48:16 CST 2020 on pts/1
Starting nodemanagers
Last login: Sat Feb 29 19:48:26 CST 2020 on pts/1
驗證啓動成功
命令行輸入jps出現下面就是啓動成功了!
[root@kaikai sbin] jps
8898 NodeManager
8724 ResourceManager
9285 Jps
8122 DataNode
7947 NameNode
8364 SecondaryNameNode
2.4 訪問UI界面
命令行輸入如下,找到虛擬機的IP地址,若是服務器要用公網IP
[root@kaikai sbin] ifconfig
瀏覽器中輸入訪問
http://192.168.125.119:9870
UI界面出現!
這樣我們大功告成,僞分佈式已經安裝完成!
三. 實現WordCount案例(詞頻統計)
3.1 詞頻統計實現
-
Hadoop 的計算需要通過MapReduced來實現,可以通過編寫Java程序,將功能打成jar包來執行。所以如果有良好的Java基礎,編寫MR程序自然會容易很多。
-
我們這裏用自帶的示例程序來運行wordcount,從而來演示Hadoop的功能。
打開我們MapReduced目錄
cd /opt/hadoop/hadoop-3.2.1/share/hadoop/mapreduce/
下面就是我們wordcount的jar包我們需要運行起來
3.2 將測試文本拖進hdfs
找到下面目錄的LICENSE.txt
執行下面語句
hdfs dfs -put LICENSE.txt /data/wordcount/LICENSE.txt
檢查一下測試文件在裏面沒
hdfs dfs -ls -R /
3.3 執行案例jar包
命令行輸入(在mapreduce目錄下)
[root@kaikai mapreduce] hadoop jar hadoop-mapreduce-examples-3.2.1.jar wordcount /data/wordcount/LICENSE.txt output
最終我們在out目錄下看到執行過的輸出文件
打開輸出文件
[root@kaikai mapreduce] hdfs dfs -cat /user/root/output/part-r-00000
案例實現完成~