Hadoop僞分佈式環境搭建

實驗題目:Hadoop單機僞分佈式環境搭建及WordCount程序測試

實驗硬件環境:

​ Intel i5-8250u 1.6GHz

​ RAM 8GB ddr4

軟件環境:

​ Ubuntu 18.04.1LTS,IDEA,Hadoop 2.7.7

實驗步驟:

​ 1、創建hadoop用戶(下面的操作均在hadoop用戶下完成)

useradd hadoop -s /bin/hash  #創建用戶名爲hadoop的用戶
passwd hadoop                #設置hadoop用戶的密碼
adduser hadoop sudo          #可選,爲了方便後面在hadoop用戶下的                                        環境配置

​ 2、安裝SSH並配置無密碼登錄

sudo apt-get install openssh-server

​ 安裝成功後,運行下列命令完成配置無密碼登錄

ssh localhost     #登錄ssh,要求輸入當前用戶的密碼
exit               #退出登錄
cd ~/.ssh/        #進入.ssh目錄
ssh-keygen -t rsa #生成祕鑰
cat ./id_rsa.put >> ./authorized_keys#加入授權

​ 完成配置,在嘗試登錄ssh可以直接免密登錄

​ 3、安裝JDK

​ 在bashrc文件中添加JDK安裝路徑

export JAVA_HOME=/usr/lib/jvm/jdk-11.0.2
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

​ 完成後使bashrc生效

source ~/.bashrc
java -version   #查看java版本

圖片描述

​ 4、安裝Hadoop 2.7.7

​ 從官網下載Hadoop2.7.7(不建議用Hadoop 3.*版本,問題多且論壇解決辦法少)

​ 將Hadoop文件解壓至/usr/local/hadoop下,配置Hadoop路徑

#bashrc後添加如下三行內容
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
#使bashrc生效
source ~/.bashrc
hadoop -version #查看hadoop是否安裝成功

圖片描述

5、修改配置文件

(1)修改hadoop-env.sh(/usr/local/hadoop/etc/hadoop/)

​ 主要更改JAVA_HOME

export JAVA_HOME=/usr/lib/jvm/jdk-11.0.2

(有的配置文件是$export JAVA_HOME=${JAVA_HOME}),可不更改

(2)修改core-site.xml(/usr/local/hadoop/etc/hadoop/)

<configuration>
<property>
    <name>hadoop.tmp.dir</name>
    <value>file:/usr/local/hadoop/tmp</value>
    <description>Abase for other temporary directories</description>
</property>
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
</property>
</configuration>

(3)修改hdfs-site.xml(/usr/local/hadoop/etc/hadoop/)

<configuration>
  <property>
      <name>dfs.replication</name>
      <value>1</value>
  </property>
  <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:/usr/local/hadoop/tmp/dfs/name</value>
  </property>  
    <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:/usr/local/hadoop/tmp/dfs/data</value>
  </property>
</configuration>

(4)配置完成,格式化Namenode

cd /usr/local/hadoop/bin
./hdfs namenode -format

看到 Storage directory ××× has been successfully formatted. Exiting with status 0表示格式化正確

(5)開啓守護進程

/usr/local/hadoop/sbin/start-dfs.sh   #啓動
/usr/local/hadoop/sbin/stop-dfs.sh    #關閉

啓動完成通過jps查看java進程的狀態

圖片描述

至此,單機僞分佈式集羣配置完畢

5、在IDEA上編寫並運行MapReduce程序

(1)創建一個Maven項目

(2)在新項目中,依次選擇File->Project Structure,在新窗口中選擇Project Setting下的Modules,添加一個Module,名稱隨機。在右側窗口中選擇Dependencies頁面,添加JARs or directories,添加的文件主要包括/usr/local/hadoop/share/hadoop/common,

/usr/local/hadoop/share/hadoop/common/lib,

/usr/local/hadoop/share/hadoop/hdfs,

/usr/local/hadoop/share/hadoop/hdfs/lib,

/usr/local/hadoop/share/hadoop/mapreduce,

/usr/local/hadoop/share/hadoop/mapreduce/lib,

/usr/local/hadoop/share/hadoop/tools/lib,

/usr/local/hadoop/share/hadoop/yar/lib下的jar包(建議全部添加)

6、編寫MapReduce程序

7、單機運行MapReduce程序

​ (1)依次點擊Run->Edit Configuration,增加一個Application的配置,名稱隨意,MainClass爲MapReduce的主程序,Program arguments爲運行程序所需要的參數也就是程序的input目錄和output目錄

​ (2)點擊運行即可在單機情況下運行MapReduce程序(在該項目的根目錄下會由程序自己創建output文件夾,不需要提前創建,否則會出錯)

對"The Story of My Life by Helen Keller.txt"進行WordCount部分結果顯示

圖片描述

8、利用僞分佈式集羣運行MapReduce程序

(1)利用IDEA生成jar包

​ 依次點擊File->Project Structure,選擇Project Setting 下的Artifacts,添加一個JAR。點擊OK。

​ 主界面依次點擊就Build->Build Artifacts->Build,IDEA將在根目錄下生成一個out文件夾,在/out/artifacts/WordCount中爲打包好的jar包。

(2)將數據文件上傳到HDFS

​ 首先接觸HDFS的安全模式

hdfs dfsadmin -safemode leave

​ 查看/user目錄下的文件

hdfs dfs -ls /user
#如果提示沒有該文件夾可以自己創建
hdfs dfs -mkdir /user

​ 利用-put命令將本地數據文件上傳到HDFS

hdfs dfs -mkdir /user/hadoop
hdfs dfs -mkdir /user/hadoop/input#創建input目錄
hdfs dfs -put /本地文件路徑 /user/input   #上傳文件

​ 將IDEA產生的jar包copy到hadoop目錄下,利用hadoop運行該jar包

hadoop jar WordCount.jar WordCount input output

​ 運行結束,HDFS產生/user/hadoop/output目錄,存放程序運行狀態和結果

hdfs dfs -ls /user/hadoop/output

圖片描述

​ 利用HDFS指令 -copyToLocal可以下載part-r-00000文件查看程序運行結果。

參考文檔:
hadoop搭建具體步驟——第一章(僞分佈式)[https://zhuanlan.zhihu.com/p/...]

SSH配置免密碼登錄後,仍需要輸入密碼——解決方案[https://blog.csdn.net/xiaoyi3...]

《深入理解大數據——大數據處理與編程實踐》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章