集羣主機信息java
主機名稱node |
主機ipmysql |
配置web |
主要功能sql |
master1數據庫 |
硬盤300G,內存32G,CPU8核apache |
管理主節點bootstrap |
|
master2vim |
硬盤300G,內存32G,CPU8核瀏覽器 |
管理備份節點 |
|
slave1 |
硬盤300G,內存8G,CPU4核 |
數據節點 |
|
slave2 |
硬盤300G,內存8G,CPU4核 |
數據節點 |
|
slave3 |
硬盤300G,內存8G,CPU4核 |
數據節點 |
|
slave4 |
硬盤500G,內存4G,CPU2核 |
mysql數據庫 |
本次集羣使用6臺物理機,操做系統都採用centOS6.4版本
hadoop-2.2.0.tar.gz
apache-hive-1.0.1-bin.tar.gz
sqoop-1.4.4.bin__hadoop-0.20.tar.gz
zookeeper-3.4.6.tar.gz
jdk1.7
集羣組件包
集羣機器配置
設置靜態IP
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 #描述網卡對應的設備別名,例如ifcfg-eth0的文件中它爲eth0
BOOTPROTO=static #設置網卡得到ip地址的方式,可能的選項爲static,dhcp或bootp,分別對應靜態指定的 ip地址,經過dhcp協議得到的ip地址,經過bootp協議得到的ip地址
BROADCAST=192.168.0.255 #對應的子網廣播地址
HWADDR=00:07:E9:05:E8:B4 #對應的網卡物。
修改主機名
vi /etc/sysconfig/network
hostname=master1
重啓一下網絡service network restart
驗證reboot -h now 馬上重啓 而後hostname
關閉防火牆
關閉已經啓動的防火牆: service iptables stop (只能關閉當前)
驗證:service iptables status
Firewall is not running
關閉防火牆開機自動啓動功能:
(1). 先查看查看: chkconfig --list |grep iptables
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
(2). 關閉 chkconfig iptables off
驗證:chkconfig --list |grep iptables
配置SSH免密碼登陸
ssh-keygen 生產密碼 回車按三下
賦給其餘機器的祕鑰:ssh-copy-id+ip(例如:ssh-copy-id 10.1.1.1)
六臺機器每臺機器都要把當前機器的祕鑰發送到其餘五臺機器上,實現五臺機器免祕鑰登陸。
安裝JDK
把機器自帶的jdk刪掉:顯示機器安裝過的jdk命令rpm -qa | grep jdk
卸載命令:
# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.62.1.11.11.90.el6_4.x86_64
# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.25-2.3.10.4.el6_4.x86_64
# rpm -e --nodeps tzdata-java-2013c-2.el6.noarch
配置zookeeper
tar -zxvf zookeeper-3.4.6.tar.gz 解壓zookeeper包
cd zookeeper安裝路徑的conf目錄修改文件zoo_sample.cfg 爲zoo.cfg
修改配置文件vi zoo.cfg
在/usr/local/zookeeoer 目錄下創建 data和logs目錄(注意:在之後拷貝到其它機器上在其它機器上也得創建這二個目錄)
在server.1的data目錄下編寫一個叫 myid的文件命令爲:vi myid 裏面寫上1
在server.2的data目錄下編寫一個叫 myid的文件命令爲:vi myid 裏面寫上2
在server.3的data目錄下編寫一個叫 myid的文件命令爲:vi myid 裏面寫上3
在server.4的data目錄下編寫一個叫 myid的文件命令爲:vi myid 裏面寫上4
在server.5的data目錄下編寫一個叫 myid的文件命令爲:vi myid 裏面寫上5。
將配置好的zookeeper拷貝到其它四臺機器上(注:修改每臺機器上的myid)
scp -r /usr/local/zookeeper IP:/usr/local/
進入zookeeper的bin目錄啓動zkServer.sh start 啓動以後 輸入命令:jps 查看控制檯是否有QuorumPeerMain進程存在。成功後啓動另外四臺機器
測試zookeeper是否有報錯現象進入zookeeper的bin目錄輸入zkCli.sh 看下是否報錯現象.若是正常進行下一步安裝.
配置hadoop
解壓hadoop-2.2.0.tar.gz 進入hadoop解壓的etc/hadoop/目錄編輯六個文件分別是:core-site.xml, hadoop-env.sh, hdfs-site.xml , mapred-site.xml, yarn-site.xml, slaves
首先修改core-site.xml 配置以下:
配置解釋:
fs.defaultFs:指定hdfs的nameservice爲ns1,是NameNode的URI。hdfs://主機名:端口
hadoop.tmp.dir:這裏的路徑默認是NameNode、DataNode、JournalNode等存放數據的公共目錄。用戶也能夠本身單獨指定這三類節點的目錄
ha.zookeeper.quorum:這裏是ZooKeeper集羣的地址和端口。注意,數量必定是奇數,且很多於三個節點。
配置hadoop-env.sh (只須要指定jdk的安裝路徑便可)
配置hdfs-site.xml
配置解釋:
dfs.namenode.name.dir :
指定namenode名稱空間的存儲地址。
dfs.namenode.data.dir:
指定datanode數據存儲地址
dfs.replication:
指定數據冗餘份數。
dfs.nameservices:
指定hdfs的nameservice爲cluster1,須要和core-site.xml中的保持一致。
dfs.ha.namenodes.cluster1:
cluster1下面有兩個NameNode,分別是master1,master2.
dfs.namenode.rpc-address.cluster1.master1:
maste1的RPC通訊地址.
dfs.namenode.http-address.cluster1.master1:
master1的http通訊地址
dfs.namenode.rpc-address.cluster1.master2:
maste1的RPC通訊地址
dfs.namenode.http-address.cluster1.master2:
master1的http通訊地址
dfs.namenode.shared.edits.dir:
指定NameNode的元數據在JournalNode上的存放位置
dfs.ha.automatic-failover.enabled.cluster1:
指定支持高可用自動切換機制
dfs.client.failover.proxy.provider.cluster1:
配置失敗自動切換實現方式
dfs.journalnode.edits.dir:
指定Journalnode的元數據在JournalNode上的存放位置
dfs.ha.fencing.methods:
配置隔離機制
dfs.ha.fencing.ssh.private-key-files:
使用隔離機制時須要ssh免密碼登錄
ha.failover-controller.cli-check.rpc-timeout.ms:
手動運行的FC功能(從CLI)等待健康檢查、服務狀態的超時時間。
ipc.client.connect.timeout:
SSH鏈接超時,毫秒,僅適用於內建的sshfence fencer
dfs.image.transfer.bandwidthPerSec:
Image文件傳輸時能夠使用的最大帶寬,秒字節。0表示沒有限制。HA方式使用不到,可不關注
dfs.web.ugi:
Web服務器使用的用戶名。若是將這個參數設置爲超級用戶的名稱,則全部Web客戶就能夠看到全部的信息
4.配置mapred-site.xml
配置解釋:
mapreduce.framework.name:mapreduce:
創建在指定yarn之上
mapred.local.dir:
MR 的中介數據文件存放目錄
mapreduce.jobhistory.address:
配置 MapReduce JobHistory Server 地址,默認端口10020
mapreduce.jobhistory.webapp.address:
配置 MapReduce JobHistory Server web ui 地址,默認端口19888
5.配置yarn-site.xml
配置解釋:
yarn.resourcemanager.hostname:
開啓故障自動切換至master
yarn.resourcemanager.address:
ResourceManager 對客戶端暴露的地址。客戶端經過該地址向RM提交應用程序,殺死應用程序等
yarn.resourcemanager.scheduler.address:
ResourceManager 對ApplicationMaster暴露的訪問地址。ApplicationMaster經過該地址向RM申請資源、釋放資源等。
yarn.resourcemanager.webapp.address:
ResourceManager對外web ui地址。用戶可經過該地址在瀏覽器中查看集羣各種信息。
yarn.resourcemanager.resource-tracker.address :
ResourceManager 對NodeManager暴露的地址.。NodeManager經過該地址向RM彙報心跳,領取任務等
yarn.nodemanager.aux-services:
NodeManager上運行的附屬服務。需配置成mapreduce_shuffle,纔可運行MapReduce程序
配置slaves
7.啓動hadoop集羣
1. 首先五臺機器啓動zookeeper zkServer.sh start啓動journalnode 在master1,master2,slave1,slave2,slave3 的sbin目錄中 hadoop-daemon.sh start journalnode。
2.格式化zookeeper在master1上便可命令: hdfs zkfc -formatZK
3.對master1主節點進行HDFS格式化bin/hadoop namenode –format,看是否報錯。。若是沒有報錯進行下一步,啓動主節點的namenode命令是:sbin/hadoop-daemon.sh start namenode.
4.對master2主節點進行HDFS格式化bin/hadoop namenode -bootstrapStandby,看是否報錯。。若是沒有報錯進行下一步,啓動主節點的namenode命令是:sbin/hadoop-daemon.sh start namenode
5.在master1和master2啓動zkfc:
sbin/hadoop-daemon.sh start zkfc
咱們的master1、master2有一個節點就會變爲active狀態.
6.啓動datanode :在master1上執行sbin/hadoop-daemon.sh start datanode
7.啓動yarn 在master1,master2上sbin/start-yarn.sh
8.檢查是否啓動成功在控制檯上jps 看下進程是否正確主節點
備用節點進程顯示以下:
在訪問50070端口和8088端口是否可以訪問,正常的話hadoop集羣算是成功了.
8.配置hive
配置hive
解壓hive包進入hive目錄的conf下面修改hive-default.xml.template, hive-env.sh.template 爲hvie-site.xml和hive-env.sh
編輯hive-site.xml(最好是本身vi一個hive-site.xml由於默認配置文件裏面的配置都是系統配置的)
配置解釋:
hive.metastore.warehouse.dir:
(HDFS上的)數據目錄默認值是/user/hive/warehouse
hive.exec.scratchdir:
(HDFS上的)臨時文件目錄,默認值是/tmp/hive-${user.name}
hive.querylog.location:
Hive 實時查詢日誌所在的目錄,若是該值爲空,將不建立實時的查詢日誌。
javax.jdo.option.ConnectionURL:
元數據庫的鏈接 URL。
javax.jdo.option.ConnectionDriverName:
JDBC驅動
javax.jdo.option.ConnectionUserName:
用戶名
javax.jdo.option.ConnectionPassword:
密碼
hive.metastore.authorization.storage.checks:
屬性被設置成true時,Hive將會阻止沒有權限的用戶進行表刪除操做
3.編輯hive-env.sh (指定hadoop安裝目錄)
4.加載mysql驅動到hive的lib目錄中
5.在10.1.3.125上安裝mysql數據庫創建database 爲hive的數據庫設置alter database hive character set latin1; 改變hive元數據庫的字符集.當前鏈接的用戶遠程鏈接權限.
6.啓動hive 進入hive安裝bin目錄./hive 啓動若是不報錯的話進去