文章目錄
【正式安裝】
1. 安裝VMware、安裝ubuntu16.04
網上很多教程,這裏不詳述
注意事項:
(1)安裝順序:虛擬機節點先安裝一個,完成基本配置後通過“克隆”的方式複製另外兩個,這樣既可以保證環境統一,又比較方便。
(2)網絡連接:選擇NAT方式。建議最好手動把IP地址固定下來,避免動態分配的時候錯亂。
(3)防火牆:關閉防火牆,避免出現後面不必要的麻煩,chkconfig iptables off。
2. 安裝vim和ssh
(1)安裝vim
sudo apt-get install vim
(2)安裝ssh
apt-get install openssh-server
PS:可以通過service ssh status 查看ssh狀態。
3. 修改hostname
vim /etc/hostname
修改HOSTNAME的值爲master。
4. 修改hosts
無論虛擬機suspend還是暫停, 每次機器重啓後ip都會自動+1, 而且開機剛進入虛擬機時ip不變, 是過一會兒才自動變化的.
所以需要固定IP
vi /etc/hosts
127.0.0.1 localhost
192.168.190.131 master
192.168.190.132 slave01
192.168.190.133 slave02
192.168.190.134 slave03
5. 安裝jdk
(1)解壓:
tar -zxvf jdk1.7.0_79.tar /usr/lib/java [可以替換成你安裝的路徑]
(2)修改環境變量:
vim /etc/profile
在最下面添加:
export JAVA_HOME=/usr/lib/java/jdk-13.0.1
export PATH=$JAVA_HOME/bin:$PATH
修改完後,讓配置文件生效:
source /etc/profile
6. 安裝hadoop
(1)解壓:
tar -zxvf hadoop-2.6.5.tar.gz /opt/ [可以替換成你安裝的路徑]
(2)修改環境變量
vim /etc/profile
在最下面添加:
export HADOOP_HOME=/opt/hadoop-2.6.5
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
修改完後,讓配置文件生效:
source /etc/profile
7. 克隆
通過VMware克隆另外兩個節點出來,參照4中的配置修改IP地址和hostname。(不要鏈接克隆,選擇完整克隆)
8. 配置ssh,實現免密碼登錄
(1)在三臺機器上分別執行如下命令,一路按回車即可。
ssh-keygen -t rsa
(2)剛生成的文件保存在~/.ssh/下,進入命令
cd /home/eric/.ssh
進入.ssh隱藏文件夾內,輸入ls可以看到id_rsa,私鑰和id_rsa.pub,公鑰,複製公鑰到authorized_keys
cp id_rsa.pub authorized_keys
(3)做ssh認證
將master公鑰追加到slave01的authorized_keys裏面, 使master免登陸進入slave01
scp eric@master:/home/eric/.ssh/id_rsa.pub ./master.rsa.pub
cat master.rsa.pub >> authorized_keys
將slave01公鑰追加到master的authorized_keys裏面,使slave01免登陸進入master
scp eric@slave01:/home/eric/.ssh/id_rsa.pub ./slave01.rsa.pub
cat slave01.rsa.pub >> authorized_keys
slave02同理
如果遇到仍然需要密碼的情況執行以下操作:
(一)修改文件"authorized_keys"權限
chmod 600 ~/.ssh/authorized_keys
(二)設置SSH配置
sudo vim /etc/ssh/sshd_config
在末尾添加一下文本
RSAAuthentication yes # 啓用 RSA 認證
PubkeyAuthentication yes # 啓用公鑰私鑰配對認證方式
AuthorizedKeysFile .ssh/authorized_keys # 公鑰文件路徑(和上面生成的文件同)
(三)重啓
service sshd restart
建議:最好是三臺都互相免密碼登錄,不只是從master到另外兩臺。
(4)測試:
本地測試環路
ssh localhost
出現Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-21-generic x86_64)
即可
ssh slave01
看是否不用密碼就可以登錄過去,直接進入,表示成功。
(5)常用命令
/etc/init.d/ssh start
/etc/init.d/ssh restart
/etc/init.d/ssh stop
9. 修改hadoop基本配置
我用的是hadoop-2.6.5,其實配置大同小異。
在hadoop安裝路徑下新建文件夾,我的位置在/opt/hadoop-2.6.5/
mkdir dfs
mkdir dfs/name
mkdir dfs/data
mkdir tmp
轉到配置路徑下
cd /opt/hadoop-2.6.5/etc/hadoop/
(1)配置文件:core-site.xml
在<configuration></configuration>
裏添加如下內容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/hadoop-2.6.5/temp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
(2)配置文件:hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop-2.6.5/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hadoop-2.6.5/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
(3)配置文件:mapred-site.xml
現在當前目錄下執行
cp mapred-site.xml.template mapred-site.xml
得到mapred-site.xml,進行配置
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
(4)配置文件:yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
(5)配置文件:slaves
將內容替換爲節點名稱
slave01
slave02
(6)vim masters
創建masters,加入主機名稱
master
(7)配置文件:yarn-env.sh
找到# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
(一個被註釋掉的語句)
取消註釋,並將路徑修改成你存放jdk的位置。
(8)配置文件:hadoop-env.sh
同(7)中一樣,修改export JAVA_HOME的路徑。
(9)同步配置到子節點
scp /opt/hadoop2.6.5/etc/hadoop/* slave01:/opt/hadoop/etc/hadoop/
scp /opt/hadoop2.6.5/etc/hadoop/* slave02:/opt/hadoop/etc/hadoop/
格式爲scp 主機hadoop路徑/* 子結點名稱: 子結點hadoop路徑
至此配置設置完成了!
10. 啓動測試
(1)格式化節點
在主機上輸入
hadoop namenode -format
注意:只要出現“successfully formatted”就表示成功了。
(2)運行集羣
直接在主機輸入
/opt/hadoop-2.6.5/sbin/start-all.sh
/opt/hadoop-2.6.5/sbin/stop-all.sh(關閉集羣)
如果沒有報錯出現ERROR,則可以用jps檢驗各後臺進程是否成功啓動。
master
eric@master:~$ jps
4640 NameNode
3200 NameNode
4850 SecondaryNameNode
3732 ResourceManager
5860 Jps
slave01
3168 DataNode
3563 Jps
3311 NodeManager
此時說明集羣運行正常。
(3)通過網站查看集羣情況
在網址輸入 https://master的ip:50070
http://192.168.190.128:8088/cluster/
11.運行計算實例
(1)準備數據
在本地目錄創建wordcount.txt文件,並隨便輸入寫英文,如:
aa bb cc dd
(2)上傳文件
在hadoop中新建文件夾:
hadoop fs -mkdir /input/
hadoop fs -mkdir /output/
hadoop fs -rm -r -skipTrash /data/wordcount (刪除語句)
查看hadoop的文件夾,在終端下直接是查看不到的
hadoop fs -ls -R /
上傳文件到hdfs的文件夾/input/wordcount/下
hadoop fs -put /home/wordcount.txt /input/wordcount
(3)執行命令(也可以在jar所在文件目錄下操作)
hadoop jar /opt/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /input/wordcount/ /output/wordcount/
格式爲:hadoop jar jar包 處理文件名 輸入文件夾 輸出文件夾
將出現這樣的日誌
(4)查看文件
去輸出文件中查看結果,output/wordcount裏面會有三個文件,有一個帶part的就是輸出結果,可以使用hadoop fs -cat 輸出文件的路徑查看結果
P.S.遇到的問題
(1)啓動hadoop後會出現JAVA ERROR
JAVA_HOME路徑配置不對或者沒有配置
(2)在子節點輸入jps時出現 “程序 ‘jps’ 已包含在下列軟件包中” ,則在終端輸入一下語句,注意jdk路徑後面的/bin/jps 1不要漏掉
sudo update-alternatives --install /usr/bin/jps jps "你的jdk路徑"/bin/jps 1
(3)無法登陸網頁查看集羣
點名感謝這位哥們的解決方法,給我看笑了,瞬間解決我的問題