『實踐』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分散式集群 1.基本設定和軟體版本 主機名 ip 對應角色 master 192.168.56.4 NameNode slave1 192.168.56.3 DataNode1 slave2 ...
『實踐』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分散式集群
1.基本設定和軟體版本
主機名 |
ip |
對應角色 |
master |
192.168.56.4 |
NameNode |
slave1 |
192.168.56.3 |
DataNode1 |
slave2 |
192.168.56.5 |
DataNode2 |
- Windows主機設置的ip為192.168.56.88
- hadoop壓縮包解壓地址:/usr/local/hadoop
- 虛擬機用戶都為ljy
- VirtualBox-5.1.18、CentOS-6.8、hadoop-2.7.3.tar.gz、jdk1.7.0_79,且都是64位版本。
- Centos6.8:鏈接:http://pan.baidu.com/s/1qYdjAY4 密碼:7gxm
- 此處連接方式使用Host-only模式,虛擬機不能聯網;如使用網路地址轉換(NAT),虛擬機可以聯網。
圖1 Host-Only
圖2 windows ip
2.VirtualBox安裝Centos6.8
這個網上教程太多,這裡不詳細介紹了。
3.FileZilla
FileZilla是一款免費開源的ftp軟體,此處用於Windows電腦和Centos虛擬機之間互傳文件。
圖3 FileZilla
4.安裝jdk1.7.0-79
- l 查看系統自帶的jdk並將其全部卸載:rpm -qa | grep jdk
- l 下載jdk包,並將其解壓到/usr/java路徑下。
- l 配置全局java環境變數(以root用戶執行):vim /etc/profile
- l 在profile中的添加以下內容:
- export JAVA_HOME=/usr/java/jdk1.7.0_79
- export JRE_HOME=/usr/java/jdk1.7.0_79/jre
- export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
- export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
- l 使profile配置生效:source /etc/profile
- l 檢測已經安裝的jdk:java -version
- l 註意:其他DataNode執行上述同樣操作。
圖4 /etc/profile文件中添加的內容
圖5 安裝的jdk
5.設置NameNode的ip
方法一:
- l 切換到root,輸入密碼:su
- l 進入設置界面:setup
- l 選擇網路設置
- l 選擇設備設置
- l 選擇eth0
- l 進行網路配置
- l 註意:其他DataNode執行上述同樣操作。
圖6 選擇網路設置
圖7 選擇設備設置
圖8 選擇eth0
圖9 NameNode的網路設置
方法二:
- l 打開網路連接,直接設置
圖10 網路連接設置
方法三:
- l 編輯eth0文件:sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0
- l 在文件中修改BOOTPROTO=static,添加IPADDR、NETMASK和GATEWAY。
圖11 配置eth0
圖12 windows電腦ping通NameNode
6.給用戶增加sudo許可權(此處用戶名為ljy)
- l 切換到root,輸入密碼:su
- l 給sudoers增加寫許可權:chmod u+w /etc/sudoers
- l 編譯sudoers文件:vim /etc/sudoers
- l 在#%wheel ALL=(ALL) NOPASSWD: ALL下方增加 xxx ALL=(ALL) NOPASSWD: ALL,註意xxx為用戶,此處為ljy
- l 去掉sudoers文件的寫許可權:chmod u-w /etc/sudoers
- l 註意:其他DataNode執行上述同樣操作。
圖13 /etc/sudoers文件中增加的語句
7.配置每台機器的機器名和對應IP
- l 編輯hosts文件:sudo vim /etc/hosts
- l 編輯network文件,修改HOSTNAME為master:sudo vim /etc/sysconfig/network,註意:此處例子master為NameNode機器的機器名。
- l 使文件立即生效:source /etc/sysconfig/network
- l 註意:其他DataNode執行上述同樣操作。只有/etc/sysconfig/network中的hostname需要改為對應機器的機器名,例如:slave1。
圖14 在/etc/hosts文件中添加的內容
圖15 /etc/sysconfig/network文件中修改HOSTNAME為master
圖16 修改機器名和對應IP
8.永久關閉防火牆
- l 永久關閉防火牆,重啟後生效:chkconfig iptables off
- l 即時性關閉防火牆,重啟後失效:service iptables stop
- l 此處執行這兩條語句就不用重啟了。
- l 註意:其他DataNode執行上述同樣操作。
圖17 永久關閉防火牆
9.配置SSH免密碼登錄
- 檢查是否安裝了ssh,若沒有安裝,則安裝(以下指令並非都要執行):
- l 檢查是否安裝ssh:rpm -qa| grep ssh
- l 查看ssh運行狀態:service sshd status
- l 安裝ssh:yum install ssh
- l 查看是否開機啟動:chkconfig --list sshd
- l 設置開機啟動:chkconfig sshd on
- l 註意:其他DataNode執行上述同樣操作。
圖18 設置ssh開機啟動
配置ssh免密碼登錄:
- l 進入~/.ssh目錄:cd ~/.ssh
- l 每台機器執行:ssh-keygen -t rsa,一路回車。
- l 生成兩個文件,一個私鑰,一個公鑰,把id_rsa,pub文件追加到授權key(authorized_keys):cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- l 通過ssh localhost命令登錄本機,首次時會讓輸入yes/no,但是不需要密碼:ssh localhost
- l 如果目錄沒有通過NFS共用,需要利用此方法共用公鑰(此處是master把公鑰發給slave1,別的就類似互相共用):ssh-copy-id slave1。
- l 註意:其他DataNode執行上述同樣操作。
圖19 ssh-keygen -t rsa命令執行後~/.ssh文件中
圖20 設置ssh無密碼登錄
圖21 master把公鑰發送給slave1
10.安裝hadoop 2.7.3
- l 轉換到用戶ljy下:su - ljy
- l 獲取管理員許可權:su
- l 輸入管理員密碼:
- l 新建hadoop文件夾:mkdir /usr/local/hadoop
- l 將hadoop包移動到hadoop文件夾中:mv /home/ljy/下載/hadoop-2.7.3.tar.gz /usr/local/hadoop
- l 移動到hadoop文件中:cd /usr/local/hadoop
- l 解壓hadoop包:tar zxvf hadoop-2.7.3.tar.gz
- l 將hadoop-2.7.3重命名為hadoop: mv hadoop-2.7.3 hadoop
- l 註意:其他DataNode執行上述同樣操作。
將hadoop文件的擁有者改為ljy用戶和組
- l 引動到hadoop解壓的路徑:cd /usr/local/hadoop
- l 將hadoop文件的擁有者改為ljy用戶:sudo chown -R ljy:ljy hadoop
- l 查看/hadoop目錄下所有用戶屬於ljy的文件或者文件夾:find /hadoop -user ljy
配置環境變數
- l 編輯/etc/profile文件:vim /etc/profile
- l 在profile文件中添加的內容:export HADOOP_HOME=/usr/local/hadoop/hadoop、export PATH=$HADOOP_HOME/bin:$PATH
- l 使環境變數生效:source /etc/profile
- l 註意:其他DataNode執行上述同樣操作。
圖22 hadoop文件夾中的文件目錄
圖23 /etc/profile文件中添加的內容
配置Hadoop:
- l 移動到hadoop配置文件路徑:cd /usr/local/hadoop/hadoop/etc/hadoop
- l 查看當前文件夾中的文件目錄:ls
圖24 hadoop配置文件夾中的文件目錄
- l 配置hadoop-env.sh:export JAVA_HOME=/usr/java/jdk1.7.0_79
- l 添加masters,內容為slave1:vim masters
- l 配置通用屬性:vim core-site.xml
1 <configuration> 2 3 <property> 4 5 <!-- NameNode 地址 --> 6 7 <name>fs.defaultFS</name> 8 9 <value>hdfs://master:9000</value> 10 11 </property> 12 13 <property> 14 15 <!-- 臨時目錄設定 --> 16 17 <name>hadoop.tmp.dir</name> 18 19 <value>file:/usr/local/hadoop/hadoop/tmp</value> 20 21 </property> 22 23 <property> 24 25 <name>fs.checkpoint.period</name> 26 27 <value>3600</value> 28 29 </property> 30 31 <property> 32 33 <name>fs.checkpoint.size</name> //以日誌大小間隔 做備份間隔 34 35 <value>67108864</value> 36 37 </property> 38 39 </configuration>
圖25 core-site.xml配置內容
- l 配置HDFS屬性:vim hdfs-site.xml
1 <configuration> 2 3 <property> 4 5 <name>dfs.namenode.secondary.http-address</name> 6 7 <value>slave1:50090</value> 8 9 //註意:此處機器名要為另一個。 10 11 </property> 12 13 <property> 14 15 <name>dfs.http.address</name> 16 17 <value>master:50070</value> 18 19 </property> 20 21 <property> 22 23 <!-- 預設的塊複製數量,預設為3 --> 24 25 <name>dfs.replication</name> 26 27 <value>2</value> 28 29 </property> 30 31 <property> 32 33 <!-- 存貯在本地的名位元組點數據鏡象的目錄,作為名位元組點的冗餘備份 --> 34 35 <name>dfs.namenode.name.dir</name> 36 37 <value>file:/usr/local/hadoop/hadoop/hdfs/name</value> 38 39 </property> 40 41 <property> 42 43 <!-- 數據節點的塊本地存放目錄 --> 44 45 <name>dfs.datanode.data.dir</name> 46 47 <value>file:/usr/local/hadoop/hadoop/hdfs/data</value> 48 49 </property> 50 51 </configuration>
圖26 hdfs-site.xml配置內容
- l 複製mapred-site.xml.template並重命名為mapred-site.xml:cp mapred-site.xml.template mapred-site.xml
- l 配置MapReduce屬性:vim mapred-site.xml
1 <configuration> 2 3 <property> 4 5 <name>mapreduce.framework.name</name> 6 7 <value>yarn</value> 8 9 </property> 10 11 <property> 12 13 <name>mapreduce.jobhistory.address</name> 14 15 <value>master:10020</value> 16 17 </property> 18 19 <property> 20 21 <name>mapreduce.jobhistory.webapp.address</name> 22 23 <value>master:19888</value> 24 25 </property> 26 27 </configuration>
圖27 mapred-site.xml配置內容
圖28 配置core-site.xml、hdfs-site.xml、mapred-site.xml
- l 配置yarn-site.xml:vim yarm-site.xml
1 <configuration> 2 3 <!-- Site specific YARN configuration properties --> 4 5 <property> 6 7 <name>yarn.nodemanager.aux-services</name> 8 9 <value>mapreduce_shuffle</value> 10 11 </property> 12 13 <property> 14 15 <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> 16 17 <value>org.apache.hadoop.mapred.ShuffleHandler</value> 18 19 </property> 20 21 <property> 22 23 <name>yarn.resourcemanager.address</name> 24 25 <value>master:8032</value> 26 27 </property> 28 29 <property> 30 31 <name>yarn.resourcemanager.scheduler.address</name> 32 33 <value>master:8030</value> 34 35 </property> 36 37 <property> 38 39 <name>yarn.resourcemanager.resource-tracker.address</name> 40 41 <value>master:8031</value> 42 43 </property> 44 45 <property> 46 47 <name>yarn.resourcemanager.admin.address</name> 48 49 <value>master:8033</value> 50 51 </property> 52 53 <property> 54 55 <name>yarn.resourcemanager.webapp.address</name> 56 57 <value>master:8088</value> 58 59 </property> 60 61 </configuration>
圖29 yarn-site.xml配置內容
- l 配置slaves:vim slaves
slave1
slave2
11.複製NameNode作為DataNode
圖30 NameNode和DataNode
- l 複製master,並重命名為slave1和slave2。
- l 運行slave2,將hostname改為slave2。
- l 將網路連接的ip改為192.168.56.5。
- l 對slave1的操作同對slave2的操作一樣。
圖31 master ping slave2
- l master ping windows時,需要關閉windows的防火牆。
圖32 master ping windows
圖33 windows ping master
圖34 slave1 ping slave2
12.在master節點格式化hdfs
- l 到bin路徑下:cd /usr/local/hadoop/hadoop/bin
- l Hadoop初始化:hdfs namenode -format
13.啟動HDFS和YARN
- l 到sbin路徑下:lcd /usr/local/hadoop/hadoop/sbin
- l 啟動全部服務:start-all.sh
- l 查看:jps
- 通過瀏覽器的方式驗證:
- http://192.168.56.4:50070 (HDFS管理界面)
圖35 HDFS管理界面
- http://192.168.56.4:8088 (YARN管理界面)
圖36 YARN管理界面
14.參考文獻
安裝java1.6 http://www.cnblogs.com/ssslinppp/p/5923298.html
CentOS常用的文件操作命令總結: http://www.haorooms.com/post/centeros_wj_zj
Linux給用戶添加sudo許可權 :http://blog.chinaunix.net/uid-25305993-id-126661.html
yarn-site.xml參數設置: http://blog.csdn.net/xiaoshunzi111/article/details/51221139
VirtualBox虛擬機網路環境解析和搭建-NAT、橋接、Host-Only、Internal、埠映射 :http://blog.csdn.net/yxc135/article/details/8458939
hadoop(2.x)以hadoop2.2為例完全分散式最新高可靠安裝文檔: http://www.aboutyun.com/thread-7684-1-1.html
Hadoop之Secondary NameNode : http://blog.csdn.net/zwto1/article/details/50839191