## 對於入門學習Hadoop來說,佈置單節點Hadoop即可,無需佈置Hadoop集羣,避免因配置問題而產生不必要的麻煩
## 我用的是Win10系統並用xshell遠程連接CentOS7,用戶名是hadoop,虛擬機是VMware14 pro,Hadoop選擇CDH(cloudera)的發行版而非Apache Hadoop,如果用Apache Hadoop可能會和Hive產生衝突,所以下面文章都是以上述配置爲例,各個Linux,Hadoop發行版都大同小異,所以這些配置方法其它選用發行版的讀者也能參考這篇文章。
一. 遠程連接虛擬機中的Linux
-
打開服務器/Linxu終端查看IP地址
本機需要ssh連接遠程的Linux服務器進行遠程操作時,首先要在Linux中查出虛擬機所分配的IP地址,命令:ifconfig
-
選擇合適的shell軟件,用於連接Linux服務器
Windows:xshell,secureCRT,PuTTY
Mac:可以用Mac自帶的shell,Mac的操作系統是基於Unix的,所以跟Linux命令也比較相像,可在Mac電腦的Launchpad的其他中找到,也可按下command + 空格打開聚焦搜索後輸入終端。
-
打開xshell後,輸入命令
ssh [用戶名稱]@[ip地址]
-
爲了今後方便查找安裝相關文件,創建所需要的目錄(可選擇自己喜歡的方式存放)
$ mkdir software #存放軟件安裝包 $ mkdir app #存放安裝目錄 $ mkdir data #存放數據 $ mkdir lib #存放開發過的作業jar存放的目錄 $ mkdir shell #存放相關的腳本 $ mkdir maven_resp #maven依賴包存放的目錄
二. Hadoop環境搭建
-
下載Hadoop
使用的Hadoop相關版本:CDH
CDH相關軟件包下載地址:http://archive.cloudera.com/cdh5/cdh/5/
Hadoop使用版本:hadoop-2.6.0-cdh5.15.1
Hadoop下載到Linux服務器:wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.15.1.tar.gz
Hive使用版本:hive-1.1.0-cdh5.15.1
可以下載到Windows本地再通過本地上傳到服務器也可以直接在Linux上通過wget命令下載若是下載到Windows本地,則需要在CentOS中安裝Irzsz。
相關教程可以參考: https://blog.csdn.net/weixin_40910753/article/details/79282557
三. 安裝Java環境
因爲Hadoop的源碼是Java編寫的,所以運行Hadoop之前必須配置好Java環境
jdk1.8.0_192.tar.gz下載:https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html
- 記得本博客軟件都將下載到~/software/目錄下,並解壓至 ~/app/目錄下
sudo tar -zxvf jdk-8u192-linux-x64.tar.gz -C ~/app/
- 把jdk配置系統環境變量中:
sudo vi ~/.bash_profile
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_192
export PATH=$JAVA_HOME/bin:$PATH
快速保存並退出:ESC -> shift + ZZ
bash_profile 如果不存在直接導入配置變量即可
- 使得配置修改生效:
source .bash_profile
- 驗證:
java -version
javac -version
echo $JAVA_HOME
四. 避免ssh連接時多次輸入密碼,需要將ssh設置爲無密碼登陸
ssh-keygen -t rsa
輸入均爲空,只按回車就行
將公鑰放入其它連接本地時訪問的文件authorized_keys
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
五. Hadoop(HDFS)安裝
除了下載,解壓外,還需要把HADOOP_HOME環境變量導入bash_profile文件中(見上圖)
hadoop單節點搭建需要配置的文件有:
配置文件 | 配置內容 |
---|---|
hadoop-env.sh | export JAVA_HOME=/home/hadoop/app/jdk1.8.0_192 |
core-site.xml | <property><name>fs.defaultFS</name><value>hdfs://hadoop000:8020</value></property> 端口是8020 |
hdfs-site.xml | <property><name>dfs.replication</name><value>1</value></property> 默認副本調爲1 |
hadoop配置文件基本都在 ${HADOOP_HOME}/etc/中
啓動HDFS
- 第一次啓動時一定要格式化文件系統,且不要重複執行:
hdfs namenode -format
格式化文件系統會刪除默認的臨時文件夾中的數據,我們把他放在其它目錄下,例如:~/app/中創建一個tmp文件,並且還得把hdfs-site.xml文件再次配置:
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/tmp</value>
</property>
- 啓動集羣:
$HADOOP_HOME/sbin/start-dfs.sh
圖中的警告可以暫時不管,當啓動成功後不會報錯
如果啓動失敗,需要到${HADOOP_HOME}/logs/中查找日誌找問題,但是需要注意的是日誌並不在圖中的.out文件,而是.log文件
啓動成功後至少有3項:
SecondaryNameNode 在Hadoop2.x中好像可以不用啓動
我們可以驗證一下:打開遊覽器,輸入http://192.168.132.128:50070,回車…
如果是無法訪問,那麼最有可能的原因時hadoop的防火牆沒有關,那麼我們不妨來查看一下:
sudo firewall-cmd --state
**running !**防火牆開着那我們把他關掉(暫時的,重啓後還會打開)
sudo systemctl stop firewalld.service
再次輸入http://192.168.132.128:50070 出現節點信息說明成功啓動
探索hdfs啓動文件
此時,當我打開查看啓動文件start-dfs-sh文件時發現:每個啓動項都有配置的變量,不變的時/sbin/hadoop-daemons.sh
文件,所以不難想象如果是單獨使用這個啓動,是不是就只能啓動單獨的節點。
運行後確實如此:
可以說:start-dfs.sh =
hadoop-daemons.sh start namenode + hadoop-daemons.sh start datanode + hadoop-daemons.sh start secondarynamenode
關閉hdfs也是相同的
-
hadoop軟件包常見目錄說明
目錄 | 說明 |
---|---|
bin | hadoop客戶端名單 |
etc/hadoop | hadoop相關的配置文件存放目錄 |
sbin | 啓動hadoop相關進程的腳本 |
share | 常用例子 |
到這Hadoop(HDFS)的單節點爲分佈式搭建就完成了,後面會更新MapReduce,YARN等配置方法