Ubuntu22系統部署Hadoop3.3.6環境

看boss有招大數據的講師,好奇看了下,現在大學都講大數據了,現在是越來越普及。昨天弄了一個雲服務器部署了下Hadoop,雖然也是參考網上教程部署,但過程中還是出了不少問題。想着把部署過程完整記錄下,所以我就把部署好的實例釋放了又實例化了一臺新的雲服務器重新部署了下,如果是在我本地安裝報錯了還得重新安裝那就耗時耗力,雲服務器直接釋放就好了。主要參考文檔:https://zhuanlan.zhihu.com/p/503707617。

一、系統軟件

Ubuntu 22.04 64位  Hadoop 3.3.6  Java 8

二、更新系統軟件

sudo apt-get update

 三、安裝 ssh 和 ssh 服務器

sudo apt-get install openssh-server

 四、檢查ssh是否安裝成功

ps -e|grep ssh

 五、安裝pdsh

sudo apt-get install pdsh

六、在/etc/profile和文件下增加下面代碼

export PDSH_RCMD_TYPE=ssh

 七、配置 ssh 密鑰

命令行輸入下面代碼

ssh-keygen -t rsa -P ""

 八、生成的密鑰拷貝到授權文件中

可以看到密鑰這些保存的位置在/root下面,跳轉到/root目錄下,輸入ls -a可以看到.ssh文件

在.ssh目錄下執行命令cat id_rsa.pub >>authorized_keys

九、檢驗ssh

ssh localhost

 十、安裝Java

sudo apt-get install openjdk-8-jdk

安裝 Java 8後檢測下版本java -version,然後在可以檢查下java home的路徑,在本機java home爲/usr/lib/jvm/java-1.8.0-openjdk-amd64

十一、下載Hadoop並解壓

這裏我是在我本地下載好通過xftp上傳到雲服務器上,然後再解壓修改名稱。

在/home目錄下新建Hadoop目錄,下載hadoop壓縮包,xftp上傳到/home/Hadoop,
然後解壓tar xzf hadoop-3.3.6.tar.gz,解壓後使用mv hadoop-3.3.6 hadoop修改文件夾名改爲hadoop,hadoop安裝目錄如下圖所示。

十二.配置JAVA_HOME

在/home/Hadoop/hadoop/etc/hadoop目錄下找到hadoop-env.sh,vim hadoop-env.sh,配置java home:/usr/lib/jvm/java-1.8.0-openjdk-amd64,如下圖可以看到
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64。注意加export,不然後面提示找不到Java home。

 十三、修改core-site.xml

在/home/Hadoop/hadoop/etc/hadoop目錄下,vim core-site.xml,修改core-site.xml增加配置

<configuration>
 <property>
 <name>fs.defaultFS</name>
 <value>hdfs://localhost:9000</value>
 </property>
 <property>
 <name>hadoop.tmp.dir</name>
 <value>/home/Hadoop/hadooptest/hdata</value>
 </property>
 </configuration>

 十四、修改hdfs-site.xml

在/home/Hadoop/hadoop/etc/hadoop目錄下,vim hdfs-site.xml,修改hdfs-site.xml增加配置

<configuration>
 <property>
 <name>dfs.replication</name>
 <value>1</value>
 </property>
</configuration>

 十五、修改mapred-site.xml

在/home/Hadoop/hadoop/etc/hadoop目錄下,vim mapred-site.xml,修改mapred-site.xml增加配置,注意下面路徑,配置的是hadoop的安裝目錄

 <configuration>
 <property>
 <name>mapreduce.framework.name</name>
 <value>yarn</value>
 </property>
 <property>
 <name>yarn.app.mapreduce.am.env</name>
 <value>HADOOP_MAPRED_HOME=/home/Hadoop/hadoop</value>
 </property>
 <property>
 <name>mapreduce.map.env</name>
 <value>HADOOP_MAPRED_HOME=/home/Hadoop/hadoop</value>
 </property>
 <property>
 <name>mapreduce.reduce.env</name>
 <value>HADOOP_MAPRED_HOME=/home/Hadoop/hadoop</value>
 </property>
 </configuration>

 十六、修改yarn-site.xml

在/home/Hadoop/hadoop/etc/hadoop目錄下,vim yarn-site.xml,修改yarn-site.xml增加配置

