网络营销需要学什么,深圳SEO网站建设优化,学东西的网站,wordpress上传pdf数据存储使用相同的存储数据池都支持把数据存储于HDFS, HBase。元数据#xff1a;两者使用相同的元数据SQL解释处理#xff1a;比较相似都是通过词法分析生成执行计划。执行计划#xff1a;Hive: 依赖于MapReduce执行框架#xff0c;执行计划分成 map-shuffle-redu…数据存储使用相同的存储数据池都支持把数据存储于HDFS, HBase。元数据两者使用相同的元数据SQL解释处理比较相似都是通过词法分析生成执行计划。执行计划Hive: 依赖于MapReduce执行框架执行计划分成 map-shuffle-reduce-map-shuffle-reduce…的模型。如果一个Query会 被编译成多轮MapReduce则会有更多的写中间结果。由于MapReduce执行框架本身的特点过多的中间过程会增加整个Query的执行时间。Impala: 把执行计划表现为一棵完整的执行计划树可以更自然地分发执行计划到各个Impalad执行查询而不用像Hive那样把它组合成管道型的 map-reduce模式以此保证Impala有更好的并发性和避免不必要的中间sort与shuffle。数据流Hive: 采用推的方式每一个计算节点计算完成后将数据主动推给后续节点。Impala: 采用拉的方式后续节点通过getNext主动向前面节点要数据以此方式数据可以流式的返回给客户端且只要有1条数据被处理完就可以立即展现出来而不用等到全部处理完成更符合SQL交互式查询使用。内存使用Hive: 在执行过程中如果内存放不下所有数据则会使用外存以保证Query能顺序执行完。每一轮MapReduce结束中间结果也会写入HDFS中同样由于MapReduce执行架构的特性shuffle过程也会有写本地磁盘的操作。Impala: 在遇到内存放不下数据时当前版本1.0.1是直接返回错误而不会利用外存以后版本应该会进行改进。这使用得Impala目前处理Query会受到一 定的限制最好还是与Hive配合使用。Impala在多个阶段之间利用网络传输数据在执行过程不会有写磁盘的操作(insert除外)调度Hive任务的调度依赖于Hadoop的调度策略。Impala的调度由自己完成目前的调度算法会尽量满足数据的局部性即扫描数据的进程应尽量靠近数据本身所在的物理机器。但目前调度暂时还没有考虑负载均衡的问题。从Cloudera的资料看Impala程序的瓶颈是网络IO目前Impala中已经存在对Impalad机器网络吞吐进行统计但目前还没有利用统计结果进行调度。容错Hive任务依赖于Hadoop框架的容错能力可以做到很好的failoverImpala中不存在任何容错逻辑如果执行过程中发生故障则直接返回错误。当一个Impalad失败时在这个Impalad上正在运行的所有query都将失败。但由于Impalad是对等的用户可以向其他Impalad提交query不影响服务。当StateStore失败时也不会影响服务但由于Impalad已经不能再更新集群状态如果此时有其他Impalad失败则无法及时发现。这样调度时如果谓一个已经失效的Impalad调度了一个任务则整个query无法执行。三、Impala Shell1、Impala 外部shell不进入Impala内部直接执行的ImpalaShell例如$impala-shell -h -- 通过外部Shell查看Impala帮助$impala-shell -p select count(*) from t_stu -- 显示一个SQL语句的执行计划下面是Impala的外部Shell的一些参数-h (--help) 帮助-v (--version) 查询版本信息-V (--verbose) 启用详细输出--quiet 关闭详细输出-p 显示执行计划-i hostname (--impaladhostname) 指定连接主机格式hostnameport 默认端口21000, impalad shell 默认连接本机impalad- r(--refresh_after_connect)刷新所有元数据-q query (--queryquery) 从命令行执行查询不进入impala-shell-d default_db (--databasedefault_db) 指定数据库-B(--delimited)去格式化输出--output_delimitercharacter 指定分隔符--print_header 打印列名-f query_file(--query_filequery_file)执行查询文件以分号分隔-o filename (--output_file filename) 结果输出到指定文件-c 查询执行失败时继续执行-k (--kerberos) 使用kerberos安全加密方式运行impala-shell-l 启用LDAP认证-u 启用LDAP时指定用户名2、Impala内部Shell#impala shell进入#普通连接impala-shell#impala shell命令#查看impala版本select version;#特殊数据库#default建立的没有指定任何数据库的新表#_impala_builtins用于保存所有内置函数的系统数据库#库操作#创建create database tpc;#展示show databases;#展示库名中含有指定(格式)字符串的库展示#进入use tpc;#当前所在库select current_database();#表操作#展示(默认default库的表)show tables;#指定库的表展示show tables in tpc;#展示指定库中表名中含有指定字符串的表展示show tables in tpc like customer*;#表结构describe city; 或 desc city;#select insert create alter#表导到另一个库中(tcp:city-d1:city)alter table city rename to d1.city#列是否包含null值select count(*) from city where c_email_address is null#hive中 create、drop、alter,切换到impala-shell中需要如下操作invalidate metadata#hive中 load、insert、change表中数据(直接hdfs命令操作),切换到impala-shell中需要如下操作refresh table_name3、参考文章