关于impala介绍的网址
https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/impala_intro.html
Impala直接对存储在HDFS、HBase或Amazon Simple Storage Service(S3)中的Apache Hadoop数据提供快速的交互式SQL查询。除了使用相同的统一存储平台外,Impala还使用了与Apache Hive相同的元数据、SQL语法(Hive SQL)、ODBC驱动程序和用户界面(色调中的Impala查询UI)。这为实时或面向批处理的查询提供了一个熟悉的、统一的平台。Impala是大数据查询工具的补充。Impala不会替代构建在MapReduce上的批处理框架,比如Hive。Hive和其他构建在MapReduce上的框架最适合长时间运行的批处理作业,比如那些涉及提取、转换和加载(ETL)类型作业的批处理。
1.数据科学家和分析师已经熟悉的SQL接口。
2.能够在Apache Hadoop中查询大量数据。
3.在集群环境中使用分布式查询,方便扩展和利用具有成本效益的商品硬件。
4.能够在不同的组件之间共享数据文件,而不需要复制或导出/导入步骤;例如,用Pig来写,用Hive来转换,用Impala来查询。Impala可以读写Hiv表,支持使用Impala对hiveproduced数据进行分析的简单数据交换。
5.单一系统的大数据处理和分析,因此客户可以避免昂贵的建模和ETL只是为了分析。
1.基于内存计算,对内存依赖性较大
2.改用C++编写,意味着维护难度增大
3.基于hive,与hive共存亡,紧耦合
4.稳定性不如hive,但不存在数据丢失的情况
impala是基于hive的大数据分析查询引擎,直接使用hive的元数据库metadata,意味着impala元数据都存储在hive的metastore当中,并且impala兼容hive的绝大多数sql语法。所以需要安装impala的话,必须先安装hive,保证hive安装成功,并且还需要启动hive的metastore服务。
架构:
impala-server: 从节点。主要负责执行查询任务的计算,官方建议 impala-server与每一个datanode安装在一起
impala-catalog: 主节点。主要是存储了元数据信息在两个地方,一个在内存当中,一个在磁盘当中。impala当中的元数据管理的服务
impala-statestore: 主节点,状态存储区,主要存储了一些sql执行的进度信息,状态信息等等
查询计划:
fronted : 使用java来实现,负责生成查询计划
backend: 使用的C++来实现,主要负责的是执行查询
fronted前台的查询计划又分为两个阶段:
第一个阶段: 生成单机版的查询计划
第二个阶段: 生成分布式的查询计划,将单机版的查询计划,发送到其他机器上sql语句的优化,其实就是查询计划的优化,单机版的优化策略与分布式的优化策略是一样
要根据自己CDH的版本和centOS的版本选择下载,下载地址http://archive.cloudera.com/cdh5/repo-as-tarball
如果虚拟机磁盘不够大,就需要挂载磁盘,虚拟机挂载磁盘教学
cd /export/softwares
tar -zxvf cdh5.14.0-centos6.tar.gz -C ../servers
5.1在第三台机器node03执行以下命令:
yum -y install httpd
systemctl start httpd.service
cd /etc/yum.repos.d
vim localimp.repo
[localimp]
name=localimp
baseurl=http://node03/cdh5.14.0/
gpgcheck=0
enabled=1
5.2 创建apache httpd的读取链接
ln -s /data02/cdh/5.14.0 /var/www/html/cdh5.14.0
5.3 将制作好的localimp配置文件发放到所有需要安装impala的节点上去:
scp localimp.repo node02:$PWD
scp localimp.repo node01:$PWD
6.1 安装
在node01与node02上安装impala-server
在node03上安装impala-catalog,impala-state-store,impala-server
在node03执行以下命令
yum install impala -y
yum install impala-server -y
yum install impala-state-store -y
yum install impala-catalog -y
yum install impala-shell -y
6.2 在node01和node02执行
yum install impala-server -y
7.1 修改hive-site.xml
vim /export/servers/hive-1.1.0-cdh5.14.0/conf/hive-site.xml
添加配置
hive.metastore.uris</name>
thrift://node03.hadoop.com:9083</value>
</property>
hive.metastore.client.socket.timeout</name>
3600</value>
</property>
7.2 将node03的hive安装包发送到node01,node02
cd /export/servers/
scp -r hive-1.1.0-cdh5.14.0/ node02:$PWD
scp -r hive-1.1.0-cdh5.14.0/ node01:$PWD
7.3.node03启动hive的metastore服务
cd /export/servers/hive-1.1.0-cdh5.14.0
nohup bin/hive --service metastore &
nohup bin/hive -- service hiveserver2 &
7.4 所有hadoop节点修改hdfs-site.xml
在所有节点创建文件夹 mkdir -p /var/run/hdfs-sockets
修改所有节点的hdfs-site.xml
vim /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/hdfs-site.xml
添加配置
dfs.client.read.shortcircuit</name>
true</value>
</property>
dfs.domain.socket.path</name>
/var/run/hdfs-sockets/dn</value>
</property>
dfs.client.file-block-storage-locations.timeout.millis</name>
10000</value>
</property>
dfs.datanode.hdfs-blocks-metadata.enabled</name>
true</value>
</property>
如果是普通用户的话需要给文件夹添加访问权限:/var/run/hadoop-hdfs/
chown -R hadoop:hadoop /var/run/hdfs-sockets/
7.5 重启hdfs
node01执行:
cd /export/servers/hadoop-2.6.0-cdh5.14.0/
sbin/stop-dfs.sh
sbin/start-dfs.sh
7.6 创建hadoop与hive的配置文件的连接
impala的配置目录为 /etc/impala/conf
这个路径下面需要把core-site.xml
,hdfs-site.xml
以及hive-site.xml
拷贝到这里来,但是我们这里使用软连接的方式会更好
所有节点都要执行
ln -s /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/core-site.xml /etc/impala/conf/core-site.xml
ln -s /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/hdfs-site.xml /etc/impala/conf/hdfs-site.xml
ln -s /export/servers/hive-1.1.0-cdh5.14.0/conf/hive-site.xml /etc/impala/conf/hive-site.xml
7.7 修改impala的配置文件
所有节点更改impala默认配置文件
vim /etc/default/impala
IMPALA_CATALOG_SERVICE_HOST=node03
IMPALA_STATE_STORE_HOST=node03
所有节点创建mysql的驱动包的软连接
ln -s /export/servers/hive-1.1.0-cdh5.14.0/lib/mysql-connector-java-5.1.38.jar /usr/share/java/mysql-connector-java.jar
所有节点修改bigtop的java路径
vim /etc/default/bigtop-utils export JAVA_HOME=/export/servers/jdk1.8.0_141
7.8 启动impala服务
在node03启动
service impala-state-store start
service impala-catalog start
service impala-server start
在node01和node02启动
service impala-server start
7.9 访问
访问impalad的管理界面
http://node03:25000/
访问statestored的管理界面
http://node03:25010/
访问catalog的管理界面
http://node03:25020