Impala的优缺点
impala的优点与缺点:
impala的优点:快,非常快
impala的缺点:内存消耗大,官方推荐每台机器最少128G的内存
impala不提供数据的存储功能,只提供数据的计算的功能
impala的架构以及查询计划:
impala的架构:
impala-server:从节点,计算节点,主要负责执行我们的查询的任务的计算,官方建议 impala-server与每一个datanode安装在一起
impala-catalog:主节点 主要是存储了元数据信息在两个地方,一个在内存当中,一个在磁盘当中。impala当中的元数据管理的服务
impala-statestore:主节点,状态存储区,主要存储了一些sql执行的进度信息,状态信息等等
impala的查询计划:分为两个阶段
fronted : 使用java来实现,负责生成我们的查询计划
backend :使用的C++来实现,主要负责的是执行我们的查询
fronted前台的查询计划又分为两个阶段
第一个阶段:生成单机版的查询计划
第二个阶段:生成分布式的查询计划,将单机版的查询计划,发送到其他机器上
sql语句的优化,其实就是查询计划的优化,单机版的优化策略与分布式的优化策略是一样的
impala与hive的比较
impala比较快,hive比较慢
impala稳定性不如hive hive比较稳定
linux的磁盘挂载
第一步:虚拟机关机新增磁盘
在我们的虚拟机关机的状态下,在VMware当中新增一块磁盘
第二步:开机之后进行磁盘挂载
分区,格式化,挂载新磁盘
磁盘挂载
df -lh
fdisk -l
开始分区
fdisk /dev/sdb 这个命令执行后依次输 n p 1 回车 回车 w
fdisk -l
格式化我们的分区
mkfs -t ext4 -c /dev/sdb1 格式化我们的分区
mkdir /data02
将我们的分区挂载到/data02目录下
mount -t ext4 /dev/sdb1 /data02
df -lh
将我们的挂载磁盘设置开机启动,避免开机之后挂载的磁盘就没了
echo "/dev/sdb1 /data02 ext4 defaults 0 0" >> /etc/fstab
挂载完成之后,记得重新启动node03机器上面的mysql服务,datanode服务,nodemanager服务,zookeeper服务
Impala的安装
将我们5个G的压缩文件上传/data02目录下,并进行解压:
cd /data02/
tar -zxvf cdh5.14.0-centos6.tar.gz
制作本地yum源:
这里我们选用第三台机器作为镜像源的服务端
node03机器上执行以下命令
yum -y install httpd
service httpd start
cd /etc/yum.repos.d
vim localimp.repo
[localimp]
name=localimp
baseurl=http://node03/cdh5.14.0/
gpgcheck=0
enabled=1
创建apache httpd的读取链接:
ln -s /data02/cdh/5.14.0 /var/www/html/cdh5.14.0
页面访问本地yum源,出现这个界面表示本地yum源制作成功
将制作好的localimp配置文件发放到所有需要安装impala的节点上去:
cd /etc/yum.repos.d/
scp localimp.repo node02:$PWD
scp localimp.repo node01:$PWD
主节点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
从节点node01与node02安装以下服务
yum install impala-server -y
所有节点配置impala:
第一步:修改hive-site.xml
node03机器修改hive-site.xml内容如下
hive-site.xml配置
vim /export/servers/hive-1.1.0-cdh5.14.0/conf/hive-site.xml
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node03.hadoop.com:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</</