Hadoop单机/伪分布式集群搭建(新手向)
此文已由作者朱笑笑授權網易云社區發布。
歡迎訪問網易云社區,了解更多網易技術產品運營經驗。
本文主要參照官網的安裝步驟實現了Hadoop偽分布式集群的搭建,希望能夠為初識Hadoop的小伙伴帶來借鑒意義。
環境:
(1)系統環境:CentOS 7.3.1611 64位
(2)Java版本:OpenJDK 1.8.0
配置Hadoop單節點集群前準備
1、創建hadoop用戶:
?新建用戶用于hadoop使用:
(1)打開終端,輸入命令su,回車,輸入root的密碼以root用戶登錄,并創建名為hadoop的新用戶:
useradd -m Hadoop -s /bin/bash
(2)修改用戶密碼:
passwd hadoop
(3)為使用方便,給hadoop用戶提升權限,否則hadoop用戶在使用sudo命令時會報出:hadoop不在sudoers文件中。此事將被報告;
a. 切換到root用戶,查看/etc/sudoers文件權限,默認權限為只讀
? ? ? ?
b. 修改/etc/sudoers文件權限為讀寫權限:chmod 777 /etc/sudoers
?c. 修改/etc/sudoers文件內容,執行visudo或者vim /etc/sudoers
如下圖,在 root ALL=(ALL) ALL 這行下面增加一行內容:hadoop ALL=(ALL) ALL (當中的間隔為tab,說明:格式為{用戶名 網絡中的主機=(執行命令的目標用戶) 執行的命令范圍}),如下圖所示:
? ? ?
若要在執行sudo命令時免輸入密碼,可以將上述添加的內容改為:hadoop ALL=(ALL) NOPASSWD:ALL。
d. 保存退出,恢復/etc/sudoers文件的訪問權限為440;
(4)切換至hadoop用戶;
2、安裝SSH及配置免密碼登錄
?集群和單節點模式都需要使用SSH登陸,一般情況下,CentOS中默認安裝了SSH client、SSH server,可以通過以下命令進行檢驗:
rpm -qa | grep ssh
若已經安裝,則返回如下內容,說明已經包含了SSH client和SSH server,無需再安裝:
? ? ? ?
?若沒有安裝SSH client、SSH server,則可以通過yum進行安裝:
sudo yum install?openssh-clients
sudo yum install?openssh-server
測試SSH是否可用,可輸入如下命令:
ssh localhost
首次登陸出現如下提示(圖中為使用root用戶登錄,hadoop用戶同理),輸入yes即可,在用戶的主文件夾(/home/用戶名)下會生成.ssh目錄。然后根據提示輸入hadoop用戶密碼,登陸本機:
? ? ??
我們發現每一次使用ssh登錄都需要輸入密碼,為方便起見,配置ssh為免密碼登錄:
(1)切換為hadoop用戶;
(2)利用ssh-keygen生成密鑰,并將密鑰加入到授權中,修改授權文件權限:
cd ~/.ssh/
ssh-keygen -t?rsa
cat id_rsa.pub >>authorized_keys
chmod 600 ./authorized_keys
?此時,使用ssh localhost無需密碼便可登陸。
3、安裝Java環境
Java環境可以選擇Oracle的JDK,或者OpenJDK。按照https://wiki.apache.org/hadoop/HadoopJavaVersions中所說,hadoop 2.7版本及以后的版本至少要求Java 7。CentOS 7.3下默認安裝了OpenJDK 1.8,但只是Java JRE,不是JDK,為便于開發,建議安裝JDK。
建議使用yum進行安裝,默認安裝路徑為/usr/lib/jvm/java-1.8.0-openjdk:
? ? ? ??
安裝成功后配置JAVA_HOME環境變量:
vim ~/.bashrc
在最后一行添加變量:
? ? ? ??
使環境變量生效:
source ~/.bashrc
設置好后檢驗一下是否正確,輸出一下內容則設置正確:
? ? ? ??
安裝Hadoop
通過http://www.apache.org/dyn/closer.cgi/hadoop/common/下載Hadoop,這里選擇了Hadoop 2.7.3版本,下載時選擇hadoop-2.7.3.tar.gz格式,其中src格式的為Hadoop的源代碼,需要進行編譯后才可使用。
? ? ?安裝Hadoop至/usr/local/中(也可選擇別的路徑),Hadoop解壓后即可使用:
sudo tar -zxf ~/Download/hadoop-2.7.3.tar.gz -C /usr/local
cd /usr/local/
sudo mv ./hadoop-2.7.3/ ./hadoop?
sudo chown -R hadoop:hadoop ./hadoop
? ? ?檢查Hadoop是否可用:
cd /usr/local/hadoop
./bin/hadoop version
說明:若未進行Java的環境變量配置,想要./bin/hadoop執行成功,則需要修改hadoop的etc/hadoop/hadoop-env.sh文件中的JAVA_HOME變量,指定為java路徑,如圖:
? ? ? ??
至此,Hadoop默認模式即本地模式(單機模式)已經配置成功。
Hadoop偽分布式配置
Hadoop可以在單節點上以偽分布式的方式運行,Hadoop進程以分離的Java進行來運行,節點既作為Namenode也作為DataNode,同時,讀取的是Hdfs中的文件。
偽分布式需要修改2個配置文件core-site.xml和hdfs-site.xml,配置文件位于hadoop的/etc/hadoop文件夾下。
修改core-site.xml為:
? ? ? ??
?修改hdfs-site.xml為:
? ? ? ??
?修改配置文件成功后,通過ssh登陸:
? ? ? ??
?執行NameNode的格式化:
? ? ? ??
出現如圖情況,表示成功,若“Exitting with status 1”則是出錯:
? ? ? ??
?接下去開啟NameNode和DataNode守護進程:
? ? ? ??
若出現SSH的提示,輸入yes即可:
? ? ? ??
啟動完成后,通過jsp來判斷是否成功啟動,若成功啟動則會列出如下進程,如果沒有NameNode或DataNode,則表明配置不成功,需要檢查上述步驟或通過啟動日志排查,日志記錄在hadoop的logs文件夾中:
? ? ? ??
成功啟動后,可以訪問http://localhost:50070來查看NameNode和Datanode信息及HDFS中文件:
? ? ? ??
運行Hadoop偽分布式實例
單機模式grep讀取的是本地數據,偽分布式讀取的則是Hdfs上的數據。
?執行MR任務需要在Hdfs上創建用戶目錄,這里<username>為hadoop:
? ? ? ??
在Hdfs上創建input文件夾作為輸入內容存放的文件目錄,將hadoop中etc/hadoop文件夾中的文件復制到Hdfs中:
? ? ? ??
運行grep任務,偽分布式的MR任務運行方式與單機模式相同,區別在于偽分布式讀取的是HDFS中的文件,單機模式是讀取本地文件:
? ? ? ??
查看運行結果,即Hdfs中output結果:
? ? ? ??
? ? ? ??
? ? ? ? Hadoop運行程序時,輸出目錄不能存在,若要再次執行作業,則需要先刪除輸出文件夾:
./bin/hdfs dfs -rm -r output
? ? ? ? 關閉進程:
? ? ? ??
注意:下次啟動Hadoop時,則無需再次進行NameNode的初始化,只需要運行./sbin/start-dfs.sh即可。
啟動YARN
YARN(Yet Another Resource Negotiator)是新的MapReduce框架,從MapReduce中分離出來,負責資源管理與任務調度。YARN運行于MapReduce之上,提供了高可用性、高擴展性。上述的啟動Hadoop僅僅是啟動了MapReduce的環境。
啟動YARN來進行資源管理和任務調度需要修改幾個配置:
?修改配置mapred-site.xml,首先將etc/hadoop/mapred-site.xml.template重名,然后修改配置:
? ? ? ???
修改yarn-site.xml配置:
? ? ? ??
? ? ?配置完成后可以啟動YARN,通過執行hadoop中./sbin/start-yarn.sh腳本來啟動(執行前先執行./sbin/start-dfs.sh):
? ? ? ??
啟動后通過jps查看,可以看到多了NodeManager和ResourceManager兩個后臺進行,如圖:
? ? ? ??
開啟歷史服務器,便于在Web中查看任務運行情況:
? ? ?
啟動YARN后,運行實例方法與上述一樣。觀察日志信息可以發現,不啟動YARN時,是“mapred.LocalJobRunner”在跑任務,啟用YARN之后,是“mapred.YARNRunner”在跑任務。啟動YARN可以通過Web界面查看任務的運行情況:http://localhost:8088/cluster,如圖:
? ? ?
? ? ?
關閉YARN和歷史服務器:
?
注意:若不想啟動YARN,需要將mapred-site.xml重命名,改回mapred-site.xml.template.
Hadoop環境變量配置
上述內容中,我們都是通過先進入到/usr/local/hadoop目錄中,再執行./sbin/[執行腳本]或./bin/[執行腳本],為便于平時的操作方便,我們可以配置Path環境變量來簡化我們的操作,配置如下,完成后便可直接執行hadoop中./sbin和./bin目錄下的腳本:
?
網易云免費體驗館,0成本體驗20+款云產品!?
更多網易技術、產品、運營經驗分享請點擊。
相關文章:
【推薦】?分布式存儲系統可靠性系列三:設計模式
【推薦】?遭遇各種內容監管,有些企業到底欠缺的是什么,僅僅是價值觀嗎?
【推薦】?NOS跨分區災備設計與實現
轉載于:https://www.cnblogs.com/zyfd/p/9874814.html
總結
以上是生活随笔為你收集整理的Hadoop单机/伪分布式集群搭建(新手向)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 四种常用的垃圾收集器
- 下一篇: Python学习并发与多线程