hive元数据库和使用介绍
hive 会将表的元数据信息存储在数据库中,这里采用mysql作为元数据库存储hive的元数据
元数据表中记录着很多hive中有用的信息,比如数据库实例,表,表结构,还有表数据的条数
表数据条数只有在hive为内部表时的统计是准确的,如果建立的表为外部表 (external)则需要执行统计语句才能得到准确结果
1
ANALYZE TABLE tablename COMPUTE STATISTICS;
使用元数据表中的统计数据可以很简单快捷的得到hive的元数据,比如表的数量,和数据量
mysql主从介绍
- mysql主从时利用mysql的日志来完成主从的,所以在做主从设置时,先要保证主数据库和从数据库数据的一致
迁移数据
- 如果主数据库中已经在做主从时已经存在数据那么,先将主数据库中数据复制到从数据库中,从而保证主数据库和从数据库数据的一致
配置主数据库配置文件
1 | vi /etc/my.cnf |
配置从数据配置文件
1 | #Mysql服务的唯一编号 每个mysql服务Id需唯一 |
设置主数据库复制账号
1 | CREATE USER 'slave'@'%' IDENTIFIED BY 'mysql'; |
查看是否开启日志
1
show variables like 'log_bin';
如果开启value值为on
Variable_name Value log_bin ON
查看主节点状态
1 | show master status; |
- 结果示例,表示 metastore实例日志文件为mysql-bin.000005,当前日志偏移量为1242284
File Position Binlog_Do_DB mysql-bin.000005 1242284 metastore
操作从数据库
其中change master语句中的master_log_file 为上一步查看的metastore日志文件,master_log_pos为该日志文件的偏移量,
这样主数据库中的数据发生变化,偏移量就会增长,从数据库根据偏移量去同步数据1
2
3
4
5
6# 停止正在进行的slave(如果有,此方法也用于修改slave的值(如果参数不对))
stop slave;
# 需要主机名,上面步骤的账户密码以及日志文件名字和位置(请根据实际情况自行修改)
change master to master_host='192.168.1.1', master_user='slave', master_password='mysql', master_log_file='mysql-bin.000005', master_log_pos=1242284;
# 启动
start slave;查看状态
1
2
3
4
5show slave status;
如果发现Slave_IO_Running和Slave_SQL_Running状态为YES则成功
Slave_IO_Running负责和主机通讯
Slave_SQL_Running负者执行从数据库sql语句
Last_Error复制记录上一次同步出错的出错愿意
遇到的问题
在配置主数据库配置文件时必须指定 binlog_format类型,不然hive建表会出错
配置从数据配置文件时,replicate-do-db=metastore和replicate-rewrite-db不能共存
当同步主数据库的数据到不同名字的从数据库中时,不可直接用Navicat图形化工具去直接操作数据库,应该写语句去执行,不然会导致同步失败
当执行show slave status 查看从节点状态时,发现Slave_IO_Running 一直未connecting,查看mysql错误日志文件(默认在/var/log/mysqld.log)发现Authentication plugin ‘caching_sha2_password’ reported error,从报错可以看出是caching_sha2_password插件的问题执行(将账号和密码替换成自己前面创建复制账号的账号和密码)
1 | ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY 'mysql'; |