<configuration>
<!-- Site specific YARN configuration properties -->
 <property>
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
 </property>
 <property>
 <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
 <value>org.apache.hadoop.mapred.ShuffleHandler</value>
 </property>
</configuration>

十七、修改bash.bashrc文件

在系統/etc目錄下找到bash.bashrc,vim bash.bashrc,增加如下配置,然後使用source bash.bashrc使其生效

 export HADOOP_HOME="/home/Hadoop/hadoop"
 export PATH=$PATH:$HADOOP_HOME/bin
 export PATH=$PATH:$HADOOP_HOME/sbin  
 export HADOOP_MAPRED_HOME=${HADOOP_HOME}
 export HADOOP_COMMON_HOME=${HADOOP_HOME}
 export HADOOP_HDFS_HOME=${HADOOP_HOME}
 export YARN_HOME=${HADOOP_HOME}

十八、格式化hdfs文件系統

hdfs namenode -format

我第一次安裝的時候提示找不到hdfs命令,安裝配置我也是參考的知乎https://zhuanlan.zhihu.com/p/503707617這篇文章,我第一次把export PDSH_RCMD_TYPE=ssh配置在了bash.bashrc文件下,沒在/etc/profile文件配置,後來在/etc/profile配置後可以執行格式化命令了。這次部署未在bash.bashrc文件配置,只是在/etc/profile文件配置。

No command 'hdfs' found, did you mean: 
    Command 'hfs' from package 'hfsutils-tcltk' (universe) 
    Command 'hdfls' from package 'hdf4-tools' (universe) 
    hdfs: command not found

十九、啓動HDFS服務

在/home/Hadoop/hadoop/sbin目錄下執行start-dfs.sh命令,報如下錯誤

網上搜的解決方法則需要在修改/home/Hadoop/hadoop/sbin下的4個文件:start-dfs.sh、stop-dfs.sh、start-yarn.sh、stop-yarn.sh或者在hadoop-env.sh增加配置。在4個文件增加配置我這邊配置後無效,就改成了在hadoop-env.sh文件中增加配置
在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

 最後改成在hadoop-env.sh文件中增加配置,重新執行start-dfs.sh命令,如下圖則啓動成功。

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

 二十、瀏覽器輸入url驗證

在瀏覽器輸入ip:9870驗證是否成功。

 二十一、啓動yarn服務

在sbin目錄下執行start-yarn.sh命令啓動yarn服務。在瀏覽器輸入ip:8088驗證。

 

二十二、遇到的問題

1.刪除文件報錯: Permission denied: user=dr.who, access=WRITE, inode="/input":root:supergroup:drwxr-xr-x

解決方法:在hadoop目錄找到etc/hadoop/core-site.xml,增加下面屬性配置

  <property>
   <name>hadoop.http.staticuser.user</name>
   <value>root</value>
 </property>

2.瀏覽器打開hdfs文件words.txt時報下面錯誤

Couldn't preview the file. NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'http://izbp158j7mgbfo44t5den7z:9864/webhdfs/v1/input/words.txt?op=OPEN&namenoderpcaddress=localhost:9000&offset=0&_=1694319006465'.

解決方法:

1.在本地電腦C:\Windows\System32\drivers\etc下修改host文件,增加雲服務器ip 服務器名映射。

120.26.86.118 izbp158j7mgbfo44t5den7z

2.在hadoop下面的etc目錄找到 hdfs-site.xml,增加下面屬性配置。

 <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
 </property>

 3.在雲服務器/ect/hosts文件增加配置

120.26.86.118 iZbp158j7mgbfo44t5den7Z

4.保存後重啓hadoop服務器。

下圖可以看到打開words.txt裏面的內容了。

二十三、測試

在二十二步驟中可以看到已把words.txt文件放到了hdfs的/input目錄下,在雲服務器中打開hadoop目錄下的share目錄,/home/Hadoop/hadoop/share,之後再下面目錄找到mapreduce目錄,具體目錄爲:/home/Hadoop/hadoop/share/hadoop/mapreduce,執行命令: hadoop jar hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output,這裏的/input /output爲hdfs目錄。執行後會出現下面的界面。

在瀏覽器中會顯示output目錄,打開目錄下的part-r-00000文件可以看到統計的結果。

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