Ubuntu从零安装 Hadoop And Spark
安裝 linux 以Ubuntu為例
選擇鏡像,虛擬機安裝
虛擬機下,直接安裝鏡像即可,選擇好自己的配置,一定要注意路徑名選好,而且和你虛擬機的名稱匹配,這里我的鏡像是 ubuntu-20.04.2.0-desktop-amd64.iso
切換一下中文
注意重啟之后,這一部分保留英文
安裝 VMTools
為了方便 復制粘貼,建議安裝 VMTools,這里不再給出如何安裝
提前準備工作
創建用戶
首先我們創建hadoop用戶,并將/bin/bash 作為他的 默認 shell,并設置他的密碼以及增加管理員權限
(CTRL + SHIFT + V 是linux 下的 粘貼快捷鍵)
設置成功后,我們退出,使用 hadoop 用戶登錄此linux系統
更新apt
sudo apt-get update安裝 Vim
vim 是 vi 的升級版,快捷好用,為了編輯文本,我們可以使用 vim,也可以使用 vi,或者是 gedit,看個人喜好
sudo apt-get install vim安裝 SSH
SSH 為 Secure Shell 的縮寫。是較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。
具體查看 SSH的內容可以直接去百度
從客戶端來看,SSH提供兩種級別的安全驗證。
第一種級別(基于口令的安全驗證)
只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密,但是不能保證你正在連接的服務器就是你想連接的服務器。可能會有別的服務器在冒充真正的服務器,也就是受到“中間人”這種方式的攻擊。
第二種級別(基于密匙的安全驗證)
需要依靠密匙,也就是你必須為自己創建一對密匙,并把公用密匙放在需要訪問的服務器上。如果你要連接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求之后,先在該服務器上你的主目錄下尋找你的公用密匙,然后把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密“質詢”(challenge)并把它發送給客戶端軟件。客戶端軟件收到“質詢”之后就可以用你的私人密匙解密再把它發送給服務器。
用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網絡上傳送口令。
第二種級別不僅加密所有傳送的數據,而且“中間人”這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登錄的過程可能需要10秒 [2] 。
集群、單節點模式都需要用到SSH登陸(類似于遠程登陸,你可以登錄某臺Linux電腦,并且在上面運行命令),Ubuntu 默認已安裝了 SSH client,此外還需要安裝 SSH server:
sudo apt-get install openssh-server安裝后,可以使用如下命令登陸本機:
localhost 等價于 127.0.0.1 本機 ip
輸入密碼之后便可以進入
但這樣登陸是需要每次輸入密碼的,我們需要配置成SSH無密碼登陸比較方便。
首先退出(使用exit 命令)剛才的 ssh,就回到了我們原先的終端窗口,然后利用 ssh-keygen 生成密鑰,并將密鑰加入到授權中:
exit # 退出剛才的 ssh localhost cd ~/.ssh/ # 若沒有該目錄,請先執行一次ssh localhost ssh-keygen -t rsa # 會有提示,都按回車就可以 cat id_rsa.pub >> authorized_keys # 加入授權
重新嘗試發現不需要密碼了
安裝 Hadoop 和 Java
Java
查看可用 java 版本
apt search openjdkapt安裝 open jdk,這里選擇 openjdk-14-jdk
sudo apt install openjdk-14-jdkjava --version 查看是否安裝成功
java --version配置java環境
下面我來介紹一下如何配置java 的環境
為方便,我們在 ~/.bashrc 中進行設置
修改home目錄下的 .bashrc 文件
.bashrc 文件主要保存著個人的一些個性化設置,如:命令別名、環境變量等。 參考中有其他修改方法。
首先,我們打開配置文件
gedit ~/.bashrc在配置文件中加入一行
export JAVA_HOME=/usr/lib/jvm/java-14-openjdk-amd64請注意,這部分 JAVA_HOME=的內容需要你個人去文件目錄中查看,畢竟下載的 openjdk版本不同
下面,我們讓配置生效,并且驗證配置是否成功
source ~/.bashrc # 使變量設置生效 echo $JAVA_HOME # 檢驗是否設置正確安裝 hadoop
在這里,我下載的是 hadoop-3.3.0.tar.gz,版本可以執行百度下載即可,選擇一個下載速度快的
首先,我們將文件解壓,到/usr/local 目錄下,重命名并修改用戶主,注意,選擇自己的 hadoop 版本號
cd ~/下載 sudo tar -zxvf ./hadoop-3.3.0.tar.gz -C /usr/local # 解壓到/usr/local中 cd /usr/local/ sudo mv ./hadoop-3.3.0/ ./hadoop # 將文件夾名改為hadoop sudo chown -R hadoop:hadoop ./hadoop # 修改文件權限hadoop單機測試
Hadoop 默認模式為非分布式模式,無需進行其他配置即可運行。非分布式即單 Java 進程,方便進行調試。現在我們可以執行例子來感受下 Hadoop 的運行。Hadoop 附帶了豐富的例子(運行 bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。在此我們選擇運行 grep 例子,即將 input 文件夾中的所有文件作為輸入,篩選當中符合正則表達式 dfs[a-z.]+ 的單詞并統計出現的次數,最后輸出結果到 output 文件夾中。 cd /usr/local/hadoop mkdir input cp ./etc/hadoop/*.xml input # 將配置文件作為輸入文件 ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+' cat ./output/* # 查看運行結果倘若提示 JAVA_HOME 未定義,你先 echo “$JAVA_HOME”,然后查看 ~/.bashrc 文件,以及 source ~/.bashrc 一下,再次輸出 $JAVA_HOME 是否可以
hadoop偽分布式配置
Hadoop 可以在單節點上以偽分布式的方式運行,Hadoop 進程以分離的 Java 進程來運行,節點既作為 NameNode 也作為 DataNode。
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,偽分布式需要修改2個配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每個配置以聲明 property 的 name 和 value 的方式來實現。
修改配置文件 core-site.xml (gedit /usr/local/hadoop/etc/hadoop/core-site.xml),將當中的
<configuration> </configuration>修改為下面配置:
<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>同樣的,修改配置文件 hdfs-site.xml:
<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>配置完成后,執行 namenode 的格式化:
bin/hdfs namenode -format注意
在這一步以及后面啟動 Hadoop 時若提示 Error: JAVA_HOME is not set and could not be found. 的錯誤,則需要在文件 ./etc/hadoop/hadoop-env.sh 中設置 JAVA_HOME 變量,即找到 export JAVA_HOME=${JAVA_HOME}這一行,改為 export JAVA_HOME=/usr/lib/jvm/java-14-openjdk-amd64 (就是之前設置的JAVA_HOME位置),再重新嘗試即可。
下面我們輸入命令,查看是否成功
./sbin/start-all.sh #開啟 jps最后需要關閉
./sbin/stop-all.sh # 關閉輸入命令后的運行效果如下
hadoop 偽分布式測試
注意測試的時候一定要打開 hadoop, 即運行 sbin/start-all.sh
運行完之后, sbin/stop-all.sh
鏈接
安裝 Spark,并使用PySpark測試
Spark的安裝
可以直接看這個參考網站,很合適
按照鏈接的做法
- 首先將下載好的 Spark 安裝包解壓至 /usr/local 的目錄下
- 然后修改 /usr/local/spark/conf 目錄下的配置文件
spark-env.sh
- 之后,我們修改環境變量
這里進行勘誤,應該在 hadoop 用戶下進行,否則修改的是 root 的配置文件,而不是我們 hadoop 用戶的配置文件!
- 最后我們運行測試一下
執行時會輸出非常多的運行信息,輸出結果不容易找到,可以通過 grep 命令進行過濾(命令中的 2>&1 可以將所有的信息都輸出到 stdout 中,否則由于輸出日志的性質,還是會輸出到屏幕中):
Spark的測試
運行的代碼
出現一個問題
原來是路徑寫錯了
參考鏈接
https://blog.csdn.net/qinzhaokun/article/details/47804923
http://dblab.xmu.edu.cn/blog/install-hadoop/
安裝java
百度百科
延伸閱讀 java 環境的兩種配置方法
總結
以上是生活随笔為你收集整理的Ubuntu从零安装 Hadoop And Spark的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java jvm目录,JVM(Java虚
- 下一篇: 虚拟机安装 服务器 Ubuntu Ser