- 首先,请确保调试alluxio源码的环境是一个类Unix的系统环境
后台验证启动
在${ALLUXIO_HOME}目录下进行操作
在后台启动alluxio:
$ ./bin/alluxio-start.sh local SudoMount
1.8.1-server启动后,后台运行四个进程($ jps 命令可以查看到当前后台运行的进程):
AlluxioWorker
AlluxioProxy
AlluxioMaster
AlluxioSecondaryMaster
idea中启动调试master/worker/proxy
查看后台运行的Alluxio进程的详细参数信息:(参数示例如下)
$ jps -lmv | grep Alluxio
89271 alluxio.worker.AlluxioWorker -Dalluxio.home=/Users/Documents/GitProject/alluxio -Dalluxio.conf.dir=/Users/Documents/GitProject/alluxio/conf -Dalluxio.logs.dir=/Users/Documents/GitProject/alluxio/logs -Dlog4j.configuration=file:/Users/Documents/GitProject/alluxio/conf/log4j.properties -Dorg.apache.jasper.compiler.disablejsr199=true -Djava.net.preferIPv4Stack=true -Dalluxio.logger.type=WORKER_LOGGER -Xmx4g -XX:MaxDirectMemorySize=4g
89273 alluxio.proxy.AlluxioProxy -Dalluxio.home=/Users/Documents/GitProject/alluxio -Dalluxio.conf.dir=/Users/Documents/GitProject/alluxio/conf -Dalluxio.logs.dir=/Users/Documents/GitProject/alluxio/logs -Dlog4j.configuration=file:/Users/Documents/GitProject/alluxio/conf/log4j.properties -Dorg.apache.jasper.compiler.disablejsr199=true -Djava.net.preferIPv4Stack=true -Dalluxio.logger.type=PROXY_LOGGER
89097 alluxio.master.AlluxioMaster -Dalluxio.home=/Users/Documents/GitProject/alluxio -Dalluxio.conf.dir=/Users/Documents/GitProject/alluxio/conf -Dalluxio.logs.dir=/Users/Documents/GitProject/alluxio/logs -Dlog4j.configuration=file:/Users/Documents/GitProject/alluxio/conf/log4j.properties -Dorg.apache.jasper.compiler.disablejsr199=true -Djava.net.preferIPv4Stack=true -Dalluxio.logger.type=MASTER_LOGGER -Dalluxio.master.audit.logger.type=MASTER_AUDIT_LOGGER -Xmx8g
89099 alluxio.master.AlluxioSecondaryMaster -Dalluxio.home=/Users/Documents/GitProject/alluxio -Dalluxio.conf.dir=/Users/Documents/GitProject/alluxio/conf -Dalluxio.logs.dir=/Users/Documents/GitProject/alluxio/logs -Dlog4j.configuration=file:/Users/Documents/GitProject/alluxio/conf/log4j.properties -Dorg.apache.jasper.compiler.disablejsr199=true -Djava.net.preferIPv4Stack=true -Dalluxio.logger.type=SECONDARY_MASTER_LOGGER -Xmx8g
运行AlluxioMaster(下面的详细步骤是以AlluxioMaster为例,验证是否能够正常运行):
在idea中选择如下选项:
复制jps -lmv 命令查看到的AlluxioMaster对应的 jvm -D参数到idea到vm配置中(并修改vm参数中日志打印到类型为Console),并保存:
配置完成后,再次运行AlluxioMaster(前提是后台已经无正在运行的Alluxio进程),后台jps 查看进程,即可发现AlluxioMaster已在后台启动。
worker、proxy的启动和AlluxioMaster的方法是一样的
- idea中启动调试master/worker/proxy
现在已经能够通过IDEA在后台成功启动master等进程之后,通过打断点,并以Debug的形式进行调试。
命令调试指导
Alluxio有很多文件系统的命令,下面以copyFromLocal命令为例进行说明。
在${ALLUXIO_HOME}目录下,后台启动1.8.1-server:
$ ./bin/alluxio-start.sh local
启动后,通过jps命令进行验证进程是否启动。
通过命令行debug Alluxio命令及其相关参数信息:(如下图,在打印日志的最后,会有该命令运行的入口以及需要传入的program arguments和vm options)
$ bash -x ./bin/alluxio fs ls /
省略bash -x后展示的命令行调试参数的截图
找到alluxio.cli.fs.FileSystemShell,像AlluxioMaster调试那样,先运行一次:
像设置AlluxioMaster参数那样,进入到FileSystemShell的Application配置界面,将命令行打印出的program arguments和vm options的参数分别复制到配置中保存:
- alluxio文件系统命令调试
配置完成后,在命令的入口处打断点(并在其他调用的方法关键处打断点),然后进行debug进行调试(见下图):