1 Centos下載安裝
Centos鏡像下載地址https://www.centos.org/download/ 我選擇的是DVD版本
在VitrualBox裏面新建一個虛擬機
硬盤給了10G,其他屬性默認,開機,選擇啓動盤,把下載好的鏡像放入,開始安裝
趁安裝的時候,在虛擬機上面視圖,調成自動縮放模式,如果發現鼠標不見了,按一下鍵盤右邊(注意是右邊)的Ctrl,安裝的時候根據提示操作,最後的安裝進度條
安裝成功後,先關機,然後設置一下網絡,右鍵虛擬機,設置,選擇網絡選項卡,添加兩塊網卡,一個是Host-Only,這個網絡連接模式只能在虛擬機和宿主機之間聯通,類似一個小型局域網,第二塊網卡配置成NAT模式,用於虛擬機的上網
按Ctrl+W,出來主機網絡管理界面,開啓DHCP服務器,進行如下配置
在windows下執行ipconfig命令,可以看見Host-Only的那塊網卡
虛擬機重新開機,還會讓你配置一下賬號密碼之類的東西,配置好之後開機
配置一下打開終端的快捷鍵,如圖打開快捷鍵設置
找到Run a terminal,修改快捷鍵
爲用戶賦予root權限,需要修改/etc/sudoers文件,不建議直接用vi打開修改,使用visudo命令修改可以檢查一下語法,避免損壞文件搞出大事情
su root //切換到root用戶,這一部會要求輸入root密碼
visudo //打開/etc/sudoers文件
按一下“G”(注意是大寫的),跳到文檔末尾,找到##same thing without a password這一項,按照他給的例子複製一行,複製命令是yy,黏貼是p,然後按一下i開始進行文本編輯,移動光標進行文字修改。修改完後按“:”進入vim命令模式,輸入wq回車,保存文件並退出。我配置的是無密碼切換root模式,因爲懶惰,如果你需要密碼的可以用上一項
tuan ALL=(ALL) NOPASSWD: ALL
切換回自己的用戶,修改一下網卡配置,爲Host-Only網絡指定Ip,需要修改/etc/sysconfig/network-scripts/ifcfg-eth0文件,這一部需要root權限,如果你的Host-Only網卡是eth1就打開eth1的
sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0 //打開配置文件
添加一行IPADDR=192.168.56.21,修改BOOTPROTO爲static,修改ONBOOT爲yes,保存關閉
sudo service network restart //重啓網卡
ifconfig //查看網卡配置
弄好之後,ping一下我們的宿主機,發現ping不通,原因是windows的防火牆默認關閉了icmp,打開防火牆高級設置,在入站規則裏面找到下面這條,雙擊,啓用就可以ping通宿主機了,宿主機的Host-Only地址可以通過ipconfig查詢
因爲開着個界面很佔資源,而且我的小破筆記本操作還有點卡,因此開啓ssh服務,通過xshell上。關機,啓動虛擬機的時候,右鍵啓動—無界面啓動。注意當虛擬機無界面啓動顯示啓動後,還需要等一會才能用ssh連上
sudo chkconfig sshd on //開機啓動ssh,可以不配置
service sshd start //啓動ssh服務
2 Hadoop集羣安裝
按照官網文檔兩篇,分別是單點模式安裝和集羣模式安裝
http://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-common/SingleCluster.html
http://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-common/ClusterSetup.html
2.1 依賴安裝
官網說需要兩個依賴:Java7和ssh,Centos6.10都有
但是我不想用Java1.7,升個級
sudo yum remove -y java //舊的不去
sudo yum install -y java-1.8.0* //新的不來
2.2 Hadoop下載
從官網提供的地址下載,直接wget
wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz //下載
tar -xf hadoop-2.6.5.tar.gz //解壓
mv hadoop-2.6.5 hadoop //改名
2.3 Hadoop配置
所有配置文件都是hadoop目錄下的etc/hadoop下,hadoop/share/doc目錄下可以找到各種配置文件的dafault版本,用find命令就能找到,如果某個配置項沒有配置Hadoop就會使用這些默認配置
2.3.1 hadoop-env.sh和yarn-env.sh
修改JAVA_HOME這一項,java的安裝目錄可以通過這篇文章的方法找到,我的在/usr/lib/jvm/jre-1.8.0-openjdk.x86_64下面
https://blog.csdn.net/zhpengfei0915/article/details/50963199/
這一項默認是引用環境變量JAVA_HOME的值,乾脆在/etc/profile裏配置一個環境變量,就不用修改這兩個文件了
在/etc/profile中添加
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
保存退出
source /etc/profile //讓環境變量生效
2.3.2 core-site.xml
配置默認的文件系統端口
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
2.3.3 yarn-site.xml
配置ResourceManager的ip地址
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
2.3.4 slave機創建
爲了通信方便修改一下/etc/hosts文件,加入如下三行,第一個master對應現在這臺虛擬機的ip地址,底下兩臺是slave機,保存退出
順便爲了後續方便我把Windows的hosts文件也加了這些配置
修改slaves文件,這裏面配置的是slave機的ip
退出master機,複製兩份爲slave1和slave2,修改一下Ip
2.4 啓動Hadoop
一切操作都在Hadoop目錄下
最開始要初始化一下Namenode,然後會問你是否要清除所有文件云云,按Y就行
./bin/hdfs namenode -format my_hadoop
在master節點上啓動Namenode和ResourceManager
./sbin/hadoop-daemon.sh --script hdfs start namenode
./sbin/yarn-daemon.sh start resourcemanager
在兩個slave節點上啓動Datanode和NodeManager
./sbin/hadoop-daemon.sh --script hdfs start datanode
./sbin/yarn-daemon.sh start nodemanager
最後在瀏覽器看一下master:50070,結果打不開,這是因爲防火牆的問題,簡單粗暴地關掉防火牆
sudo chkconfig iptables off
sudo service iptables stop
現在網頁可以打開了
3 Windows客戶端搭建
對我這種菜鳥在Linux環境開發Java程序很痛苦,所以配一個Windows客戶端
直接把服務器上的hadoop打個包,用xshell下載下來
tar -cf hadoop.tar hadoop
sudo yum install lrzsz
sz hadoop.tar
Windows下也需要配置一些環境變量,如圖,目錄按照自己的來就好
在這個網址下載Hadoop的Windows版命令包https://github.com/steveloughran/winutils,我下的2.6.4可以用,把bin裏面的覆蓋到hadoop/bin
在cmd裏面執行幾條命令試一下
C:\Users\Lenovo>hadoop fs -mkdir /test //在hdfs新建一個test目錄
C:\Users\Lenovo>hadoop fs -copyFromLocal test.txt /test/test.txt //把本地一個test.txt傳到hdfs
C:\Users\Lenovo>hadoop fs -ls /test //查看test目錄