面试心经02--大数据开发工程师

一,hive数据库

 hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。Hive支持HSQL,是一种类SQL。

1,Hive在HDFS上的默认存储路径

默认有一个根目录,在hive-site.xml中,由参数hive.metastore.warehouse.dir指定。默认值为/user/hive/warehouse.

2,显示当前数据库的名称

数据库很多的环境下工作,显示当前数据库的名称,方便操作。
设置参数:
	set hive.cli.print.current.db=true
查询语句:
	prompt     //显示当前数据库名称

3,hive的表操作

重命名:更改表名
	ALTER TABLE table_name RENAME TO new_table_name;
增加列:ADD 是代表新增一字段
	alter table table_name add columns(字段名 string);
更新列:更新字段类型
	alter table table_name change column 字段名 desc int;
替换列:表示替换表中所有字段
	alter table table_name replace columns(deptno string, dname  string, loc string); 

4,hive的删除操作

默认情况下,Hive不允许删除一个里面有表存在的数据库,如果想删除数据库,要么先将数据库中的表全部删除,要么可以使用CASCADE关键字,使用该关键字后,Hive会自己将数据库下的表全部删除。RESTRICT关键字就是默认情况,即如果有表存在,则不允许删除数据库。
(1)先把表删干净,再删库
(2)删库时在后面加上cascade,表示级联删除此数据库下的所有表:drop database if exists foo cascade; 

5,内部表和外部表

Hive中的表分为内部表(MANAGED_TABLE)和外部表(EXTERNAL_TABLE)。
区别:
	(1)Hive中的表分为内部表(MANAGED_TABLE)和外部表(EXTERNAL_TABLE)。
	(2)外部表DROP时候不会删除HDFS上的数据;
应用场景:
	(1)内部表:Hive中间表、结果表、一般不需要从外部(如本地文件、HDFS上load数据)的情况。
	(2)外部表:源表,需要定期将外部数据映射到表中。

二,Impala

Impala是基于Hive的大数据实时分析查询引擎,直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的metastore中。并且impala兼容Hive的sql解析,实现了Hive的SQL语义的子集,功能还在不断的完善中。Impala不需要把中间结果写入磁盘,省掉了大量的I/O开销。
impala的查询方式有:通过impala-shell脚本窗口执行查询命令,通过hue的可视化界面查询,通过jdbc或者odbc查询。jdbc的使用,由于Impala并没有把相关的驱动包发布到maven,因此如果想要使用,就需要手动下载jar包,上传到私库中。

1,Impala的三个进程

(1)Impalad:impalad是impala主要的工作计算进程,负责接收client的请求,变成协调者角色,然后解析查询请求,拆分成不同的任务分发给其他的Impalad节点进程。每个Impalad工作节点进程接收到请求后,开始执行本地查询(比如查询hdfs的datanode或者hbase的region server),查询结果返回给协调者。协调者搜集到请求数据合并返回给client。每个Impalad又包含三种角色,当接收到client的请求时,由planner解析查询sql,拆分成一个个可以并行的小任务;然后通过coordinator发送给其他的节点;其他的节点接收请求后,由excutor执行本地查询。
(2)StatStore:状态管理进程,负责搜集各个节点的健康状况,当某个节点挂掉时,负责通知其他的节点不要往这个节点发送任务。statestore由于只负责状态通知,因此当这个进程挂掉并不影响impalad查询,只是可能会发送任务到挂掉的节点,集群的鲁棒性差一些而已。
(3)Catalog:元数据变化同步进程,由于每个impalad都可以作为coordinator角色,那么当一个节点接收到数据变更,比如alter指令,其他的节点如何知晓呢?就可以通过catalog来同步,每个节点的变化都通知给catlog进程,它再同步给其他的节点,每个节点都维护一份最新的元数据信息,这样就不怕查询的数据不一致了。

2,Impala相对于Hive所使用的优化技术

(1)没有使用 MapReduce进行并行计算,虽然MapReduce是非常好的并行计算框架,但它更多的面向批处理模式,而不是面向交互式的SQL执行。与 MapReduce相比:Impala把整个查询分成一执行计划树,而不是一连串的MapReduce任务,在分发执行计划后,Impala使
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓之以理的喵~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值