操作系统:centos7 ,root用户
docker安装
1、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
2、设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3、docker安装
yum install docker-ce
4、docker启动
systemctl start docker
5、docker开机启动
systemctl enable docker
6、验证安装是否成功
docker version
docker安装mysql
1、查询mysql
docker search mysql
2、安装mysql
docker pull mysql
3、启动mysql容器
docker run --name mysqlserver -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3306:3306 mysql:latest
4、查看mysql进程
docker ps -a
5、进入mysql容器
docker exec -it mysqlserver bash
6、登录mysql(密码是:123456)
mysql -uroot -p
7、开启远程访问权限
use mysql;
select host,user from user;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
8、退出容器 ctrl+D 或者 exit
9、查看ip :ifconfig
10、Navicat登录mysql
docker安装jdk8
1、创建/usr/local/jdk
mikdir /usr/local/jdk
2、下载jdk8
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"
3、解压jar包
tar -zvxf jdk-8u141-linux-x64.tar.gz
4、创建dockerfile
vi Dockerfile ---- > 写入
from centos:centos7
maintainer yangcai
run mkdir /usr/local/jdk
workdir /usr/local/jdk
add jdk-8u141-linux-x64.tar.gz /usr/local/jdk
env JAVA_HOME /usr/local/jdk/jdk1.8.0_141
env JRE_HOME /usr/local/jdk/jdk1.8.0_141/jre
env PATH $JAVA_HOME/bin:$PATH
5、根据Dockerfile创建镜像
docker build -t jdk8 .
6、修改tag,方便上传dockerHub
docker tag c8e00765e98c yangcai2019/jdk8:v1.0
利用jdk8镜像运行azkabanWebServer / azkabanExecutorServer
1、用jdk8生成一个容器
docker run --name azkabanWebServer -v $PWD/azkabanWebServer:/usr/local/jdk/azkabanWebServer -p 8081:8081 -i -t -d yangcai2019/jdk8:v1.0
注意点:
1、看mysqlserver,azkabanWebServer 容器做了端口映射,则需要关闭防火墙,否则无法访问: -- 查看firewall-cmd --state
如果输出的是“not running”则FirewallD没有在运行,且所有的防护策略都没有启动,那么可以排除防火墙阻断连接的情况了。
如果输出的是“running”,表示当前FirewallD正在运行,需要再输入下面的命令查看现在开放了哪些端口和服务:
firewall-cmd --list-ports
firewall-cmd --list-services
关闭FirewallD服务:
如果您不需要防火墙,那直接关掉FirewallD服务就好了
systemctl stop firewalld.service
2、执行状态status一直为:Preparing ,后台报错:Caused by: java.net.ConnectException: Connection refused (Connection refused)问题排查:
修改azkaban-web下的azkaban.properties配置文件
去掉MinimumFreeMemory
过滤器会检查 executor 主机空余内存是否会大于 6G,如果不足 6G,则 web-server 不会将任务交由该主机执行
即为:
azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus
3、执行状态status一直为:FAILED 后台报错:azkaban.executor.ExecutorManagerException: executor became inactive before setting up the flow 12
查询:SELECT * FROM `executors`;
执行:curl http://localhost:33095/executor?action=activate
4、Azkaban要求必须有3GB的空闲内存才会执行任务 后台打印日志:[SystemMemoryInfo] [JobRunner-jobB-17] [Azkaban] Free memory amount minus Xmx (1301552 - 0 kb) is less than low mem threshold (3145728 kb), memory request declined.
修改源码:
把3G改成1G
5、job运行日志报错(这里不是flow日志)azkaban.utils.UndefinedPropertyException: Missing required property 'azkaban.native.lib'
修改azkaban-exec-server的配置文件azkaban.properties
该属性值azkaban.jobtype.plugin.dir=/usr/local/jdk/azkabanWebServer/azkaban-exec-server/plugins/jobtypes,切记是绝对路径
修改commonprivate.properties文件,添加:azkaban.native.lib=false