集群部署如果多機采用虛擬機方便一點,可以在一台機器上配置完成后以此為模板創建其他虛擬機,否則就需要在每台機器上做一些重復的工作和檢查。盡量借助一些運維工具以減輕工作量。
以3主機集群介紹
1.1 准備集群主機
1.1.1 主機規划
規划各主機的IP地址,主機名,每主機上要部署的服務。例如
| IP地址 |
主機名 |
Hadoop服務 |
Impala服務 |
| 192.168.179.150 |
Impala1 |
NameNode,DataNode |
Impalad |
| 192.168.179.151 |
Impala2 |
DataNode |
Impalad, Catalogd,Statestored |
| 192.168.179.152 |
Impala3 |
DataNode |
Impalad |
備注:Hadoop 實現單NameNode,三個DataNode模式。如果NameNode采用主備模式,則下面的配置需要更改,步驟也不盡相同。Hadoop NameNode配置不是本文重點。單NameNode已足夠集群功能演練使用。
1.1.2 ssh互信
實現方法參考 http://blog.chinaunix.net/uid-16979052-id-3568036.html
各主機間ssh互操作不提示輸入密碼。
1.1.3 各單機部署
1.1.3.1 文件拷貝
將編譯生成並復制的可執行文件,一起拷貝到本機某目錄下,比如/root/impala2
1.1.3.2 安裝JDK
安裝JDK。方法同編譯部分。
1.1.3.3 環境變量
~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
~/.bash_profile
export IMPALA_HOME=/root/impala2
source /etc/default/impala
1.1.3.4 關閉/禁用防火牆
systemctl disable firewalld
systemctl stop firewalld
1.1.3.5 修改hosts文件
192.168.179.150 impala1
192.168.179.151 impala2
192.168.179.152 impala3
1.1.3.6 時間同步
Ntp服務。
1.2 HDFS配置及初始化
操作需要在每台主機上執行,配置文件core-site.xml,hdfs-site.xml 各主機要保持一致。
在每個datanode執行
mkdir /var/run/hdfs-sockets/ mkdir -p /usr/local/hadoop/hdfs/data mkdir /var/run/hdfs-sockets/
在namenode執行
mkdir -p /usr/local/hadoop/hdfs/name
1.2.1 core-site.xml
文件路徑 /etc/hadoop/core-site.xml
<configuration> <property> <name>fs.default.name</name> <value>hdfs://impala1</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> </property>
1.2.2 hdfs-site.xml
文件路徑 /etc/hadoop/hdfs-site.xml
<configuration> <property> <name>dfs.nameservices</name> <value>impala1</value> </property> <property> <name>dfs.ha.namenodes.impala1</name> <value>impala1</value> </property> <property> <name>dfs.replicatioin</name> <value>2</value> </property> <property> <name>dfs.name.dir</name> <value>/usr/local/hadoop/hdfs/name</value> </property> <property> <name>dfs.data.dir</name> <value>/usr/local/hadoop/hdfs/data</value> </property> <property> <name>dfs.client.read.shortcircuit</name> <value>true</value> </property> <property> <name>dfs.domain.socket.path</name> <value>/var/run/hdfs-sockets/dn</value> </property> <property> <name>dfs.client.file-block-storage-locations.timeout.millis</name> <value>10000</value> </property> <property> <name>dfs.datanode.hdfs-blocks-metadata.enabled</name> <value>true</value> </property> </configuration>
1.2.3 Slaves
配置hdfs datanode 主機名,文件/etc/hadoop/slaves
內容為
Impala1 Impala2 Impala3
1.2.4 HDFS初始化
在namenode上執行
source /etc/hadoop/hadoop-env.sh hadoop namenode -format
1.3 Impala配置及初始化
操作需要在每台主機上執行,配置文件各主機保持一致。
1.3.1 Impala配置文件
路徑/etc/default/impala
IMPALA_STATE_STORE_HOST=impala2 IMPALA_STATE_STORE_PORT=24000 IMPALA_BACKEND_PORT=22000 IMPALA_LOG_DIR=/var/log/impala IMPALA_CATALOG_SERVICE_HOST=impala2 其他和單機一樣
1.3.2 初始化
mkdir /var/log/impala
1.4 啟動服務
修改~/.bash_profile增加 避免每次輸入
source /etc/hadoop/hadoop-env.sh
注意在啟動前source /etc/default/impala 使配置生效。
1.4.1 啟動hdfs
在namenode上執行
source /etc/hadoop/hadoop-env.sh start-dfs.sh
啟動成功后jps可以看到每主機上都有datanode,在impala1上有namenode進程。
1.4.1.1 常用HDFS操作
Hdfs操作命令和linux文件操作類似。
列出hdfs根目錄下的文件
hadoop fs -ls /
上傳本地文件到hdfs
hadoop fs -put localpath hdfspath
查看hdfs文件內容
hadoop fs -cat hdfsfilepath
1.4.2 啟動impala服務
impala2
nohup ${CATALOGCMD} >> catalog.log 2>&1 &
nohup ${STATESTORECMD} >> statestore.log 2>&1 &
所有主機上
nohup ${IMPALADCMD} -kudu_master_hosts=192.168.179.146:7051 >> impalad.log 2>&1 &
1.5 shell功能測試
可以在任何一台運行了impalad的機器上打開impala-shell。
功能測試和單機部署時的shell功能測試一樣
不同主機上shell連接的實際是同一個impala集群。所以在A主機上創建的表,可以在B主機上的shell中看到並操作。
1.6 WEB服務監控
Impala各組件提供了web監控的方式,可以以此查看配置和運行情況。
http://192.168.179.151:25000/
http://192.168.179.151:25010/
http://192.168.179.151:25020/
