hadoop叢集搭建-Windows (hadoop cluster on Windows)
Hortonwork公司推出了能在 windows平臺上執行的大資料處理平臺:HDP for Windows ,可以使得hadoop叢集執行在 windows(windows server 2008 R2, windows server 2012)上。 本文使用HDP 1.1 for Windows和Windows server 2008R2來搭建hadoop叢集。
所需軟硬體環境:
1)Windows Server 2008 R2 64bit 或者 windows server 2012 64bit。
2)JDK6u30以上版本。
3)python2.7或以上版本。
4)Microsoft.NET framework 4.0或以上版本。
5)Microsoft Visual C++ 2010 Redistributable Package (64 bit)。
可以用若干臺機器來安裝,也可以用一臺機器藉助虛擬化軟體建多臺虛擬機器安裝。
HDP 1.1 for Windows 下載地址: http://hortonworks.com/products/releases/hortonworks-data-platform-1-1-for-windows/#install
windows Server 2008 R2下載地址: http://www.microsoft.com/en-us/download/details.aspx?id=11093 ,可以試用 180 天。也可以下載iso 檔案以虛擬機器(Oracle virtualbox 或者 vmware )安裝(每個虛擬機器 2G或 2G以上記憶體)。
1. 搭建一個單節點叢集 :
1.1 下載並安裝windows server 2008 R2
1.2 下載並安裝 Microsoft Visual C++ 2010 Redistributable Package (64 bit) , 檔名:vcredist_x64.exe, 下載地址 : http://www.microsoft.com/en-us/download/details.aspx?id=14632
1.3 下載並安裝Microsoft.NET framework 4.0 , 檔名:dotNetFx40_Full_setup.exe, 下載地址 :http://www.microsoft.com/en-us/download/confirmation.aspx?id=17851
1.4 下載並安裝jdk6u30以上版本(安裝路徑不要含有空格) ,設定 JAVA_HOME環境變數,並將%JAVA_HOME%\bin加入PATH系統環境變數. 驗證:執行java -version命令
1.5 下載並安裝python2.7或以上版本(安裝路徑不要含有空格),並把安裝路徑加入PATH系統環境變數. 驗證:執行python命令
1.6 下載HDP 1.1 for Windows並解壓
1.7 關閉windows server 防火牆或者放開 hadoop所用埠號。控制面板-》 系統與安全-》 Windows防火牆-》 開啟或者關閉windows防火牆。
1.8 關閉ipv6支援。 控制面板-》 網路與Internet-》 網路與共享中心-》 本地連線-》 屬性-》 激滅TCP/IPv6選項。
1.9 使能遠端指令碼功能:
確保 Administrator使用者有密碼保護
以Administrator許可權執行 Windows PowerShell, 在PowerShell中依次執行下列命令(用使用者名稱為Administrator的本地管理員登陸):
Set-ExecutionPolicy "AllSigned"
Enable-PSRemoting
Set-item wsman:localhost\client\trustedhosts -value "localhost"
winrm quickconfig
winrm set winrm/config/client '@{TrustedHosts="localhost"}'
然後切回到當前使用者1.10 建立一個檔名為clusterproperties.txt 並放在 c:\config\目錄下, 內容如下:
#Log directory HDP_LOG_DIR=c:\hadoop\logs #Data directory HDP_DATA_DIR=c:\hdp\data #Hosts (Roles for the host machines in your cluster) NAMENODE_HOST=localhost SECONDARY_NAMENODE_HOST=localhost JOBTRACKER_HOST=localhost HIVE_SERVER_HOST=localhost OOZIE_SERVER_HOST=localhost TEMPLETON_HOST=localhost SLAVE_HOSTS=localhost #Database host DB_FLAVOR=derby DB_HOSTNAME=localhost #Hive properties HIVE_DB_NAME=hive HIVE_DB_USERNAME=hive HIVE_DB_PASSWORD=hive #Oozie properties OOZIE_DB_NAME=oozie OOZIE_DB_USERNAME=oozie OOZIE_DB_PASSWORD=oozie
1.11 在解壓後的HDP1.1 for windows目錄下,以管理員許可權執行(run as administrator)
msiexec /i "hdp-1.1.0-GA.winpkg.msi" /lv "hdp.log" HDP_LAYOUT="C:\config\clusterproperties.txt" HDP_DIR="C:\hdp\hadoop" DESTROY_DATA="no"
1.12 安裝完成後,到HDP_DIR (c:\hdp\hadoop)以管理員許可權執行下列命令來啟動hadoop: start_local_hdp_services.cmd
1.13 驗證安裝成功,到HDP_DIR (c:\hdp\hadoop)執行 Run-SmokeTests.cmd
再到http://localhost:50070/dfshealth.jsp-> 點選Browse the filesystem->user/username 可以看到生成的檔案 ;到http://localhost:50030/jobtracker.jsp 可以看到hadoop job 1.14 如果要停止hadoop,到HDP_DIR (c:\hdp\hadoop)以管理員許可權執行:
stop_local_hdp_services.cmd
如果要 解除安裝hadoop 叢集,到hdp-1.1.0-GA.winpkg.msi所在目錄以管理員許可權執行: msiexec /x "hdp-1.1.0-GA.winpkg.msi" /lv "hdp.log" DESTROY_DATA="yes"
2. 搭建2個節點的HDP hadoop叢集:
如果是在虛擬機器(virtualbox/vmware)上建此叢集,應該將每個節點的網路設定改為host-only,以保證各個節點互通。
假設兩個節點的主機名分別是s1,s2; s1做master(namenode+jobtracker)併兼slave功能(datanode+tasktracker),而s2做slave(+datanode+tasktracker)
對於多節點安裝,可以採取central-push方式,也可採用one-by-one方式。對於central-push方式具體可參見hortonwork文件 :http://docs.hortonworks.com/HDPDocuments/HDP1/HDP-Win-1.1.0/bk_installing_hdp_for_windows/content/win-install-chap2-2.html
我們採用one-by-one方式:
2.1 在每個節點依次執行單節點時候的步驟直到使能遠端指令碼功能那一步:
確保 Administrator使用者有密碼保護
.以Administrator許可權執行 Windows PowerShell((用使用者名稱為Administrator的本地管理員登陸), 在PowerShell中依次執行下列命令:
Set-ExecutionPolicy "Unrestricted" (無需數字簽名就可執行指令碼,比較危險;如果覺得不安全可以改為 "RemoteSigned",即對遠端指令碼的執行需要數字簽名)
Enable-PSRemoting
Set-item wsman:localhost\client\trustedhosts -value "s1,s2"
winrm quickconfig
winrm set winrm/config/client '@{TrustedHosts="s1,s2"}'
然後切回到當前使用者如果要驗證遠端指令碼和命令是否有效,可以管理員許可權執行powershell, 執行 Invoke-Command -ComputerName 遠端機器名 -ScriptBlock { hostname },如果正確顯示遠端機器名(hostname)則說明遠端指令碼和命令起效。比如在s1中執行 Invoke-Command -ComputerName s2 -ScriptBlock { hostname },能正確顯示s2.
需要在每個節點上驗證是否能連到本機和其它遠端機器。
2.2 在每個節點建立clusterproperties.txt(c:\config下) , 使其具有以下內容:
#Log directory
HDP_LOG_DIR=c:\hadoop\logs
#Data directory
HDP_DATA_DIR=c:\hdp\data
#Hosts (Roles for the host machines in your cluster)
NAMENODE_HOST=s1
SECONDARY_NAMENODE_HOST=s1
JOBTRACKER_HOST=s1
HIVE_SERVER_HOST=s1
OOZIE_SERVER_HOST=s1
TEMPLETON_HOST=s1
SLAVE_HOSTS=s1,s2
#Database host
DB_FLAVOR=derby
DB_HOSTNAME=s1
#Hive properties
HIVE_DB_NAME=hive
HIVE_DB_USERNAME=hive
HIVE_DB_PASSWORD=hive
#Oozie properties
OOZIE_DB_NAME=oozie
OOZIE_DB_USERNAME=oozie
OOZIE_DB_PASSWORD=oozie
這樣的配置將使得s1執行namenode,secondary namenode,jobtracker,historyserver,hiveserver,oozieserver,templeton,dbserver併兼datanode和 tasktracker等服務, 而s2執行datanode 和tasktracker服務。2.3 在每個節點安裝hdp1.1, 以管理員許可權執行 (run as Administrator)
msiexec /i "hdp-1.1.0-GA.winpkg.msi" /lv "hdp.log" HDP_LAYOUT="C:\config\clusterproperties.txt" HDP_DIR="C:\hdp\hadoop" DESTROY_DATA="no"
2.4 安裝完後,在叢集中任何一個節點以管理員許可權執行(run as Administrator)下列命令來啟動整個hadoop叢集:cd %HADOOP_NODE_INSTALL_ROOT%
start_remote_hdp_services.cmd
2.5 如果要停止整個hadoop叢集在任何節點以管理員許可權(run as Administrator)執行:cd %HADOOP_NODE_INSTALL_ROOT%
stop_remote_hdp_services.cmd
說明:1.hortonworks的文件有bug, 在2.1那一步按請按本文執行。
2.儘量以管理員許可權來執行命令,解除安裝時也一樣(否則會出現hortonworks軟體無法解除安裝的情況).