1.关于 Phoenix 相关参数及默认值请见
Phoenix各个参数的含义及默认值
2.如何修改 Phoenix 并生效
2.1 在 hbase-site.xml 配置文件中添加或者修改 Phoenix 相关参数
#注意修改正确路径下的hbase-site.xml文件(正确路径在哪里,后面会提到)
2.2 重启 QueryServer 服务,使修改生效
2.2.1 查看QueryServer 服务id
jps 命令查看 QueryServer 服务id
2.2.2 杀QueryServer服务
kill -9 服务id 杀掉服务
2.2.3 重启 QueryServer 服务
cd /opt/phoenix/bin/
./queryserver.py start
3.测试环境修改 Phoenix 演示
3.1 修改配置文件
#在配置文件中添加 phoenix.query.queueSize 参数,并保存
3.2 重启 QueryServer
通过 cd /opt/phoenix/bin/ & ./queryserver.py start 命令启动 QueryServer ,至此参数修改生效
4.怎么确定修改哪个路径下的hbase-site.xml 配置文件
说实话刚开始在百度中查到的都是说修改phoenix bin 目录下面的配置文件,试了并没有用。我们去phoenix 的启动文件中找它的配置文件信息,我们可以看到如下相关信息:
......
......省略多行
import phoenix_utils
phoenix_utils.setPath()
......
......省略多行
# HBase configuration folder path (where hbase-site.xml reside) for
# HBase/Phoenix client side property override
hbase_config_path = phoenix_utils.hbase_conf_dir
hadoop_config_path = phoenix_utils.hadoop_conf
hadoop_classpath = phoenix_utils.hadoop_classpath
#我们看到 phoenix 启动脚本中通过 phoenix_utils 这个模块来确定 hbase-site.xml 配置文件的位置,那我们看看这个模块就能知道如何生成配置文件的路径了
在 queryserver.py 同目录下有 phoenix_utils.py 模块,该模块中我们可以看到有关配置文件的如下信息:
def setPath():
PHOENIX_CLIENT_JAR_PATTERN = "phoenix-*-client.jar"
PHOENIX_THIN_CLIENT_JAR_PATTERN = "phoenix-*-thin-client.jar"
PHOENIX_QUERYSERVER_JAR_PATTERN = "phoenix-*-queryserver.jar"
PHOENIX_TRACESERVER_JAR_PATTERN = "phoenix-tracing-webapp-*-runnable.jar"
PHOENIX_TESTS_JAR_PATTERN = "phoenix-core-*-tests*.jar"
PHOENIX_PHERF_JAR_PATTERN = "phoenix-pherf-*-minimal*.jar"
# Backward support old env variable PHOENIX_LIB_DIR replaced by PHOENIX_CLASS_PATH
global phoenix_class_path
phoenix_class_path = os.getenv('PHOENIX_LIB_DIR','')
if phoenix_class_path == "":
phoenix_class_path = os.getenv('PHOENIX_CLASS_PATH','')
global hbase_conf_dir
# if HBASE_CONF_DIR set explicitly, use that
hbase_conf_dir = os.getenv('HBASE_CONF_DIR', os.getenv('HBASE_CONF_PATH'))
#如果定义了 HBASE_CONF_DIR 环境变量,那么配置文件路径由该环境变量决定(我的测试环境中没有配置该变量)
if not hbase_conf_dir:
#如果没有配置 HBASE_CONF_DIR 环境变量,进入下面的 if 判断
# else fall back to HBASE_HOME
if os.getenv('HBASE_HOME'):
#如果配置了HBASE_HOME环境变量,那么配置文件路径由 HBASE_HOME 环境变量决定
hbase_conf_dir = os.path.join(os.getenv('HBASE_HOME'), "conf")
elif os.name == 'posix':
#如果没有配置HBASE_HOME环境变量,系统为 linux 操作系统,那么配置文件路径为/etc/hbase/conf(我的测试环境就是这个情况)
# default to the bigtop configuration dir
hbase_conf_dir = '/etc/hbase/conf'
else:
#如果以上情况都不满足,则配置文件路径为 当前路径(即启动文件所在路径也就是phoenix的bin目录下)
# Try to provide something valid
hbase_conf_dir = '.'
global hbase_conf_path # keep conf_path around for backward compatibility
hbase_conf_path = hbase_conf_dir
global current_dir
current_dir = os.path.dirname(os.path.abspath(__file__))
#通过 phoenix_utils.py 模块,我们可以清晰的知道我们当前环境下应该使用哪个路径下的配置文件,所以就修改那个路径下的配置文件,然后重启 QueryServer 就ok 了