直接运行java程序

假设我们在容器中直接启动的是我们的程序,例如java -jar xxx.jar。如果执行docker stop <container>,则意味着调用了kill -15 1

对于java程序而言,它会接收到SIGTERM信号,Runtime的ShutdownHook钩子将会被回调。像spring这样的框架,都会把自己加入到ShutdownHook回调中,在回调中执行destroy、close等生命周期操作。

所以说如果只是执行kill -15 PID命令,java程序是可以优雅的关闭。但同时我们也能看出,如果在ShutdownHook钩子中执行很耗时的操作,那么执行这个命令短时间内也不会停止java程序。所以在ShutdownHook中尽量不要做耗时长的操作,而是应该处理一些IO关闭、缓存刷新的操作。

- 阅读剩余部分 -

Hive是一个使用类SQL管理分布式存储上大规模数据集的数据仓库,它提供了命令行工具和JDBC驱动程序帮助用户使用Hive。

hive基于hadoop,它的具体功能如下:

  • 通过SQL轻松访问数据的工具,从而实现数据仓库任务,例如提取/转换/加载(ETL),报告和数据分析。
  • 一种将结构强加于各种数据格式的机制
  • 访问直接存储在Apache HDFS ™ 或其他数据存储系统(例如Apache HBase ™)中的文件
  • 通过Apache Tez ™, Apache Spark ™或 MapReduce执行查询
  • HPL-SQL的过程语言
  • 通过Hive LLAP,Apache YARN和Apache Slider进行亚秒级查询检索。

以上内容来自Apache Hive官网,hive在1.x版本中只支持MapReduce,从2.x开始开始支持其他分布式计算引擎。

- 阅读剩余部分 -