由于小編在本學期有一門課程需要學習hadoop,需要在ubuntu的linux系統下搭建Hadoop環境,在這個程序中遇到一些問題,寫下這篇博客來記錄這個程序,并把分享給大家,
Hadoop的安裝方式
- 單機模式:Hadoop默認模式為非分布式模式(本地模式),無需 進行其他配置即可運行,非分布式即單 Java 行程,方便進行除錯
- 偽分布式模式:Hadoop可以在單節點上以偽分布式的方式運行, Hadoop 行程以分離的 Java 行程來運行,節點既作為 NameNode 也 作為 DataNode,同時,讀取的是 HDFS 中的檔案
- 分布式模式:使用多個節點構成集群環境來運行Hadoop
創建Hadoop用戶(可選)
如果安裝 Ubuntu 的時候不是用的 “hadoop” 用戶,那么需要增加一個名為hadoop 的用戶,首先按打開終端視窗,輸入如下命令創建新用戶 :
sudo useradd –m hadoop –s /bin/bash
上面這條命令創建了可以登陸的 hadoop 用戶,并使用 /bin/bash 作為 shell 接著使用如下命令設定密碼,可簡單設定為 hadoop,按提示輸入兩次密碼:
sudo passwd hadoop
可為 hadoop 用戶增加管理員權限,方便部署,避免一些對新手來說比較棘 手的權限問題:
sudo adduser hadoop sudo
SSH登錄權限設定
SSH是什么?
SSH 為 Secure Shell 的縮寫,是建立在應用層和傳輸層基礎上的安全協議, SSH 是目前較可靠、專為遠程登錄會話和其他網路服務提供安全性的協議, 利用 SSH 協議可以有效防止遠程管理程序中的資訊泄露問題,SSH最初是 UNIX系統上的一個程式,后來又迅速擴展到其他操作平臺, SSH是由客 戶端和服務端的軟體組成,服務端是一個守護行程(daemon),它在后臺運 行并回應來自客戶端的連接請求,客戶端包含ssh程式以及像scp(遠程拷 貝)、slogin(遠程登陸)、sftp(安全檔案傳輸)等其他的應用程式.
配置SSH的原因
Hadoop名稱節點(NameNode)需要啟動集群中所有機器的Hadoop守護行程,這個過 程需要通過SSH登錄來實作,Hadoop并沒有提供SSH輸入密碼登錄的形式,因此,為 了能夠順利登錄每臺機器,需要將所有機器配置為名稱節點可以無密碼登錄它們,
配置SSH的無密碼登錄
安裝openssh-server( 通常Linux系統會默認安裝openssh的客戶端軟體openssh-client),所以需要自己安裝一下服務端,
sudo apt-get install openssh-server
輸入 cd .ssh目錄下,如果沒有.ssh檔案 輸入 ssh localhost生成,
cd ~/.ssh/
生成秘鑰
ssh-keygen -t rsa

將Master中生成的密鑰加入授權(authorized_keys)
cat id_rsa.pub # 查看生成的公鑰

cat id_rsa.pub >> authorized_keys # 加入授權
chmod 600 authorized_keys # 修改檔案權限,如果不修改檔案權限,那么其它用戶就能查看該授權
完成后,直接鍵入“ssh localhost”,能無密碼登錄即可,

鍵入“exit”退出,到此SSH無密碼登錄配置就成功了,
安裝Java環境
scp命令傳輸Mac的檔案到ubuntu
因為老師給了我們的java的jdk安裝包,想著不用去ubuntu重新下載,所以就想到了利用scp命令傳輸Mac的檔案到ubuntu,利用這個命令前提是Ubuntu安裝了SSH服務器,在之前我們已經有了這步操作,
利用ifconfig查看ubuntu服務器的局域網IP地址

