起因
shell脚本在任何场景中都比较常见,对于大数据中也是如此,本文将以metastore service为例,讲解如何在大数据场景中编写一个通用的metastore service的shell脚本
hive metastore service
通常来说Hive的使用方式有2种:
- 直接启动hive
- 启动hiveserver2,配合beeline一起使用
关于metastore service的使用:
- 可以将metastore存在某一个地方,通过链接的方式去连接过来
- 也可以直接让metastore连接到本地
我们可以发现hive.metastore.local默认是true,可以自己去改成false,从而成为远程连接的模式
在hive-site.xml中添加
1 | <property> |
配置完成后,直接启动会产生报错
需要先启动metastore service
启动metastore service之后,再启动hive就不会报错了
需要注意的问题- 配置了上述内容之后,相当于我们不是用本地的metastore了,所有的东西都是启动在thrift://localhost:9083上,默认是9083端口
- 如果启用了metastore service,本地的类似这些配置都是不需要在hive-site.xml中添加了
因为这些东西在server端已经全部配置过了,因此在client端就不需要再配这些东西了
开启metastore service的作用
这是统一元数据管理的第一步
要做统一的元数据管理,使用这种模式是第一步,所有的东西都是通过服务的方式去拿的
通过jps –m查看metastore service相关信息
通用的metastore脚本编写
需要通过shell的方式对metastore进行一系列的启停
对于impala、hive、spark sql等一系列计算框架,都可以使用这个metastore脚本
创建metastore.sh脚本,并赋予执行权限
1 | $> chmod u+x metastore.sh |
需求:
- 只允许
hadoop
用户进行server的start&stop,其它用户是不能进行操作的 ./metastore.sh xxx
只允许输入1个参数,对应的参数应为start、stop、status、restart
;若没有输入,应有对应的提醒- 将对应的日志记录到metastore.log中去,对应的路径为:
/home/hadoop/shell/metastore/logs/metastore.log
- 启动metastore service之前需要检测对应的进程是否已经存在
- 启动metastore service,在编写的过程中可以借鉴hadoop、spark相关脚本的写法
以hive为例
首先需要将hive-site.xml
拷贝到/home/hadoop/shell/metastore/conf
目录下
只需要保留上述的2项配置内容即可
如何获取metastore service的进程id
具体内容参见
1 | source ~/.bash_profile |
对于stop、status、restart的内容没有写,后续进行完善更新
对于任何一个服务都可以按照这个模板进行封装