集群部署如果多机采用虚拟机方便一点,可以在一台机器上配置完成后以此为模板创建其他虚拟机,否则就需要在每台机器上做一些重复的工作和检查。尽量借助一些运维工具以减轻工作量。
以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/