Hive的远程模式
cd /usr/local/hive-1.2.1
rm -rf ./examples/
2.我们第一台已经配好 所以2不用管了
copy hive文件
scp -r …/hive-1.2.1 hadoop02:/usr/local/
scp -r …/hive-1.2.1 hadoop03:/usr/local/
copy hive的配置文件
scp -r /etc/profile hadoop02:/etc/profile
scp -r /etc/profile hadoop03:/etc/profile
然后02 03分别
source /etc/profile
which hive
看一下是否成功
然后到02这边配置配置文件
hive.metastore.local false hive.metastore.uris thrift://hadoop01:9083cd /usr/local/hive-1.2.1/
vi ./conf/hive-site.xml
把内容都删掉
然后加入上面的东西
03也这么弄
启动服务有个小问题 先删掉那个东西 我们一块给复制过来了
这样就配置好了
然后
01启动服务hive
01(复制一个01) 02 03 客户端都启动hive客户端
开启hive服务
hive --service metastore
出问题 原因 看截图 我的配置文件端口写成9080了 应该是9083
我这边hive的01 02 03都成功
02 03会出现这个 不过没什么问题 能用
02测试
Hive的优化explain的查询 job个数控制等
limit优化默认是没有开启的
join设置
一个JVM里面允许的task数量就是一个
一个JVM里面可以重用的task也是一个
数据倾斜
1000万条数据大部分是uid为0开头
先创建a9
第二个语句
这样 为了我也能使用aa7这个表 这个^A间隔我敲不出来
所以我就重新创建aa7使其间隔为tab键
下面是我依照视频测试的
create table if not exists aa9 like aa7 location ‘hdfs://qf/user/hive/warehouse/olqf.db/aa7’;
select a7.*
from aa7 a7
where a7.id in(
select id
from aa9
where aa9.id > 3
limit 1
)
;
select a7.*
from aa7 a7
left join aa9 a9
on a7.id = a9.id
where a9.id > 3
limit 1
;
第一条语句 三个job 费时230s
第二条语句 一个job 79s