Какая глубина знаний операционной системы Linux необходима дата-инженеру?

Что нужно знать дата-инженеру о работе с данными в среде Linux?
  • 22 января 2024 г. 5:18
Ответы на вопрос 2
Для дата-инженера глубина знаний операционной системы Linux важна, поскольку многие серверные и расчетные среды, большие данные (Big Data) и инфраструктуры облачных вычислений работают на основе Linux. Знание Linux помогает эффективно настраивать окружение для работы с данными и создавать надежные, масштабируемые и безопасные системы обработки данных.

Вот основные аспекты знания Linux, которые важны для дата-инженера:

1. **Основные команды и структура файловой системы**:
   - Навигация по файловой системе (cd, ls, pwd).
   - Создание, копирование, перемещение, удаление файлов и директорий (cp, mv, mkdir, rm, rmdir).
   - Просмотр и редактирование файлов (cat, less, more, vim/nano).
   - Управление правами доступа к файлам и директориям (chmod, chown, umask).

2. **Работа с текстом и обработка данных**:
   - Использование инструментов для работы с текстом и обработки данных (grep, sed, awk, cut, sort, uniq, tr).
   - Регулярные выражения для поиска и обработки текста.
   - Создание и использование пайплайнов для комбинирования команд (pipes).

3. **Сценарии оболочки и автоматизация**:
   - Написание bash-скриптов для автоматизации повторяющихся задач.
   - Понимание основ управления процессами (ps, top, kill, nohup, &).
   - Планирование заданий с использованием cron.

4. **Управление пакетами и программным обеспечением**:
   - Установка и обновление пакетов (использование менеджеров пакетов, таких как apt, yum, dnf).

5. **Сетевые аспекты**:
   - Основы работы с сетевым стеком (ping, ssh, scp, sftp).
   - Настройка и использование удаленных соединений для безопасного доступа к серверам и передачи данных.

6. **Системы контроля версий**:
   - Использование систем контроля версий, таких как Git, для управления исходным кодом и конфигурациями.

7. **Работа с данными в распределенных системах**:
   - Понимание принципов работы с распределенными файловыми системами, например, Hadoop HDFS.
   - Запуск и мониторинг задач в кластерных системах, таких как YARN или Apache Mesos.

8. **Контейнеризация и виртуализация**:
   - Опыт работы с контейнерными технологиями, такими как Docker, и оркестрацией контейнеров (Kubernetes).

9. **Безопасность**:
   - Основы безопасности Linux, включая управление пользователями, настройку брандмауэра и безопасную передачу данных.

Конечно, не все дата-инженеры будут использовать все эти навыки ежедневно, но понимание того, как работать с операционной системой Linux, определенно помогает в повышении производительности и разрешении технических вопросов, связанных с инфраструктурой и процессами обработки данных.
По-хорошему, надо знать то, что потребуется для работы. 
Обычно это понимание как работает командная строка, терминал, ssh.
Немножко вглубь: файлы, дескрипторы, файловая система, монтирование, симлинки, хардлдинки, пайпы, конвейеры, синтаксис перенаправления между стандартными потоками ввода/вывода, базовые утилиты командной строки (grep, ls, tee, tail, cat и т.д.), желателен какой-то опыт работы со всем этим, понимание как обычно устроен механизм передачи параметров в таких утилитах, как их выстроить в конвейер, как запаковать\распаковать поток данных на лету. Желательно понимать что такое, как устроены и для чего нужны make-файлы.
Нужно понимать как пользоваться менеджерами пакетов основных дистрибутивов, желательно в общих чертах понимать что такое докер, контейнеризация в целом, ориентироваться в командах управления образами и контейнерами, понимать что такое вольюмы и где их искать, уметь читать докер-файлы и компоуз-файлы, понимать как вообще это всё работает. Ну и GIT нужно уметь использовать.

Это основа, но наверно от джунов всего списка никто ожидать не будет - обучат по ходу дела, а если вы претендуете на большее, то сможете быстро разобраться в нужных вопросах, если претензии ваши обоснованы, а пробелы обнаружились.
Похожие вопросы