phe*_*der 7 permissions logging airflow airflow-scheduler
我们在使用 Airflow 时遇到权限错误,收到以下错误:
PermissionError: [Errno 13] Permission denied: '/usr/local/airflow/logs/scheduler/2019-12-18/../../../../home
Run Code Online (Sandbox Code Playgroud)
我们已经尝试在容器内的 /usr/local/airflow/logs/schedule 目录上使用 chmod 777 -R ,但这似乎没有成功。
我们在 entrypoint.sh 脚本中有这一段:
export AIRFLOW__CORE__BASE_LOGS_FOLDER="/usr/local/airflow/logs
有没有其他人遇到过这个气流日志权限问题?似乎无法在网上找到太多关于此的信息。
小智 12
仅供有同样问题的人...
令人惊讶的是,我不得不查看Airflow 文档......根据它:
在Linux上,容器中挂载的卷使用本机 Linux 文件系统用户/组权限,因此您必须确保容器和主机具有匹配的文件权限。
mkdir ./dags ./logs ./plugins
echo -e "AIRFLOW_UID=$(id -u)\nAIRFLOW_GID=0" > .env
Run Code Online (Sandbox Code Playgroud)
一旦您具有匹配的文件权限:
docker-compose up airflow-init
Run Code Online (Sandbox Code Playgroud)
docker-compose up
Run Code Online (Sandbox Code Playgroud)
Sai*_*ish 11
绑定安装的文件夹权限也可能导致此错误。
例如:
docker-compose.yml(伪代码)
service_name:
...
volumes:
- /home/user/airflow_logs:/opt/airflow/logs
Run Code Online (Sandbox Code Playgroud)
授予本地文件夹权限,以便气流容器可以写入日志、根据需要创建目录等,
sudo chmod u=rwx,g=rwx,o=rwx /home/user/airflow_logs
Run Code Online (Sandbox Code Playgroud)
我解决了这个问题:就我而言,问题是卷安装了文件夹,logs并且dags没有写入权限。我添加了它
chmod -R 777 dags/
chmod -R 777 logs/
Run Code Online (Sandbox Code Playgroud)
并在 docker-composer 文件中将它们安装为
volumes:
- ./dags:/opt/bitnami/airflow/dags
- ./logs:/opt/bitnami/airflow/logs
Run Code Online (Sandbox Code Playgroud)
我有同样的错误。
PermissionError: [Errno 13] Permission denied: '/usr/local/airflow/logs/scheduler'
Run Code Online (Sandbox Code Playgroud)
我收到该错误的原因是因为我在运行 Airflow docker 容器之前没有创建最初的 3 个文件夹(dags、logs、plugins)。所以docker似乎已经自动创建了,但是权限是错误的。
修复步骤:
docker-compose down --volumes --remove-orphans
Run Code Online (Sandbox Code Playgroud)
mkdir logs dags plugins
Run Code Online (Sandbox Code Playgroud)
docker-compose up airflow-init
docker-compose up
Run Code Online (Sandbox Code Playgroud)
我使用 Apache Airflow 1.10.7 也遇到同样的问题。
Traceback (most recent call last):
File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
self.run()
File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
self._target(*self._args, **self._kwargs)
File "/home/radifar/.virtualenvs/airflow/lib/python3.7/site-packages/airflow/jobs/scheduler_job.py", line 135, in _run_file_processor
set_context(log, file_path)
File "/home/radifar/.virtualenvs/airflow/lib/python3.7/site-packages/airflow/utils/log/logging_mixin.py", line 198, in set_context
handler.set_context(value)
File "/home/radifar/.virtualenvs/airflow/lib/python3.7/site-packages/airflow/utils/log/file_processor_handler.py", line 65, in set_context
local_loc = self._init_file(filename)
File "/home/radifar/.virtualenvs/airflow/lib/python3.7/site-packages/airflow/utils/log/file_processor_handler.py", line 148, in _init_file
os.makedirs(directory)
File "/home/radifar/.virtualenvs/airflow/lib/python3.7/os.py", line 211, in makedirs
makedirs(head, exist_ok=exist_ok)
File "/home/radifar/.virtualenvs/airflow/lib/python3.7/os.py", line 211, in makedirs
makedirs(head, exist_ok=exist_ok)
File "/home/radifar/.virtualenvs/airflow/lib/python3.7/os.py", line 211, in makedirs
makedirs(head, exist_ok=exist_ok)
[Previous line repeated 5 more times]
File "/home/radifar/.virtualenvs/airflow/lib/python3.7/os.py", line 221, in makedirs
mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/media/radifar/radifar-dsl/Workflow/Airflow/airflow-home/logs/scheduler/2020-01-04/../../../../../../../home'
Run Code Online (Sandbox Code Playgroud)
检查 file_processor_handler.py 的工作原理后,我发现该错误是由示例 dag 和我们的 dag 文件夹设置的不同目录位置引起的。在我的例子中,文件夹 2020-01-04 上方的第 7 个文件夹是 /media/radifar。在您的情况下,文件夹 2019-12-18 上方的 4 个文件夹是 /usr/local。这就是引发 PermissionError 的原因。
我能够通过清理 AIRFLOW_HOME 文件夹然后运行来解决此问题airflow version,并将 airflow.cfg 中的 load_example 设置为 False。然后跑airflow initdb。之后我可以毫无错误地使用气流。
| 归档时间: |
|
| 查看次数: |
11376 次 |
| 最近记录: |