以下是利用scp命令傳輸檔案的基本格式:
1. 本地檔案傳輸到服務器
| 從本地將檔案傳輸到服務器 | 從本地將檔案夾傳輸到服務器 |
|---|---|
| scp[本地檔案的路徑] [服務器用戶名]@[服務器地址]:[服務器上存放檔案的路徑] | scp -r[本地檔案的路徑] [服務器用戶名]@[服務器地址]:[服務器上存放檔案的路徑] |
| scp /Users/mac/Desktop/test.txt [email protected]:/root | scp -r /Users/mac/Desktop/test [email protected]:/root |
2. 服務器檔案傳輸到本地
| 將服務器上的檔案傳輸到本地 | 將服務器上的檔案夾傳輸到本地 |
|---|---|
| scp [服務器用戶名]@[服務器地址]:[服務器上存放檔案的路徑] [本地檔案的路徑] | scp -r [服務器用戶名]@[服務器地址]:[服務器上存放檔案的路徑] [本地檔案的路徑] |
| scp [email protected]:/root/default/test.txt /Users/mac/Desktop | scp -r [email protected]:/root/default/test /Users/mac/Desktop |
mac客戶端執行傳輸命令
在選擇Linux服務器端的儲存檔案地址時,由于權限原因,默認的是在/tmp有權限,可以先把檔案放到tmp檔案目錄下,然后在進行mv 或者scp到其他目錄,即可,
scp /Users/xjh/Desktop/jdk-8u221-linux-x64.tar.gz [email protected]:/tmp
傳輸速度還是蠻快的,如下圖:

在Ubuntu將jdk移動到我們新建的java目錄下(沒建的新建一個就是),到此傳輸檔案成功,可以開始配置Java環境了,
sudo mv /tmp/jdk-8u221-linux-x64.tar.gz usr/java
在java目錄中,使用sudo tar命令解壓jdk檔案;

解壓成功后,java目錄中會有對應的目錄檔案存在
配置Java環境
使用命令“sudo gedit ~/.bashrc”打開組態檔,在末尾添加以下幾行文字,注意自己的jdk版本號,
#set java env
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_221
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
使用命令“source ~/.bashrc”使環境變數生效,
source ~/.bashrc
配置軟連接,軟連接相當于windows系統中的快捷鍵,部分軟體可能會從/usr/bin目錄下查找Java,因此添加該軟連接防止其他軟體查找不到的情況,
sudo update-alternatives --install /usr/bin/java java /usr/java/jdk1.8.0_221/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.8.0_221/bin/javac 300

測驗java是否安裝成功

Hadoop單機安裝配置
將我們下載的Hadoop解壓到 /usr/local/ 中
sudo tar zxvf tmp/hadoop-3.2.1.tar.gz -C /usr/local
利用cd /usr/local/ 命令切換操作空間,將檔案夾名改為hadoop
sudo mv ./hadoop-3.2.1/ ./hadoop

修改檔案權限
sudo chown -R hadoop:hadoop ./hadoop
Hadoop 解壓后,在Hadoop目錄下的etc/hadoop/hadoop-env.sh檔案中添加如下的 Java環境資訊,
export JAVA_HOME=/usr/java/jdk1.8.0_221
然后,保存hadoop-env.sh檔案,即完成單機模式的Hadoop基本安裝,測驗Hadoop是否安裝成功,如出現如下圖所示的版本資訊,即可,

