impala架构零差错安装攻略
Apache Impala
- impala 介绍
- 基于hive的数仓工具 提供了准实时的交互式sql查询分析能力 和hive共用一套元数据存储
- hive是基于hadoop的数仓工具 提供了sql分析数据的能力 批处理数据分析工具
- 是企业中 imapla通常配合hive一起进行数仓数据分析
- 来自于cloudera 后来贡献给了apache
- impala和hive的关系
和hive共用一套元数据的存储 - impala和hive的区别
-
执行机制
hive: hive sql–>mr—>yarn—>hdfs
最大的弊端在于mr执行中资源申请消耗数据之间的shuffle。尤其涉及多个mr程序串联 影响会放大impala:impala sql-->执行计划数-->hdfs
-
语言层面
hive:java 依赖于jvm 涉及启动销毁 属于偏上层语言。
impala: C++ 偏向于底层语言 可以更好的调用系统资源 -
数据流
hive :推的方式 前述节点计算完毕数据退给后续节点计算
impala:拉的方式 不断调用获取前述节点的计算结果 边拉边计算 -
内存
hive优先使用内存 如果不足 使用外存(磁盘)
impala当下只用内存 内存不足报错 通常去配合hive使用。 -
调度
hive 资源调度是用yarn完成
impala 自己调度 策略极其简单 -
容错
hive容错准备来说就是hadoop容错机制 task重试机制 推测执行机制
impala没有容错能力 设计的时候认为 错了再来也会很快 再执行的成本低 -
适用层面
hive适用于复杂的批处理任务分析
impala适用于交互式实时任务处理 通常要hive使用
-
impala安装
-
安装方式
- 只有cloudera提供了impala的rpm包 且安装rpm包之间会有依赖问题 所有通常是去下载cloudera所有rpm包制作本地yum源 使用yum方式安装
cdh5.14.0-centos6.tar.gz
- 只有cloudera提供了impala的rpm包 且安装rpm包之间会有依赖问题 所有通常是去下载cloudera所有rpm包制作本地yum源 使用yum方式安装
-
配置本地yum源
-
上传cdh5.14.0-centos6.tar.gz 到一台服务器 要求磁盘够大
在待上传的机器crt窗口中 按下 alt+p 打开sftp 会话窗口
使用put e://xxxxx.tar.gz -
解压安装包到可以放的下的路径
-
安装httpd服务器 对外提供yum访问
yum -y install httpd
service httpd start
chkconfig httpd on -
创建软链接
ln -s /cloudera_data/cdh/5.14.0 /var/www/html/cdh5.14.0
ln -s 真实文件夹路径 虚拟的路径 -
修改本地yum源配置
cd /etc/yum.repos.d
vim localimp.repo[localimp] name=localimp baseurl=http://node-1/cdh5.14.0/ gpgcheck=0 enabled=1
-
永久确保 linux 的 Selinux 关闭
vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled
重启服务 reboot -
把本地yum源的配置文件复制其他的机器上
-
yum在线安装的impala
-
node-1
yum install -y impala impala-server impala-state-store impala-catalog impala-shell -
node-2 node-n
yum install -y impala-server -
安装之后检查yum安装日志 确保impala相关rpm成功安装
-
Q:服务的缺失
Installed:
impala.x86_64 0:2.11.0+cdh5.14.0+0-1.cdh5.14.0.p0.50.el6
impala-server.x86_64 0:2.11.0+cdh5.14.0+0-1.cdh5.14.0.p0.50.el6
impala-shell.x86_64 0:2.11.0+cdh5.14.0+0-1.cdh5.14.0.p0.50.el6Dependency Installed:
现象:
缺少 impala-state-store impala-catalog
原因之前的卸载不干净对于当前的影响解决:
首先卸载干净
rpm -qa |grep impala-state-store
impala-state-store-2.11.0+cdh5.14.0+0-1.cdh5.14.0.p0.50.el6.x86_64rpm -e impala-state-store-2.11.0+cdh5.14.0+0-1.cdh5.14.0.p0.50.el6.x86_64 --nodeps 卸载不掉?????? 原因:之前卸载的时候提前把rpm包的目录给卸载了 如果在删除包之前删除了包的目录??? rpm -e impala-state-store-2.11.0+cdh5.14.0+0-1.cdh5.14.0.p0.50.el6.x86_64 --noscripts 最后重新安装: yum install impala-state-store impala-catalog 的修复如上。
-
-
-
修改hadoop hive配置
-
hive 确保hive metastore服务是单独配置 单独启动的
conf/hive-site.xml
hive.metastore.uris
thrift://node-1:9083 -
把hive的安装包复制给其他机器
scp -r /export/servers/hive/ node-2:/export/servers/
scp -r /export/servers/hive/ node-n:/export/servers/
-
-
修改hadoop配置
-
创建一个文件夹 用于本地读取数据的交换
mkdir -p /var/run/hdfs-sockets -
修改配置文件开启本地读取数据的能力
hdfs-site.xml
dfs.client.read.shortcircuit
true
dfs.domain.socket.path
/var/run/hdfs-sockets/dn
dfs.client.file-block-storage-
locations.timeout.millis
10000
dfs.datanode.hdfs-blocks-
metadata.enabled
true -
把该配置文件复制给其他的机器
cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/scp -r hdfs-site.xml node-2:$PWD scp -r hdfs-site.xml node-n:$PWD
-
启动hadoop 再启动hive
确保Safemode is off.
启动hive
只需要启动metastore服务
nohup /export/servers/hive/bin/hive --service metastore &
-
-
修改impala配置
-
修改impala默认配置
所有节点更改 impala 默认配置文件
vim /etc/default/impala
IMPALA_CATALOG_SERVICE_HOST=node-1
IMPALA_STATE_STORE_HOST=node-1 -
添加mysql驱动
使用软链接 把机器上任何一个mysql驱动链接到impala指定的路径下
ln -s /export/servers/hive/lib/mysql-connector-java-5.1.32.jar /usr/share/java/mysql-connector-java.jar -
修改bigtop
修改 bigtop 的 java_home 路径(n 台机器)
vim /etc/default/bigtop-utils
export JAVA_HOME=/export/servers/jdk1.8.0_65
-
-
启动impala集群
-
impala-shell
-
启动之后一定去查看各个机器上的进程是否正常
ps -ef |grep impala-
如果进程不正常 首先去看日志 确定问题
/var/log/impala -
如果日志中也没有报错信息 怀疑之前的卸载不干净造成的
-
如果卸载重新安装也无法解决 在配置impala的时候 能不能去加载到hadoop hive的配置
把hadoop和hive的相关配置文件 加载到impala配置文件路径下
cp -r /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/core-site.xml /etc/impala/conf/core-site.xml
cp -r /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/hdfs-site.xml /etc/impala/conf/hdfs-site.xml
cp -r /export/servers/hive/conf/hive-site.xml /etc/impala/conf/hive-site.xml
-
-
-
最后一个大坑
- impala在yum安装的时候 会默认把hadoop生态圈软件默认安装一遍
且把脚本放置在/usr/bin 路径 权限最高 覆盖我们系统环境变量的配置-
解决: 删除该脚本即可 重新连接终端
rm -rf /usr/bin/hadoop
rm -rf /usr/bin/hive
rm -rf /usr/bin/hbase -
最好 把impala服务重新启动 保证服务的干净
-
impala使用注意事项
-
impala访问hive的时候 是以impala用户来访问的 涉及针对hdfs所有操作 可能都会遇到权限不足的问题
比如去创建数据库 插入数据 等-
更改文件夹的权限
hadoop fs -chmod -R 777 hdfs://node-1:9000/user/hive -
或者直接关闭hdfs权限检查
hdfs-site.xml
-
-
impala的数据发生改变 hive可以实时看到改变 impala最终修改的就是hive的元数据。
-
hive的数据发生改变 impala并不能实时看到改变 需要自己手动刷新元数据
-
针对单个表的增量刷新(表存在 数据增加)
refresh dbname.tablename -
针对整个hive的元数据刷新(新增数据库 表)
invalidate metadata -
造成以上原因的就是因为impala catalog
- 只能单方向同步元数据 impala---->hive 反之不可以
-
- impala在yum安装的时候 会默认把hadoop生态圈软件默认安装一遍
下一篇: 栈的实现
推荐阅读