【注】
1、該系列文章以及使用到安裝包/測試數據 可以在《傾情大奉送--Spark入門實戰系列》獲取;
2、Spark編譯與部署將以CentOS 64位操作系統為基礎,主要是考慮到實際應用一般使用64位操作系統,內容分為三部分:基礎環境搭建、Hadoop編譯安裝和Spark編譯安裝,該環境作為后續實驗基礎;
3、文章演示了Hadoop、Spark的編譯過程,同時附屬資源提供了編譯好的安裝包,覺得編譯費時間可以直接使用這些編譯好的安裝包進行部署。
1、運行環境說明
1.1 硬軟件環境
l 主機操作系統:Windows 64位,雙核4線程,主頻2.2G,10G內存
l 虛擬軟件:VMware® Workstation 9.0.0 build-812388
l 虛擬機操作系統:CentOS6.5 64位,單核,1G內存
l 虛擬機運行環境:
Ø JDK:1.7.0_55 64位
Ø Hadoop:2.2.0(需要編譯為64位)
Ø Scala:2.10.4
Ø Spark:1.1.0(需要編譯)
1.2 集群網絡環境
集群包含三個節點,節點之間可以免密碼SSH訪問,節點IP地址和主機名分布如下:
序號 |
機器名 |
類型 |
核數/內存 |
用戶名 |
目錄 |
|
1 |
192.168.0.61 |
hadoop1 |
NN/DN/RM Master/Worker |
1核/3G |
hadoop |
/app 程序所在路徑 /app/scala-... /app/hadoop /app/complied |
2 |
192.168.0.62 |
hadoop2 |
DN/NM/Worker |
1核/2G |
hadoop |
|
3 |
192.168.0.63 |
hadoop3 |
DN/NM/Worker |
1核/2G |
hadoop |
1.所有節點均是CentOS6.5 64bit系統,防火牆/SElinux均禁用,所有節點上均創建了一個hadoop用戶,用戶主目錄是/home/hadoop,上傳文件存放在/home/hadoop/upload文件夾中。
2.所有節點上均創建了一個目錄/app用於存放安裝程序,並且擁有者是hadoop用戶,對其必須有rwx權限(一般做法是root用戶在根目錄下創建/app目錄,並使用chown命令修改該目錄擁有者為hadoop),否則hadoop用戶使用SSH往其他機器分發文件會出現權限不足的提示
1.3 安裝使用工具
1.3.1 Linux文件傳輸工具
向Linux系統傳輸文件推薦使用SSH Secure File Transfer,該工具頂部為工具的菜單和快捷方式,中間部分左面為本地文件目錄,右邊為遠程文件目錄,可以通過拖拽等方式實現文件的下載與上傳,底部為操作情況監控區,如下圖所示:
1.3.2 Linux命令行執行工具
l SSH Secure Shell SSH Secure工具的SSH Secure Shell提供了遠程命令執行,如下圖所示:
l SecureCRT SecureCRT是常用遠程執行Linux命令行工具,如下圖所示:
2、搭建樣板機環境
本次安裝集群分為三個節點,本節搭建樣板機環境搭建,搭建分為安裝操作系統、設置系統環境和配置運行環境三個步驟。
2.1 安裝操作系統
第一步 插入CentOS 6.5的安裝介質,使用介質啟動電腦出現如下界面
lInstall or upgrade an existing system 安裝或升級現有的系統
linstall system with basic video driver 安裝過程中采用基本的顯卡驅動
lRescue installed system 進入系統修復模式
lBoot from local drive 退出安裝從硬盤啟動
lMemory test 內存檢測
第二步 介質檢測選擇"Skip",直接跳過
第三步 出現引導界面,點擊“next”
第四步 選擇安裝過程語言,選中"English(English)"
第五步 鍵盤布局選擇“U.S.English”
第六步 選擇“Basic Storage Devies"點擊"Next"
第七步 詢問是否覆寫所有數據,選擇"Yes,discard any data"
第八步 Hostname填寫格式“英文名.姓”
第九步 時區可以在地圖上點擊,選擇“Shanghai”並取消System clock uses UTC選擇
第十步 設置root的密碼
第十一步 硬盤分區,一定要按照圖示點選
第十二步 詢問是否改寫入到硬盤,選擇"Write changes to disk"
第十三步 選擇系統安裝模式為"Desktop"
第十四步 桌面環境就設置完成了,點擊安裝
第十五步 安裝完成,重啟
第十六步 重啟之后,的License Information
第十七步 創建用戶和設置密碼(這里不進行設置用戶和密碼)
第十八步 "Date and Time" 選中 “Synchronize data and time over the network”
Finsh之后系統將重啟
2.2 設置系統環境
該部分對服務器的配置需要在服務器本地進行配置,配置完畢后需要重啟服務器確認配置是否生效,特別是遠程訪問服務器需要設置固定IP地址。
2.2.1 設置機器名
以root用戶登錄,使用#vi /etc/sysconfig/network 打開配置文件,根據實際情況設置該服務器的機器名,新機器名在重啟后生效
2.2.2 設置IP地址
1. 點擊System-->Preferences-->Network Connections,如下圖所示:
2. 修改或重建網絡連接,設置該連接為手工方式,設置如下網絡信息:
IP地址: 192.168.0.61
子網掩碼: 255.255.255.0
網關: 192.168.0.1
DNS: 221.12.1.227 (需要根據所在地設置DNS服務器)
【注意】
1、網關、DNS等根據所在網絡實際情況進行設置,並設置連接方式為"Available to all users",否則通過遠程連接時會在服務器重啟后無法連接服務器;
2、如果是運行在VM Ware虛擬機,網絡使用橋接模式,設置能夠連接到互聯網中,以方便后面Hadoop和Spark編譯等試驗。
3. 在命令行中,使用ifconfig命令查看設置IP地址信息,如果修改IP不生效,需要重啟機器再進行設置(如果該機器在設置后需要通過遠程訪問,建議重啟機器,確認機器IP是否生效):
2.2.3設置Host映射文件
1. 使用root身份編輯/etc/hosts映射文件,設置IP地址與機器名的映射,設置信息如下:
#vi /etc/hosts
l 192.168.0.61 hadoop1
l 192.168.0.62 hadoop2
l 192.168.0.63 hadoop3
2. 使用如下命令對網絡設置進行重啟
#/etc/init.d/network restart
或者 #service network restart
3. 驗證設置是否成功
2.2.4關閉防火牆
在hadoop安裝過程中需要關閉防火牆和SElinux,否則會出現異常
1. service iptables status 查看防火牆狀態,如下所示表示iptables已經開啟
2. 以root用戶使用如下命令關閉iptables
#chkconfig iptables off
2.2.5關閉SElinux
1. 使用getenforce命令查看是否關閉
2. 修改/etc/selinux/config 文件
將SELINUX=enforcing改為SELINUX=disabled,執行該命令后重啟機器生效
#vi /etc/selinux/config
2.3 配置運行環境
2.3.1 更新OpenSSL
CentOS系統自帶的OpenSSL存在bug,如果不更新OpenSSL在Ambari部署過程會出現無法通過SSH連接節點,使用如下命令進行更新:
#yum update openssl
2.3.2 修改SSH配置文件
1. 以root用戶使用如下命令打開sshd_config配置文件
#vi /etc/ssh/sshd_config
開放三個配置,如下圖所示:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
2. 配置后重啟服務
#service sshd restart
2.3.3增加hadoop組和用戶
使用如下命令增加hadoop 組和hadoop 用戶(密碼),創建hadoop組件存放目錄
#groupadd -g 1000 hadoop
#useradd -u 2000 -g hadoop hadoop
#mkdir -p /app/hadoop
#chown -R hadoop:hadoop /app/hadoop
#passwd hadoop
創建hadoop用戶上傳文件目錄,設置該目錄組和文件夾為hadoop
#mkdir /home/hadoop/upload
#chown -R hadoop:hadoop /home/hadoop/upload
2.3.4JDK安裝及配置
1. 下載JDK1.7 64bit安裝包
打開JDK1.7 64bit安裝包下載鏈接為:
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
打開界面之后,先選中 Accept License Agreement ,然后下載 jdk-7u55-linux-x64.tar.gz,如下圖所示:
2. 賦予hadoop用戶/usr/lib/java目錄可讀寫權限,使用命令如下:
$sudo chmod -R 777 /usr/lib/java
該步驟有可能遇到問題2.2,可參考解決辦法處理
3. 把下載的安裝包,使用1.1.3.1介紹的ssh工具上傳到/usr/lib/java 目錄下,使用如下命令進行解壓
$tar -zxvf jdk-7u55-linux-x64.tar.gz
解壓后目錄如下圖所示:
4. 使用root用戶配置/etc/profile文件,並生效該配置
export JAVA_HOME=/usr/lib/java/jdk1.7.0_55
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
5. 重新登錄並驗證
$logout
$java -version
2.3.5 Scala安裝及配置
1. 下載Scala安裝包
Scala2.10.4安裝包下載鏈接為:http://www.scala-lang.org/download/2.10.4.html,因為在Scala2.11.4下IDEA有些異常,故在這里建議安裝Scala2.10.4版本
2. 上傳Scala安裝文件
把下載的scala安裝包使用SSH Secure File Transfer工具(如1.3.1介紹)上傳到/home/hadoop/upload目錄下,如下圖所示:
3. 解壓縮
到上傳目錄下,用如下命令解壓縮:
$cd /home/hadoop/upload
$tar -zxf scala-2.10.4.tgz
遷移到/app目錄下:
$sudo mv scala-2.10.4 /app/
4. 使用root用戶配置/etc/profile文件,並生效該配置
export SCALA_HOME=/app/scala-2.10.4
export PATH=$PATH:${SCALA_HOME}/bin
5. 重新登錄並驗證
$exit
$scala -version
3、配置集群環境
復制樣板機生成其他兩個節點,按照規划設置及其命名和IP地址,最后設置SSH無密碼登錄。
3.1 復制樣板機
復制樣板機兩份,分別為hadoop2和hadoop3節點
3.2 設置機器名和IP地址
以root用戶登錄,使用vi /etc/sysconfig/network 打開配置文件,根據1.2規划修改機器名,修改機器名后需要重新啟動機器,新機器名在重啟后生效
按照2.2.2配置方法修改機器IP地址
3.3 配置SSH無密碼登錄
1. 使用hadoop用戶登錄在三個節點中使用如下命令生成私鑰和公鑰;
$ssh-keygen -t rsa
2. 進入/home/hadoop/.ssh目錄在三個節點中分別把公鑰命名為authorized_keys_hadoop1、authorized_keys_hadoop2和authorized_keys_hadoop3,使用命令如下:
$cd /home/hadoop/.ssh
$cp id_rsa.pub authorized_keys_hadoop1
3. 把兩個從節點(hadoop2、hadoop3)的公鑰使用scp命令傳送到hadoop1節點的/home/hadoop/.ssh文件夾中;
$scp authorized_keys_hadoop2 hadoop@hadoop1:/home/hadoop/.ssh
$scp authorized_keys_hadoop3 hadoop@hadoop1:/home/hadoop/.ssh
4. 把三個節點的公鑰信息保存到authorized_key文件中
使用$cat authorized_keys_hadoop1 >> authorized_keys 命令
5. 把該文件分發到其他兩個從節點上
使用$scp authorized_keys hadoop@hadoop2:/home/hadoop/.ssh把密碼文件分發出去
6. 在三台機器中使用如下設置authorized_keys讀寫權限
$chmod 400 authorized_keys
7. 測試ssh免密碼登錄是否生效
3.4 設置機器啟動模式(可選)
設置好集群環境后,可以讓集群運行在命令行模式下,減少集群所耗費的資源。以root用戶使用#vi /etc/inittab,將 id:5:initdefault: 改為 id:3:initdefault:
Linux 系統任何時候都運行在一個指定的運行級上,並且不同的運行級的程序和服務都不同,所要完成的工作和所要達到的目的都不同。CentOS設置了如下表所示的運行級,並且系統可以在這些運行級別之間進行切換,以完成不同的工作。運行級說明
l 0 所有進程將被終止,機器將有序的停止,關機時系統處於這個運行級別
l 1 單用戶模式。用於系統維護,只有少數進程運行,同時所有服務也不啟動
l 2多用戶模式。和運行級別3一樣,只是網絡文件系統(NFS)服務沒被啟動
l 3多用戶模式。允許多用戶登錄系統,是系統默認的啟動級別
l 4留給用戶自定義的運行級別
l 5多用戶模式,並且在系統啟動后運行X-Window,給出一個圖形化的登錄窗口
l 6所有進程被終止,系統重新啟動
4、問題解決
4.1 安裝CentOS64位虛擬機 This host supports Intel VT-x, but Intel VT-x is disabled
在進行Hadoop2.X 64bit編譯安裝中由於使用到64位虛擬機,安裝過程中出現下圖錯誤:
按F1 鍵進入BIOS 設置實用程序 使用箭頭鍵security面板下找virtualization按Enter 鍵 進去Intel VirtualizationTechnology改成Enabled按F10 鍵保存並退出 選擇Yes按Enter 鍵 完全關機(關閉電源)等待幾秒鍾重新啟動計算機此Intel虛擬化技術開啟成功
4.2 *** is not in the sudoers file解決方法
當使用hadoop用戶需要對文件夾進行賦權,使用chmod命令出現“hadoop is not in the sudoers file. This incident will be reported”錯誤,如下所示:
1. 使用su命令進入root用戶
2. 添加文件的寫權限,操作命令為:chmod u+w /etc/sudoers
3. 編輯/etc/sudoers文件,使用命令"vi /etc/sudoers"進入編輯模式,找到:"root ALL=(ALL) ALL"在起下面添加"hadoop ALL=(ALL) ALL",然后保存退出。