默認情況下,單機模式的Hadoop以Java行程的方式運行,可依次運行如下命令進行進一步測驗,
sudo mkdir input
sudo cp etc/hadoop/*.xml input
執行下列命令,運行MapReduce程式,完成測驗計算,
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'
執行下列命令,查看計算結果,
cat output/*

Hadoop目錄下,會有input和output兩個新建的檔案,output中有上述程式 的運算結果,到此Hadoop單機安裝配置成功,
Hadoop偽分布式安裝配置
- Hadoop可以在單節點上以偽分布式的方式運行,Hadoop行程以分 離的 Java 行程來運行,節點既作為 NameNode 也作為 DataNode, 同時,讀取的是 HDFS 中的檔案
- Hadoop的組態檔位于/usr/local/hadoop/etc/hadoop/中,偽分布式 需要修改2個組態檔 core-site.xml 和 hdfs-site.xml
- Hadoop的組態檔是xml格式,每個配置以宣告property的name 和 value 的方式來實作
hadoop目錄認識
hadoop下的目錄
修改組態檔之前,先看一下hadoop下的目錄:
- bin:hadoop最基本的管理腳本和使用腳本所在目錄,這些腳本是sbin目錄下管理腳本的基礎實作,用戶可以直接使用這些腳本管理和使用hadoop
- etc:組態檔存放的目錄,包括core-site.xml,hdfs-site.xml,mapred-site.xml等從hadoop1.x繼承而來的組態檔和yarn-site.xml等hadoop2.x新增的組態檔
- include:對外提供的編程庫頭檔案(具體動態庫和靜態庫在lib目錄中,這些頭檔案軍事用c++定義的,通常用于c++程式訪問hdfs或者撰寫mapreduce程式)
- Lib:該目錄包含了hadoop對外提供的才變成動態庫和靜態庫,與include目錄中的頭檔案結合使用
- libexec:各個服務對應的shell組態檔所在目錄,可用于配置日志輸出目錄、啟動引數等資訊
- sbin:hadoop管理腳本所在目錄,主要包含hdfs和yarn中各類服務的啟動、關閉腳本
- share:hadoop各個模塊編譯后的jar包所在目錄,
修改組態檔 core-site.xml
<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>
- hadoop.tmp.dir表示存放臨時資料的目錄,即包括NameNode的資料,也包 括DataNode的資料,該路徑任意指定,只要實際存在該檔案夾即可
- name為fs.defaultFS的值,表示hdfs路徑的邏輯名稱
修改組態檔 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>
- dfs.replication表示副本的數量,偽分布式要設定為1
- dfs.namenode.name.dir表示本地磁盤目錄,是存盤fsimage檔案的地方
- dfs.datanode.data.dir表示本地磁盤目錄,HDFS資料存放block的地方
| 檔案名稱 | 格式 | 描述 |
|---|---|---|
| hadoop-env.sh | Bash腳本 | 記錄配置Hadoop運行所需的環境變數,以運行 Hadoop |
| core-site.xml | Hadoop配置XML | Hadoop core的配置項,例如HDFS和MapReduce 常用的I/O設定等 |
| hdfs-site.xml | Hadoop配置XML | Hadoop的守護行程的配置項,包括NameNode、 SecondaryNameNode和DataNode等 |
| mapred-site.xml | Hadoop配置XML | MapReduce守護行程的配置項,包括JobTracker 和TaskTracker |
| masters | 純文本 | 運行SecondaryNameNode的機器串列(每行一 個) |
| slaves | 純文本 | |
| hadoop- metrics.properties | Java屬性 | 控制metrics在Hadoop上如何發布的屬性 |
至此,配置完畢,但是還不能啟動,要對hdfs先進行格式化,類似以前的軟盤,使用前要先格式化,執行命令:
sudo ./bin/hdfs namenode -format
看到日志資訊:即格式化成功,

在我們name目錄(這個目錄是我們自己配置的時候指定的)下也會出現映像檔案(fsimage),用于將資料持久化 ,

啟動Hadoop
輸入以下命令啟動Hadoop:
sbin/start-dfs.sh

安裝jps
sudo apt install openjdk-11-jdk-headless
安裝好之后jps檢查角色如果有多個角色,就啟動成功,

瀏覽器訪問localhost:9870

本次給大家分享的內容就到這里啦,覺得還不錯的點個贊支持一下小編,你的肯定就是小編前進的動力,另外如果想了解更多計算機專業的知識和技巧的,獻上我的個人博客北徯,另外需要各種資料的童鞋,可以關注我的微信公眾號北徯,免費的PPT模板,各種資料等你來領,

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/100165.html
標籤:Linux
下一篇:阿里云 Centos 7 ECS 云服務器安裝桌面環境; Centos Server 安裝 Gnome 桌面環境
