前言:在实际大数据分析项目中,使用 SparkSQL 时,往往启动一个 SparkThriftserver 服务,分配较多资源(Executor数目和内存、CPU),不同的用户启动客户端比如 beeline 连接它,编写SQL语句分析数据,方便集中管理。
至于关系嘛,如图所示:
注意上方“红框的 hiveserver2 架构”和“绿框的 Spark Thriftserver 架构”中间有一些东西是重叠共用的。
- 首先需要启动 hive 的 metastore 服务。
nohup /export/server/hive/bin/hive --service metastore 2>&1 > /tmp/hive-metastore.log &
- metastore 进程会占用 9083 端口。
- Spark Thriftserver 不需要 启动hiveserver2 进程。
- 启动Spark的thriftserver服务。
- 注意不要选取10000端口,因为10000端口通常作为 hiveserver2 进程的端口。比如选用10001
- 如果在企业中可以申请很多资源。比如向 yarn 申请200C:
/export/server/spark/sbin/start-thriftserver.sh \ --hiveconf hive.server2.thrift.port=10001 \ --hiveconf hive.server2.thrift.bind.host=node1 \ --master yarn \ --num-executors 50 \ --executor-cores 4 \ --executor-memory 12G \
- 此处如果自测练习,就少一点:
SPARK_HOME=/export/server/spark $SPARK_HOME/sbin/start-thriftserver.sh \ --hiveconf hive.server2.thrift.port=10001 \ --hiveconf hive.server2.thrift.bind.host=node1.itcast.cn \ --master local[2]
- 启动客户端 beeline 去连接上面的 Spark Thriftserver。
- 进入 beeline 客户端:
/export/server/spark/bin/beeline #进入后 !connect jdbc:hive2://node1:10001
- 连接数据库需要用户名和密码,就是 Linux 的用户名和密码。
- 如果不输入用户名和密码,则是以匿名用户 anonymous 登录的,后期有时写表数据时会权限不足。
- 最好用 root 和密码登录,不会有权限限制问题。
- 也可以在 Pycharm 中配置客户端连接 Spark 的 thriftserver 服务。
- 如何查看mestore进程是否占用了9083端口号?
- 先[ jps ]或[ ps -ef | grep 关键词] 得到进程号。
- 再 netstat -antp | grep 进程号,返回端口号。