前言
大数据组件多数提供了交互式命令行的方式,方便用户操作。这种交互式命令行实际上是一种客户端应用程序。该应用程序使用自己定义的一套命令进行操作。但是交互式命令行非常不便于使用程序操作(例如一些SSH工具等)。我们可以通过一定的手段(管道操作或者参数支持传入命令等)将其变为非交互方式执行。
例如Zookeeper,使用交互式命令行方式可进入Zookeeper client。命令行等待用户的输入,不会返回。
[root@manager bin]# ./zkCli.sh -server zk_server:2181
Connecting to zk_server:2181
2023-08-24 00:08:19,234 [myid:] - INFO [main:Environment@98] - Client environment:zookeeper.version=3.6.3---1, built on 12/22/2022 07:26 GMT
...
[zk: zk_server:2181(CONNECTED) 0]
如果需要转换成非交互式命令,可用如下方式:
[root@manager bin]# ./zkCli.sh -server zk_server:2181 ls /
Connecting to zk_server:2181
2023-08-24 00:16:19,603 [myid:] - INFO [main:Environment@98] - Client environment:zookeeper.version=3.6.3---1, built on 12/22/2022 07:26 GMT
...
[admin, atsv2-hbase-secure, atsv2-hbase-unsecure, brokers, cluster, config, consumers, controller, controller_epoch, flink, hive, hiveserver2, hiveserver2-leader, infra-solr, isr_change_notification, kafka-acl, kafka-acl-changes, latest_producer_id_block, log_dir_event_notification, rmstore, zookeeper]
[root@manager bin]#
在上面例子中,可以拿到ls /
的执行结果,然后立刻返回。
下面整理了常见的大数据组件非交互式命令行的操作方式示例。不定期更新。
Zookeeper
./zkCli.sh -server ${zk_server}:2181 ls /
HBase
echo "list" | hbase shell -n
Beeline(Hive / Kyuubi / Spark Thrift Server / Presto)
beeline -n hive -p hive -e 'show databases'
Flink SQL Client
./sql-client.sh -i ${init_script} -f ${sql_script}
Spark Shell
cat ${your_scala_script_file} | ${spark_home}/bin/spark-shell --master yarn ...
echo "${your_scala_script}" | ${spark_home}/bin/spark-shell --master yarn ...
Spark SQL
echo 'show databases;' | ${spark_home}/bin/spark-sql
Redis
echo "set abc 123" | redis-cli -c -h ${redis_server} -p 7001
Clickhouse
clickhouse-client -h ${clickhouse_server} -d default -m -u admin --password admin -q 'show databases;'
Kerberos admin
kadmin.local -q "addprinc -pw admin admin/admin"
网友评论