Возникла проблема при настройке MySql с apache потоком воздуха в Hadoop - PullRequest
4 голосов
/ 02 апреля 2020

Я пытался установить и настроить apache поток воздуха на устройстве. Был oop кластер из трех узлов со следующими конфигурациями / версией:

Operating System: Red Hat Enterprise Linux Server 7.7
python 3.7.3
anaconda 2
spark 2.45

a)sudo yum install gcc gcc-c++ -y
b)sudo yum install libffi-devel mariadb-devel cyrus-sasl-devel -y
c)pip install 'apache-airflow[all]'
d)airflow initdb  -- airflow.cfgfile was created with SQLlite

Затем я следовал приведенному ниже набору команд для его настройки. с mysql

a) rpm -Uvh https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm 
b) sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/mysql-community.repo 
c) yum --enablerepo=mysql80-community install mysql-community-server 
d) systemctl start mysqld.service

Сделано ниже вещей на mysql

a) CREATE DATABASE airflow CHARACTER SET utf8 COLLATE utf8_unicode_ci; 
b) create user 'airflow'@'localhost' identified by 'Airflow123'; 
c) grant all privileges on * . * to 'airflow'@'localhost'; 

Вот некоторые подробности из моего airflow.cfg файла

broker_url = sqla+mysql://airflow:airflow@localhost:3306/airflow
result_backend = db+mysql://airflow:airflow@localhost:3306/airflow
sql_alchemy_conn = mysql://airflow:Airflow123@localhost:3306/airflow
executor = CeleryExecutor

Я ошибка ниже при выполнении airflow initdb команды

ImportError: /home/xyz/anaconda2/envs/python3.7.2/lib/python3.7/site-packages/_mysql.cpython-37m-x86_64-linux-gnu.so: symbol mysql_real_escape_string_quote, 
version libmysqlclient_18 not defined in file libmysqlclient.so.18 with link time reference

настроили файл .bashr c как:

export AIRFLOW_HOME=~/airflow

вот мой каталог создан:

[xyz@innolx5984 airflow]$ pwd
/home/xyz/airflow

Когда я ищу этот файл "libmysqlclient", я обнаружил много таких экземпляров.

[xyz@innolx5984 airflow]$ find /home/xyz/ -name "*libmysqlclient*"
/home/xyz/anaconda2/pkgs/mysql-connector-c-6.1.11-h597af5e_1/lib/libmysqlclient.so
/home/xyz/anaconda2/pkgs/mysql-connector-c-6.1.11-h597af5e_1/lib/libmysqlclient.a
/home/xyz/anaconda2/pkgs/mysql-connector-c-6.1.11-h597af5e_1/lib/libmysqlclient.so.18
/home/xyz/anaconda2/pkgs/mysql-connector-c-6.1.11-h597af5e_1/lib/libmysqlclient.so.18.4.0
/home/xyz/anaconda2/lib/libmysqlclient.a
/home/xyz/anaconda2/lib/libmysqlclient.so
/home/xyz/anaconda2/lib/libmysqlclient.so.18
/home/xyz/anaconda2/lib/libmysqlclient.so.18.4.0

Просто добавлю еще несколько деталей на случай, если это поможет.

[xyz@innolx5984 airflow]$ mysql_config
Usage: /home/xyz/an
aconda2/bin/mysql_config [OPTIONS]
Options:
        --cflags         [-I/home/xyz/anaconda2/include ]
        --cxxflags       [-I/home/xyz/anaconda2/include ]
        --include        [-I/home/xyz/anaconda2/include]
        --libs           [-L/home/xyz/anaconda2/lib -lmysqlclient ]
        --libs_r         [-L/home/xyz/anaconda2/lib -lmysqlclient ]
        --plugindir      [/home/xyz`/anaconda2/lib/plugin]
        --socket         [/tmp/mysql.sock]
        --port           [0]
        --version        [6.1.11]
        --variable=VAR   VAR is one of:
                pkgincludedir [/home/xyz/anaconda2/include]
                pkglibdir     [/home/xyz/anaconda2/lib]
                plugindir     [/home/xyz/anaconda2/lib/plugin]

    Looking for some help and suggestion to resolve this

проблема , Я не слишком уверен, стоит ли идти в правильном направлении.

1 Ответ

4 голосов
/ 07 апреля 2020

Выполните следующие шаги для установки Apache Воздушный поток с MySQL с использованием Anaconda3

1) Установка предварительных условий

yum install gcc gcc-c++ -y
yum install libffi-devel mariadb-devel cyrus-sasl-devel -y
dnf install redhat-rpm-config

2) Установите Anaconda3 (поставляется с Python 3.7.6)

yum install libXcomposite libXcursor libXi libXtst libXrandr alsa-lib mesa-libEGL libXdamage mesa-libGL libXScrnSaver
wget https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh
chmod +x Anaconda3-2020.02-Linux-x86_64.sh 
./Anaconda3-2020.02-Linux-x86_64.sh

Убедитесь, что вы сделали conda initialize при появлении запроса во время установки. Это обеспечит использование правильной версии python и pip на последующих этапах.

3) Установка Apache Воздушный поток

pip install apache-airflow[mysql,celery]

При необходимости вы можете добавить другие подпакеты. Я включил только те, которые необходимы для Airflow для использования базы данных MySQL в качестве бэкэнда.

4) Инициализация воздушного потока

export AIRFLOW_HOME=~/airflow
airflow initdb

Здесь я имитировал Для настройки MySQL Сервер

5) Установка MySQL Сервер

rpm -Uvh https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm 
sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/mysql-community.repo 
yum --enablerepo=mysql80-community install mysql-server 
systemctl start mysqld.service

6) Вход в систему MySQL и настройте базу данных для Airflow

mysql> CREATE DATABASE airflow CHARACTER SET utf8 COLLATE utf8_unicode_ci; 
mysql> CREATE user 'airflow'@'localhost' identified by 'Airflow123'; 
mysql> GRANT ALL privileges on *.* to 'airflow'@'localhost'; 

7) Обновить файл конфигурации воздушного потока (~ / airflow / airflow.cfg)

sql_alchemy_conn = mysql://airflow:Airflow123@localhost:3306/airflow
executor = CeleryExecutor

8) Инициализировать поток воздуха

airflow initdb
...