Hadoop
Содержание
- 1 Общее
- 2 HDFS
- 3 YARN
- 3.1 Интерфейсы (сервисы)
- 3.1.1 Application Manager
- 3.1.2 Scheduler
- 3.1.3 ResourceManager Web Application
- 3.1.4 ResourceManager Tracker
- 3.1.5 ResourceManager Admin
- 3.1.6 NodeManager СontainerManager
- 3.1.7 NodeManager Localizer
- 3.1.8 NodeManager Collector Service
- 3.1.9 NodeManager WebUI
- 3.1.10 NodeManager Timeline RPC
- 3.1.11 NodeManager Timeline WebUI
- 3.1.12 SharedCacheManager Admin
- 3.1.13 SharedCacheManager WebUI
- 3.1.14 SharedCacheManager Node Manager
- 3.1.15 SharedCacheManager Client
- 3.1.16 NodeManager AMRMProxyService
- 3.1.17 Router WebUI
- 3.1.18 HttpFS (Hadoop HDFS over HTTP)
- 3.1 Интерфейсы (сервисы)
- 4 Apache HBASE
- 5 ZooKeeper
- 6 Apache Ambari
- 7 Apache Spark
- 8 Apache Kafka/Storm
- 9 Apache HIVE / DRILL
- 10 Mahout
- 11 Apache Solr / Lucene
- 12 Apache Ranger
- 13 OOZIE
- 14 PIG
- 15 Apache Hue
- 16 MapReduce
- 17 Cloudera
- 18 Утилиты
- 19 Ссылки
Общее
Аутентификация
По-умолчанию simple (то есть отключена, можно выдавать себя за любого). Можно переключить на kerberos. За это отвечает параметр в конфиге hadoop.security.authentication.
Шифрование
По-умолчанию отключено для передачи (in-transit) и хранения (at-rest).
NameNode
Для общения с NameNode могут быть использованы следующие механизмы аутентификации:
- GSS-API
- Digest-MD5
Web Apps
Как правило, используется SSL/TLS.
DataNodes
Шифрование может быть на 2 уровнях:
1. обмен ключами используя 3DES или RC4
2. Шифрование используя AES 128(default)/192/256.
At-rest
Означает хранилище файлов. Если кратко:
- Данные шифруются DEK-ключем (Data Encryption Key)
- DEK зашифрован ключем EZ (Encryption Zone) -> EDEK (Encrypted Data Encryption Key)
Обратный процесс:
- EDEK запрашивается у NameNode
- Запрашиваем KMS расшифровать EDEK - получаем DEK
- Расшифровываем или зашифровываем данные с DEK.
Важно! Чтобы запросить ключ у KMS, в случае использования Access Control List (ACL) нужны привилегии.
HDFS
HDFS (Hadoop FileSystem) - это виртуальная файловая система Hadoop, доступная по сети.
Сервисы
MasterNode WebUI
Это веб-интерфейс, запущенный на портах 50070(http) и 50470(https). Обычно на нем отсутствует аутентификация, поэтому его можно использовать для доступа к файловой системе.
Основная страница доступна по адресу /explorer.html, а при выборе даты перенаправляет на соответствующую DataNode (порт 50075).
MasterNode Metadata Service
Использует протокол IPC на портах 8020 и 9000. Требуется для взаимодействия с метадатой файлов HDFS.
Команды для взаимодействия:
# Получение списка файлов (и их метадаты)
hadoop fs -ls /tmp
DataNode WebUI
Веб-интерфейс для доступа к статусу, логам и тд. Запускается на 50075(http) и 50475(https) портах.
Доступно по пути /browseDirectory.jsp
DataNode Data Transfer
Сервис для передачи данных в DataNode. Использует порт 50010
# Отправить файл на HDFS
hadoop fs -put <localfile> <remotedst>
DataNode Metadata Service
Использует протокол IPC на порту 50020. Требуется для взаимодействия с метадатой файлов HDFS.
Secondary Node Checkpoint Service
Запущен на порту 50090 по протоколу http. Как понял используется для сохранения данных метадаты (запасное хранилище).
YARN
Интерфейсы (сервисы)
Application Manager
Порт(tcp): 8032
Протокол: http
Аутентификация: ???
Параметр в конфиге : yarn.resourcemanager.address
Scheduler
Порт(tcp): 8030
Протокол: http
Аутентификация: ???
Параметр в конфиге : yarn.resourcemanager.scheduler.address
ResourceManager Web Application
Порт(tcp): 8088, 8090
Протокол: http(8088), https(8090)
Аутентификация: ???
Параметр в конфиге : yarn.resourcemanager.webapp.address, yarn.resourcemanager.webapp.https.address
ResourceManager Tracker
Порт(tcp): 8031
Протокол: ???
Аутентификация: ???
Параметр в конфиге : yarn.resourcemanager.resource-tracker.address
ResourceManager Admin
Порт(tcp): 8033
Протокол: ???
Аутентификация: ???
Параметр в конфиге : yarn.resourcemanager.admin.address
NodeManager СontainerManager
Порт(tcp): 0
Протокол: ???
Аутентификация: ???
Параметр в конфиге : yarn.nodemanager.address
NodeManager Localizer
Порт(tcp): 8040
Протокол: ??? (IPC)
Аутентификация: ???
Параметр в конфиге: yarn.nodemanager.localizer.address
NodeManager Collector Service
Порт(tcp): 8048
Протокол: ??? (IPC)
Аутентификация: ???
Параметр в конфиге: yarn.nodemanager.collector-service.address
NodeManager WebUI
Порт(tcp): 8042, 8044
Протокол: http(8042), https(8044)
Аутентификация: ???
Параметр в конфиге: yarn.nodemanager.webapp.address, yarn.nodemanager.webapp.https.address
NodeManager Timeline RPC
Порт(tcp): 10200
Протокол: ???
Аутентификация: ???
Параметр в конфиге: yarn.timeline-service.address
NodeManager Timeline WebUI
Порт(tcp): 8188, 8190
Протокол: http(8188), https(8190)
Аутентификация: ???
Параметр в конфиге: yarn.timeline-service.webapp.address, yarn.timeline-service.webapp.https.address
Порт(tcp): 8047
Протокол: ???
Аутентификация: ???
Параметр в конфиге: yarn.sharedcache.admin.address
Порт(tcp): 8788
Протокол: ???(http)
Аутентификация: ???
Параметр в конфиге: yarn.sharedcache.webapp.address
Порт(tcp): 8046
Протокол: ???
Аутентификация: ???
Параметр в конфиге: yarn.sharedcache.uploader.server.address
Порт(tcp): 8045
Протокол: ???
Аутентификация: ???
Параметр в конфиге : yarn.sharedcache.client-server.address
NodeManager AMRMProxyService
Порт(tcp): 8049
Протокол: ???
Аутентификация: ???
Параметр в конфиге : yarn.nodemanager.amrmproxy.address
Router WebUI
Порт(tcp): 8089, 8091
Протокол: http(8089), https(8091)
Аутентификация: ???
Параметр в конфиге : yarn.router.webapp.address, yarn.router.webapp.https.address
HttpFS (Hadoop HDFS over HTTP)
Порт(tcp): 14000
Протокол: http
Аутентификация: ???
Apache HBASE
ZooKeeper
Apache Ambari
Нужен для упрощения управления кластерами Hadoop, используя WebUI. Есть возможность интегрироваться с другими приложениями по REST API.
Из интересного:
- Все могут авторизоваться (даже стандартные юзеры)
- Нет защиты (directory listing, no cookie flags, no CSRF)
- CVE-2015-1775 - /logs/ логи
Сервисы =
WebUI
Общение по протоколу http (порт 8080) и https (порт 8440).
Registration/Heartbeat
Общение по протоколу https на порту 8441.
Agent
Порт 8670/tcp используется для Ping.
Apache Spark
Apache Kafka/Storm
Apache HIVE / DRILL
Mahout
Apache Solr / Lucene
Apache Ranger
Компонент безопасности Hadoop с открытым исходным кодом.
Из интересного:
- Поддержка Kerberos
- REST API
- Журналы аудита
- Модель разрешений на основе политики доступа (политики, юзеры, группы)
Интересные ИБ-проблемы:
- Slow HTTP DOS
- Все юзеры могут авторизоваться в Ranger (но не все - выполнять действия)
- CVE-2015-0266 - Missing function level access control, можно использовать для повышения привилегий
- CVE-2015-0265 - XSS в UserAgent
TODO: изучить как работает
https://ranger.apache.org/apidocs/index.html - API документация
Сервисы
Admin WebUI
Порт: 6080, 6182
Протокол: http(6180),https(6182)
Параметр конфига: ranger.service.http.port, ranger.service.https.port
UNIX Auth Service
Порт: 5151
Протокол: SSL/TCP
Параметр конфига: ranger.usersync.port
Ranger KMS
Порт: 9292, 9293
Протокол: http(9292), https(9293)
Параметр конфига: ranger.service.http.port, ranger.service.https.port
Solr Audit
Порт: 6083, 6183
Протокол: http(6083), https(6183)
Параметр конфига: ranger-admin (???)
OOZIE
Серверная система планирования рабочих процессов для управления заданиями Hadoop. Рабочие процессы в Oozie определяются как набор потоков управления и узлов действий в ориентированном ациклическом графе.
Сервисы
Web Console
Порт: 11000, 11443
Протокол: HTTP(11000), HTTPS(11443)
= Admin service
Порт: 11001
Протокол: ???
PIG
Apache Hue
Облачный редактор SQL с открытым исходным кодом. Упоминается тут тк часто используется вместе с Hadoop. Использует порт 8888 по протоколу HTTP.
В старых версиях также присутствует DOM XSS, включена отладка, есть заголовок X-Frame-Options: ALLOWALL.
MapReduce
Модель распределённых вычислений от компании Google, используемая в технологиях Big Data для параллельных вычислений над очень большими (до нескольких петабайт) наборами данных в компьютерных кластерах, и фреймворк для вычисления распределенных задач на узлах (node) кластера
Сервисы
Jobhistory
Порт: 10020
Протокол: HTTP
Аутентификация: ???
Параметр конфига: mapreduce.jobhistory.address
JobTracker
Порт: 8021
Протокол: IPC
Аутентификация: ???
Параметр конфига: mapred.job.tracker
Доступно только в MapReduce v1
JobTracker WebUI
Порт: 50030
Протокол: HTTP
Аутентификация: ???
Параметр конфига: mapred.job.tracker.http.address
Доступно только в MapReduce v1
Jobhistory WebUI
Порт: 19888
Протокол: HTTP
Аутентификация: ???
Параметр конфига: mapreduce.jobhistory.webapp.address
Jobhistory Shufflee
Порт: 13562
Протокол: HTTP
Аутентификация: ???
Параметр конфига: mapreduce.shuffle.port
Jobhistory Shufflee WebUI
Порт: 19890
Протокол: HTTPS
Аутентификация: ???
Параметр конфига: mapreduce.jobhistory.webapp.https.address
TaskTracker WebUI
Порт: 50060
Протокол: HTTP
Аутентификация: ???
Параметр конфига: mapred.task.tracker.http.address
Доступно только в MapReduce v1
History Server WebUI
Порт: 51111
Протокол: HTTP
Аутентификация: ???
Параметр конфига: mapreduce.history.server.http.address
Cloudera
Экосистема Hadoop от компании Cloudera
Сервисы
HUE
Работает на порту 8888 по протоколу HTTP.
Manager
Работает на порту 7180(http) и 7183(https).