Datagen — это проект, цель которого — предоставить удобный, настраиваемый интерфейс для генерации данных в различные сервисы платформы Cloudera CDP. (Даже за пределами платформы).
что это такое ?
Это веб-сервис, предоставляющий API для генерации данных.
Данные относительности формируются в так называемой Модели. Он поставляется с предварительно созданной Моделью, но каждый может определить свою собственную Модель и предоставить ее для существенного использования данных в любом сервисе.
Данные могут быть сгенерированы для HDFS(CSV、Avro、Parquet、JSON、ORC)、HBase、Hive、Solr、Kudu、Kafka、Ozone(CSV、Avro、Parquet、JSON、ORC)илокальный файл(CSV、Avro、Parquet JSON, ОРЦ).
Генерацию данных также можно запланировать на периодическую работу.
Datagen предназначен для работы на CDP, поэтому обычно требуется платформа CDP:
Однако вы всегда можете запустить приложение как автономный веб-сервер, но всю настройку вам придется выполнить самостоятельно.
Если вы планируете собрать его из исходного кода:
Код Datagen общедоступен здесь: https://github.com/frischHWC/datagen.
Файл сведений репозитория документадля содержит все подробности о том, как создать Модель, как запустить Модельк и настроить внутреннюю структуру Модели.
Datagen создан для полной интеграции с CDP, поэтому он развертывается как услуга в Cloudera Manager.
Это можно сделать двумя способами:
Datagen также можно запускать локально (и где угодно) как автономный сервер, но вам необходимо настроить его самостоятельно. (См.: Сборка из исходного кода Установить)
Это руководство требует запускаCDP 7.1.7+платформа,и иметь право Cloudera Manager Права доступа администратора.
пожалуйста, обрати внимание,этотдадляCDP-7.1.7.1000иАвтор: ДАТАГЕН-0.2.5,для будущих версий,Пожалуйста, измените репозиторий, чтобы указать новую версию.
Перейдите в Cloudera Manager и выполните команду Curl или Wget:
wget https://datagen-repo.s3.eu-west-3.amazonaws.com/csd/0.3.1/7.1.7.1000/DATAGEN-0.3.1.7.1.7.1000.jar
Скопируйте загруженный jar-файл в /opt/cloudera/csd/:
cp DATAGEN-*.jar /opt/cloudera/csd/
Перезапустите сервер Cloudera Manager:
systemctl restart cloudera-scm-server
Перейти к Cloudera Менеджер по посылкам > Parcel Repositories & В сети:
Добавьте этот публичный репозиторий места Cloudera Manager: https://datagen-repo.s3.eu-west-3.amazonaws.com/parcels/0.3.1/7.1.7.1000
Сохраните и проверьте, чтобы убедиться, что URL-адрес правильный. У вас должно быть:
Datagen Parcel теперь доступен для скачивания:
Затем распределите его:
Наконец активируйте его:
Наконец, результат должен быть:
существовать Cloudera Manager Вернитесь на домашнюю страницу и выберите Установить. Datagen кластеров.
действие по клику > Добавьте услуги.
сейчассуществовать,Может быть Datagen Добавить как услугу в CDP:
Нажмите «Продолжить», чтобы запустить мастер добавления.
Выберите, где разместить серверы Datagen (лучше всего начать с одного и при необходимости расширить его позже):
Судя по изменениям, все они должны заполниться автоматически, но рекомендуется правильно настроить свойства Ranger (их можно удалить позже):
В итоге у вас должно получиться:
существовать Прежде чем продолжить Перезапуск CMS:Clusters > Cloudera Management Служба, затем Действия > Restart。
Прежде чем существоватьгенерированные данные, необходимо выполнить несколько шагов по инициализации предприятия.
Перейти к Datagen обслуживание исуществоватьActionsсередина:
наконецшагиспользоватьпредыдущий Ranger настраивать URL, пользователь/пароль будут datagen Желаемая политика продвигается к Ranger。
После успешного выполнения этой команды вы можете смело удалять эти настройки.
существоватьдействовать > начинать.
После появления команды вы можете просмотреть журнал роли и щелкнуть полный файл журнала:
и убедитесь, что все запускается нормально, вы должны увидеть:
Service Monitor может не получить определенные значения конфигурации от Datagen.
unexpected_exits_thresholdsВоля Warning настраиватьдляAnyи Воля Critical настраиватьдляNever。process_swap_memory_thresholdsВоля Warning настраиватьдляAnyи Воля Critical настраиватьдляNever。process_swap_memory_rate_thresholdsВоля Warning настраиватьдляAnyи Воля Critical настраиватьдляNever。log_directory_free_space_percentage_thresholdsВоля Warning настраиватьдля80и Воля Critical настраиватьдля80。
Внимание: Тест отключен из-за неверной конфигурации: Проверка работоспособности достаточного количества ролей DATAGEN_SERVER киспользовать кнопку подавления безопасно игнорируется иудалить.
Начнем генерацию данных!
существовать В CM Manager:
Datagen > Actions > для HDFS производить 100 миллионов клиентов
Он запускает команду Cloudera Manager, которая выполняет различные вызовы API к веб-серверу Datagen для генерации данных, представляющих клиентов из разных стран.
Результат должен быть:
давайте проверим
существовать с залогиненным пользователем shell Средний (опционально использовать datagen ):
hdfs dfs -ls /user/datagen/hdfs/customer/
Found 90 items
-rw-r--r-- 3 datagen datagen 256024 2022-10-13 09:06 /user/datagen/hdfs/customer/customer-cn-0000000000.parquet
-rw-r--r-- 3 datagen datagen 255393 2022-10-13 09:06 /user/datagen/hdfs/customer/customer-cn-0000000001.parquet
-rw-r--r-- 3 datagen datagen 255618 2022-10-13 09:06 /user/datagen/hdfs/customer/customer-cn-0000000002.parquet
существовать Cloudera Менеджер:
Datagen > Actions > для Hive генерировать 1000 Тысячи данных датчиков
оно начинается Cloudera Manager Заказ, да Datagen Web Сервер выполняет разные API вызов,кгенерировать Данные, представляющие данные датчика。
Результат должен быть:
давайте проверим
существовать с залогиненным пользователем shell Средний (опционально использовать datagen ):
0: jdbc:hive2://ccycloud-2.lisbon.root.hwx.si> show databases;
...
INFO : OK
+---------------------+
| database_name |
+---------------------+
| datagen_industry |
| default |
| information_schema |
| sys |
+---------------------+
0: jdbc:hive2://ccycloud-2.lisbon.root.hwx.si> use datagen_industry;
...
0: jdbc:hive2://ccycloud-2.lisbon.root.hwx.si> show tables;
...
INFO : OK
+------------------+
| tab_name |
+------------------+
| plant |
| plant_tmp |
| sensor |
| sensor_data |
| sensor_data_tmp |
| sensor_tmp |
+------------------+
6 rows selected (0.059 seconds)
0: jdbc:hive2://ccycloud-2.lisbon.root.hwx.si> select * from plant limit 2;
...
INFO : OK
+-----------------+--------------------+------------+-------------+----------------+
| plant.plant_id | plant.city | plant.lat | plant.long | plant.country |
+-----------------+--------------------+------------+-------------+----------------+
| 1 | Chotebor | 49,7208 | 15,6702 | Czechia |
| 2 | Tecpan de Galeana | 17,25 | -100,6833 | Mexico |
+-----------------+--------------------+------------+-------------+----------------+
2 rows selected (0.361 seconds)
0: jdbc:hive2://ccycloud-2.lisbon.root.hwx.si> select * from sensor limit 2;
...
INFO : OK
+-------------------+---------------------+------------------+
| sensor.sensor_id | sensor.sensor_type | sensor.plant_id |
+-------------------+---------------------+------------------+
| 70001 | motion | 186 |
| 70002 | temperature | 535 |
+-------------------+---------------------+------------------+
2 rows selected (0.173 seconds)
0: jdbc:hive2://ccycloud-2.lisbon.root.hwx.si> select * from sensor_data limit 2;
...
INFO : OK
+------------------------+--------------------------------------+----------------------+
| sensor_data.sensor_id | sensor_data.timestamp_of_production | sensor_data.value |
+------------------------+--------------------------------------+----------------------+
| 88411 | 1665678228258 | 1895793134684555135 |
| 52084 | 1665678228259 | -621460457255314082 |
+------------------------+--------------------------------------+----------------------+
2 rows selected (0.189 seconds)
существовать Cloudera Менеджер:
Datagen > Actions > для Ozone приносить 100 миллионов клиентов
Он запускает команду Cloudera Manager, которая выполняет различные вызовы API к веб-серверу Datagen для генерации данных, представляющих клиентов из разных стран.
Результат должен быть:
давайте проверим
существовать с залогиненным пользователем shell Средний (опционально использовать datagen ):
ozone sh key list datagen/customer
{
"volumeName" : "datagen",
"bucketName" : "customer",
"name" : "customer-cn-0000000000.parquet",
"dataSize" : 255631,
"creationTime" : "2022-10-13T16:10:02.286Z",
"modificationTime" : "2022-10-13T16:10:07.866Z",
"replicationType" : "RATIS",
"replicationFactor" : 3
}
{
"volumeName" : "datagen",
"bucketName" : "customer",
"name" : "customer-cn-0000000001.parquet",
"dataSize" : 255633,
"creationTime" : "2022-10-13T16:10:08.187Z",
"modificationTime" : "2022-10-13T16:10:08.314Z",
"replicationType" : "RATIS",
"replicationFactor" : 3
}
существовать Cloudera Менеджер:
Datagen > Actions > К HBase генерировать 100 Тысячи дел
оно начинаетсяодин Cloudera Manager Заказ, да Datagen Web Сервер выполняет разные API вызов,кгенерировать Данные, представляющие транзакции。
Результат должен быть:
давайте проверим
существовать с залогиненным пользователем shell Средний (опционально использовать datagen ):
hbase:001:0> list
TABLE
datagenfinance:transaction
1 row(s)
Took 0.9031 seconds
=> ["datagenfinance:transaction"]
hbase:002:0> count 'datagenfinance:transaction'
Current count: 1000, row: 10223641061665677647491
Current count: 2000, row: 10450220651665677774524
Current count: 3000, row: 10680209721665677628857
Current count: 4000, row: 10909219011665677828439
Current count: 5000, row: 1114021121665677841475
Current count: 6000, row: 11370585341665677806053
Если возникнут какие-либо ошибки, пожалуйста, пройдите Cloudera Manager или Просмотр журнала непосредственно на машине.,онироды/var/log/datagen/。
использовать Cloudera Manager и Предопределенные операции, которые можно использовать для преобразования данных во все типы служб, работающих на вашей платформе.
Данные былисуществовать HDFS、Hive、Ozone、HBase серединагенерировать。
Прежде чем передавать данные дальше в другие сервисы, необходимо внимательно посмотреть, какие именно данные были переданы.
Datagen основнойдаМодель。
Datagen требует одну модель (или модель по умолчанию для модели по умолчанию) каждый раз, когда вы хотите ограничить данные.
Модельдаодин JSON файл, который определяет, как должны выглядеть ваши данные.
приезжатьв настоящий моментдляконец,У вас есть только предопределенная модель.,но Datagen Полная цель да — предоставить свою собственную модель.
Мы продолжим использовать предопределенную модель.,Но существуют в следующем разделе о Модели,Мы проведем вас через процесс создания Модели и все возможности инструмента детям.
Как вы могли догадаться, изучая приезжать, данные из категории «существующий сервис» следуют некоторой заранее определенной модели.
Вы можете ксуществовать развернуто Datagen parcel из всех Найти на машинеприезжатьэтотнекоторый Модель,этотнекоторый机器родык Следующий каталог:/opt/cloudera/parcels/DATAGEN/models/。
к Вниздаты Можетксуществовать Сумкасерединаилик Внизисходный кодсерединапопытаться найтиприезжатьиз всех Модельдокументсписок:src/main/resources/models/。
ll -R /opt/cloudera/parcels/DATAGEN/models/
/opt/cloudera/parcels/DATAGEN/models/:
total 28
drwxr-xr-x 2 root root 4096 Oct 12 02:57 customer
-rw-r--r-- 1 root root 2111 Oct 12 02:57 example-model.json
drwxr-xr-x 2 root root 4096 Oct 13 00:47 finance
-rw-r--r-- 1 root root 5926 Oct 12 02:57 full-model.json
drwxr-xr-x 2 root root 4096 Oct 13 00:47 industry
drwxr-xr-x 2 root root 4096 Oct 13 00:47 public_service
/opt/cloudera/parcels/DATAGEN/models/customer:
total 36
-rw-r--r-- 1 root root 2144 Oct 12 02:57 customer-china-model.json
-rw-r--r-- 1 root root 2154 Oct 12 02:57 customer-france-model.json
-rw-r--r-- 1 root root 2155 Oct 12 02:57 customer-germany-model.json
-rw-r--r-- 1 root root 2150 Oct 12 02:57 customer-india-model.json
-rw-r--r-- 1 root root 2150 Oct 12 02:57 customer-italy-model.json
-rw-r--r-- 1 root root 2152 Oct 12 02:57 customer-japan-model.json
-rw-r--r-- 1 root root 2150 Oct 12 02:57 customer-spain-model.json
-rw-r--r-- 1 root root 2153 Oct 12 02:57 customer-turkey-model.json
-rw-r--r-- 1 root root 2147 Oct 12 02:57 customer-usa-model.json
/opt/cloudera/parcels/DATAGEN/models/finance:
total 4
-rw-r--r-- 1 root root 1748 Oct 12 02:57 transaction-model.json
/opt/cloudera/parcels/DATAGEN/models/industry:
total 12
-rw-r--r-- 1 root root 1712 Oct 12 02:57 plant-model.json
-rw-r--r-- 1 root root 1476 Oct 12 02:57 sensor-data-model.json
-rw-r--r-- 1 root root 1549 Oct 12 02:57 sensor-model.json
/opt/cloudera/parcels/DATAGEN/models/public_service:
total 16
-rw-r--r-- 1 root root 1899 Oct 12 02:57 incident-model.json
-rw-r--r-- 1 root root 2445 Oct 12 02:57 intervention-team-model.json
-rw-r--r-- 1 root root 3445 Oct 12 02:57 weather-model.json
-rw-r--r-- 1 root root 2289 Oct 12 02:57 weather-sensor-model.json
HDFS & Ozone Кнопки, созданные в разных странах 100 миллионов клиентов(использовать/opt/cloudera/parcels/DATAGEN/models/customer/Внизизразные клиенты Модель)и Воляони Толкатьприезжать Parquet в файле.
Пример данных в формате JSON:
{ "name" : "Loris", "id" : "790001", "birthdate" : "1987-01-11", "city" : "Stevensville", "country" : "USA", "email" : "Loris@company.us", "phone_number" : "+1 7225688066", "membership" : "SILVER" }
{ "name" : "Marcell", "id" : "490001", "birthdate" : "1950-06-22", "city" : "Pontecorvo", "country" : "Italy", "email" : "Marcell@company.it", "phone_number" : "+39 995887416", "membership" : "BRONZE" }
{ "name" : "Ryong", "id" : "520001", "birthdate" : "1941-02-05", "city" : "Yachiyo", "country" : "Japan", "email" : "Ryong@company.jp", "phone_number" : "+81 809127101", "membership" : "PLATINUM" }
Кнопка HBase создала 1 миллион транзакций (Модель транзакции underuse/opt/cloudera/parcels/DATAGEN/models/finance/transaction-model.json).
Пример данных в формате JSON:
{ "sender_id" : "50902", "receiver_id" : "10391", "amount" : "0.8084345", "execution_date" : "1665728236778", "currency" : "EUR" }
{ "sender_id" : "21403", "receiver_id" : "68104", "amount" : "0.65117764", "execution_date" : "1665728285129", "currency" : "USD" }
Hive кнопка создана 100 Тысячи данных датчиков(использовать/opt/cloudera/parcels/DATAGEN/models/industry/Внизиздругой Модель)。
это Волягенерировать 100 Заводские данные, как показано ниже:
{ "plant_id" : "1", "city" : "Bollene", "lat" : "44,2803", "long" : "4,7489", "country" : "France" }
это Волягенерировать 100 000 Вот такие датчики (каждый может быть связан с заводом):
{ "sensor_id" : "1", "sensor_type" : "humidity", "plant_id" : "690" }
это Волягенерировать 1 000 000 данные датчика, подобные этим (каждый может быть связан с датчиком):
{ "sensor_id" : "58764", "timestamp_of_production" : "1665728724586", "value" : "-3000244563995128335" }
существовать Cloudera Менеджер:
Datagen > Actions > генерироватьместные данныедля CSV、JSON、AVRO、ORC、PARQUET
оно начинаетсяодин Cloudera Manager Заказ, да Datagen Web Сервер выполняет разные API вызов,киспользоватьпочти Местоиметь Можетспособныйиз Модельгенерироватьнесколько данных。
Результат должен быть:
давайте проверим
существовать с залогиненным пользователем shell Средний (опционально использовать datagen ):
cat /home/datagen/customer/customer-fr-0000000000.json
{ "name" : "Josse", "id" : "120001", "birthdate" : "2001-08-03", "city" : "Meylan", "country" : "France", "email" : "Josse@company.fr", "phone_number" : "+33 444585074", "membership" : "BRONZE" }
{ "name" : "Piet", "id" : "120002", "birthdate" : "1970-06-17", "city" : "Bures-sur-Yvette", "country" : "France", "email" : "Piet@company.fr", "phone_number" : "+33 851063627", "membership" : "BRONZE" }
{ "name" : "Armand", "id" : "120003", "birthdate" : "1990-10-04", "city" : "Notre-Dame-de-Gravenchon", "country" : "France", "email" : "Armand@company.fr", "phone_number" : "+33 575158362", "membership" : "BRONZE" }
{ "name" : "Marvin", "id" : "120004", "birthdate" : "1960-10-04", "city" : "Saint-Pryve-Saint-Mesmin", "country" : "France", "email" : "Marvin@company.fr", "phone_number" : "+33 588241506", "membership" : "BRONZE" }
{ "name" : "Vivian", "id" : "120005", "birthdate" : "1994-04-28", "city" : "La Cadiere-d'Azur", "country" : "France", "email" : "Vivian@company.fr", "phone_number" : "+33 553370858", "membership" : "BRONZE" }
{ "name" : "Jakob", "id" : "120006", "birthdate" : "1976-08-02", "city" : "Chaville", "country" : "France", "email" : "Jakob@company.fr", "phone_number" : "+33 208782811", "membership" : "BRONZE" }
{ "name" : "Bo", "id" : "120007", "birthdate" : "1966-10-14", "city" : "Brignoles", "country" : "France", "email" : "Bo@company.fr", "phone_number" : "+33 068739422", "membership" : "PLATINUM" }
{ "name" : "Emilienne", "id" : "120008", "birthdate" : "1976-02-23", "city" : "Orange", "country" : "France", "email" : "Emilienne@company.fr", "phone_number" : "+33 303877991", "membership" : "BRONZE" }
{ "name" : "Elise", "id" : "120009", "birthdate" : "1965-11-28", "city" : "Cosne sur Loire", "country" : "France", "email" : "Elise@company.fr", "phone_number" : "+33 540812701", "membership" : "SILVER" }
{ "name" : "Roelof", "id" : "120010", "birthdate" : "1982-06-01", "city" : "Magny-en-Vexin", "country" : "France", "email" : "Roelof@company.fr", "phone_number" : "+33 252194443", "membership" : "BRONZE" }
cat /home/datagen/finance/transaction/transaction-0000000000.csv
sender_id,receiver_id,amount,execution_date,currency
"11292","27627","0.7721951","1665729006111","USD"
"49294","95851","0.4893235","1665729006111","EUR"
"68670","8844","0.009439588","1665729006111","USD"
"61487","46071","0.22023022","1665729006111","EUR"
"14383","57358","0.07566887","1665729006111","YEN"
"89570","96238","0.35353237","1665729006111","USD"
"66066","69065","0.87496656","1665729006111","USD"
"43894","87454","0.11435127","1665729006111","USD"
"76777","19367","0.06878656","1665729006111","EUR"
"53649","14975","0.9570634","1665729006111","EUR"
ls -R /home/datagen/industry/
/home/datagen/industry/:
plant sensor sensor_data
/home/datagen/industry/plant:
plant-0000000000.avro
/home/datagen/industry/sensor:
sensor-0000000000.parquet
/home/datagen/industry/sensor_data:
sensor_data-0000000000.orc
существовать Cloudera Менеджер:
Datagen > Actions > ограничить1 миллион данных о погодеприезжатьSolr
оно начинаетсяодин Cloudera Manager Заказ, да Datagen Web Сервер выполняет разные API вызов,киспользоватьпочти Местоиметь Можетспособныйиз Модельгенерироватьнесколько данных。
Результат должен быть:
Это будет включать 1 миллион таких данных о погоде (Модель погоды underuse/opt/cloudera/parcels/DATAGEN/models/public_service/weather-model.json).
{ "city" : "Seysses", "date" : "2021-03-25", "lat" : "43,4981", "long" : "1,3125", "wind_provenance_9_am" : "NORTH", "wind_force_9_am" : "3", "wind_provenance_9_pm" : "WEST", "wind_force_9_pm" : "12", "pressure_9_am" : "1004", "pressure_9_pm" : "1008", "humidity_9_am" : "46", "humidity_9_pm" : "52", "temperature_9_am" : "22", "temperature_9_pm" : "-8", "rain" : "false" }
давайте проверим
Чтобы получить доступ к пользовательскому интерфейсу SolR (войдите в систему как пользователь с достаточными привилегиями):
существовать Cloudera Менеджер:
Datagen > Actions > ограничить1 миллион данных государственной службыприезжать Куду
оно начинаетсяодин Cloudera Manager Заказ, да Datagen Web Сервер выполняет разные API вызов,киспользоватьпочти Местоиметь Можетспособныйиз Модельгенерироватьнесколько данных。
Результат должен быть:
Это составит 1 миллион таких данных государственных служб (Модель погоды underuse/opt/cloudera/parcels/DATAGEN/models/public_service/incident-model.json).
{ "city" : "Le Rove", "lat" : "43,3692", "long" : "5,2503", "reporting_timestamp" : "1665732947892", "emergency" : "URGENT", "type" : "WATER" }
давайте проверим
Перейти к Hue или Impala shell и выполнить INVALIDATE METADATA Команда к обновит кеш и тогда вы сможете существоватьбаза данныхсерединасмотретьприезжать:datagenодинновый столpublicservice_incident:
Datagen > Actions > к JSON Формат будет 100 10 000 данных о погоде Kafka или Данные государственной службы Avro в Kafka
оно начинаетсяодин Cloudera Manager Заказ, да Datagen Web Сервер выполняет разные API вызов,киспользоватьпочти Местоиметь Можетспособныйиз Модельгенерироватьнесколько данных。
Результат должен быть:
Это будет включать 1 миллион таких данных о погоде (Модель погоды underuse/opt/cloudera/parcels/DATAGEN/models/public_service/weather-model.json).
{ "city" : "Seysses", "date" : "2021-03-25", "lat" : "43,4981", "long" : "1,3125", "wind_provenance_9_am" : "NORTH", "wind_force_9_am" : "3", "wind_provenance_9_pm" : "WEST", "wind_force_9_pm" : "12", "pressure_9_am" : "1004", "pressure_9_pm" : "1008", "humidity_9_am" : "46", "humidity_9_pm" : "52", "temperature_9_am" : "22", "temperature_9_pm" : "-8", "rain" : "false" }
давайте проверим
Вы можете создать Kafka-console-consumer с достаточными разрешениями и начать использовать тему для проверки создания сообщений с нуля.
Но мы изменим дляиспользовать, чтобы войти в систему как пользователь с достаточными правами в Streams Messaging Manager и просмотреть данные:
Если вы выбрали AVRO форматировать данныегенерировать,существовать Streams Messaging Manager середина:
Если вы выбрали AVRO Данные в формате ограничень, вы можете к Перейти к Schema Registry URL (использовать логин пользователя с достаточными разрешениями) и просмотреть вновь добавленный шаблон:
Наконец, если в вашем кластере установлена установка SQL Stream Строитель, пожалуйста, убедитесь, что пользователь ssb и flink Темы, авторизованные доступгенерировать, авторизуйтесь приезжать Web консоль и при необходимости загрузите свой keytab исуществовать kafka Создайте таблицу по теме (к JSON Формат):
Затем создайте образец запроса для визуализации данных:
Datagen — больше, чем просто эти предопределенные кнопки даполностью Может Конфигурацияи Можетсделанный на заказиз。
Все предыдущие файлы данных действительно доступны только через Datagen Web API для вызова сервера.
Пользователи должны воспользоваться Datagen предоставил API для запуска данныхгенерировать。
сейчассуществовать,Мы рассмотрим один простой пример,ноеслитыдумать了解иметь关Местопоставлять API Для получения дополнительной информации см. API. часть.
первый,Перейти к Cloudera Manager > Datagen ищелкнутьDatagen Swagger UI:
это будет Datagen Web Сервера Swagger Откройте одну новую карту параметров, это Swagger Воля Требоватьиспользоватьтысуществовать Установить Пользователи прошли во время/парольвернотыпровести идентификациюпроверять。еслиты没иметьпоставлять,По умолчанию Внизadminделатьдляпользователь,adminделатьдляпароль。(ты Можетксуществовать Datagen Измените это в любой момент в конфигурации настроек).
Развязка должна выглядеть так:
Если вы откроете контроллер ограничения данных, у вас должно быть много конечных точек: у каждого типа службы есть конечная точка, для которой вы хотите ограничить данные.
нас Воляиспользовать/datagen/hdfs-jsonПример конечной точки。
Нажмите на него.
еслитыщелкнутьTry it out,Вы сможете заполнить все возможные параметры.
не бойтесь !Все параметры являются необязательными и имеют значения по умолчанию, если вы не указываете определенные параметры.
Местоиметьиспользовать Вданныегенерироватьиз API Вызов имеет как минимум 5 общие параметры:
Существует три параметра, связанных с аутентификацией Kerberos:
По умолчанию все они настроены для данных пользователей.
Есть еще 2 параметра, которые позволяют запланировать запуск:
Местоиметьэтотнекоторый参数都Волясуществовать API раздел для дальнейшего обсуждения.
Каждая конечная точка получателя имеет дополнительные параметры.,Позволяет полностью переопределить фактическую конфигурацию этой службы.,Это будет использоваться только для этих данных.
Для HDFS у нас есть:
В этом примере мы будем использовать swagger и указать некоторые параметры к JSON Формат будетданныегенерироватьприезжать HDFS середина.
существовать swagger UI в, открыть hdfs-json конечная точка и нажмите try it out,Затемосуществлятьк Вниздействовать:
ты Можеткщелкнутьосуществлять。
Swagger Эквивалент существования будет показан ниже curl просить:
curl -X POST "https://ccycloud-1.lisbon.root.hwx.site:4242/datagen/hdfs-json" -H "accept: */*" -H "Content-Type: multipart/form-data" -F "batches=10" -F "model=/opt/cloudera/parcels/DATAGEN/models/public_service/weather-model.json" -F "rows=1000" -F "threads=10"
Он также ответит вам напрямую и сообщит, есть ли какие-либо ошибки в вашей Модели, наш ответ да:
{ "commandUuid": "61b9757f-78da-4773-9c5d-a3f154f2b524" , "error": "" }
вернуть команду UUID, следует использовать для проверки, используйте другой API Статус стартовых данных API роды command-runner-controller середина,сказатьдля/command/getCommandStatus。этот API Команда, которую необходимо получить UUID и вернет статус для JSON, как показано ниже:
{ "commandUuid": "61b9757f-78da-4773-9c5d-a3f154f2b524" , "status": "FINISHED" , "comment": "" , + "progress": "100.0" , "duration": "858ms" }
давайте проверим
существовать с залогиненным пользователем shell Средний (опционально использовать datagen ):
hdfs dfs -ls /user/datagen/hdfs/publicservice/weather/
Found 10 items
-rw-r--r-- 3 datagen datagen 756988 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000000.json
-rw-r--r-- 3 datagen datagen 756448 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000001.json
-rw-r--r-- 3 datagen datagen 756374 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000002.json
-rw-r--r-- 3 datagen datagen 756204 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000003.json
-rw-r--r-- 3 datagen datagen 756878 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000004.json
-rw-r--r-- 3 datagen datagen 756132 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000005.json
-rw-r--r-- 3 datagen datagen 756812 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000006.json
-rw-r--r-- 3 datagen datagen 757160 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000007.json
-rw-r--r-- 3 datagen datagen 756216 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000008.json
-rw-r--r-- 3 datagen datagen 756000 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000009.json
hdfs dfs -cat /user/datagen/hdfs/publicservice/weather/weather-0000000000.json
{ "city" : "Beauchamp", "date" : "2017-03-23", "lat" : "49,0139", "long" : "2,19", "wind_provenance_9_am" : "EAST", "wind_force_9_am" : "98", "wind_provenance_9_pm" : "WEST", "wind_force_9_pm" : "5", "pressure_9_am" : "1003", "pressure_9_pm" : "1009", "humidity_9_am" : "25", "humidity_9_pm" : "35", "temperature_9_am" : "30", "temperature_9_pm" : "9", "rain" : "false" }
{ "city" : "La Garnache", "date" : "2016-02-19", "lat" : "46,8906", "long" : "-1,8311", "wind_provenance_9_am" : "WEST", "wind_force_9_am" : "49", "wind_provenance_9_pm" : "NORTH", "wind_force_9_pm" : "75", "pressure_9_am" : "1014", "pressure_9_pm" : "1002", "humidity_9_am" : "30", "humidity_9_pm" : "8", "temperature_9_am" : "5", "temperature_9_pm" : "33", "rain" : "false" }
{ "city" : "Escoublac", "date" : "2018-04-10", "lat" : "47,2858", "long" : "-2,3922", "wind_provenance_9_am" : "NORTH", "wind_force_9_am" : "62", "wind_provenance_9_pm" : "NORTH", "wind_force_9_pm" : "111", "pressure_9_am" : "1019", "pressure_9_pm" : "1013", "humidity_9_am" : "77", "humidity_9_pm" : "56", "temperature_9_am" : "-1", "temperature_9_pm" : "16", "rain" : "true" }
{ "city" : "Anse", "date" : "2019-06-13", "lat" : "45,9356", "long" : "4,7194", "wind_provenance_9_am" : "WEST", "wind_force_9_am" : "96", "wind_provenance_9_pm" : "EAST", "wind_force_9_pm" : "114", "pressure_9_am" : "1005", "pressure_9_pm" : "1009", "humidity_9_am" : "44", "humidity_9_pm" : "46", "temperature_9_am" : "3", "temperature_9_pm" : "21", "rain" : "false" }
{ "city" : "Dammarie-le-Lys", "date" : "2015-07-24", "lat" : "48,5177", "long" : "2,6402", "wind_provenance_9_am" : "EAST", "wind_force_9_am" : "120", "wind_provenance_9_pm" : "WEST", "wind_force_9_pm" : "87", "pressure_9_am" : "1006", "pressure_9_pm" : "1012", "humidity_9_am" : "68", "humidity_9_pm" : "21", "temperature_9_am" : "-9", "temperature_9_pm" : "-1", "rain" : "false" }
{ "city" : "Saint-Remy-les-Chevreuse", "date" : "2021-10-05", "lat" : "48,7058", "long" : "2,0719", "wind_provenance_9_am" : "SOUTH", "wind_force_9_am" : "62", "wind_provenance_9_pm" : "WEST", "wind_force_9_pm" : "71", "pressure_9_am" : "1017", "pressure_9_pm" : "1007", "humidity_9_am" : "70", "humidity_9_pm" : "95", "temperature_9_am" : "33", "temperature_9_pm" : "-7", "rain" : "true" }
{ "city" : "Vouneuil-sous-Biard", "date" : "2020-07-06", "lat" : "46,5731", "long" : "0,2714", "wind_provenance_9_am" : "EAST", "wind_force_9_am" : "11", "wind_provenance_9_pm" : "EAST", "wind_force_9_pm" : "21", "pressure_9_am" : "1019", "pressure_9_pm" : "1017", "humidity_9_am" : "55", "humidity_9_pm" : "20", "temperature_9_am" : "5", "temperature_9_pm" : "23", "rain" : "false" }
{ "city" : "Tourves", "date" : "2016-05-07", "lat" : "43,4081", "long" : "5,9239", "wind_provenance_9_am" : "NORTH", "wind_force_9_am" : "10", "wind_provenance_9_pm" : "WEST", "wind_force_9_pm" : "39", "pressure_9_am" : "1019", "pressure_9_pm" : "1000", "humidity_9_am" : "60", "humidity_9_pm" : "93", "temperature_9_am" : "0", "temperature_9_pm" : "29", "rain" : "false" }
Базовыйданныегенерироватьзакончился,Теперь вы можете продолжать создавать свою собственную модель.,или если хочешь,Вы можете начать использовать API
Модельдаодин простой JSON документ, описывает, какой тип данных должен быть сокращен, где они существуют, и позволяет указать некоторые конкретные параметры.
один Модельдокумент Зависит от 4 Состоит из частей (каждая часть представляет собой массив):
{
"Fields": [
],
"Table_Names": [
],
"Primary_Keys": [
],
"Options": [
]
}
Давайте более подробно рассмотрим каждую часть ниже.
Поля — это список объектов Field.
Поле — это объект, состоящий как минимум из двух обязательных параметров:
Затем возможно несколько необязательных параметров в зависимости от их типа:
Давайте рассмотрим различные типы полей и их возможные параметры.
Существует много разных типов Поле.,здесь да Базовый,Самоочевидно:
Некоторые примеры:
{
"name": "size",
"type": "INTEGER"
}
{
"name": "bool",
"type": "BOOLEAN"
}
{
"name": "startDate",
"type": "TIMESTAMP"
}
Некоторые примеры минимальной, максимальной и длины:
Целое число от 18 до 99:
{
"name": "age",
"type": "INTEGER",
"min": 18,
"max": 99
}
10-байтовый массив байтов:
{
"name": "bytesLittleArray",
"type": "BYTES",
"length" : 10
}
Примеры возможных значений:
существовать possible_values Строка для выбора между значениями, определенными в:
{
"name": "department",
"type": "STRING",
"possible_values": ["hr", "consulting", "marketing", "finance"]
}
существовать possible_values_weighted Строка для выбора между значениями, определенными в , каждое значение имеет разный вес (сумма всех идля 100): (существовать В этом случае будет 70% изBRONZE, 20% изSILVER, 8% изGOLD, 2% изPLATINUM)
{
"name": "membership",
"type": "STRING",
"possible_values_weighted": {
"BRONZE": 70,
"SILVER": 20,
"GOLD": 8,
"PLATINUM": 2
}
}
Это более «продвинутые» типы:
Несколько основных примеров:
{
"name": "name",
"type": "NAME",
"filters": ["USA"]
}
{
"name": "birthdate",
"type": "BIRTHDATE",
"min": "1/1/1955",
"max": "1/1/1999"
}
City это специальное поле, которое загружает глобальную 40K+ Словарь городов, к и связанных с ними широт, долгот и стран.
Он может фильтровать по одной или нескольким странам.
В следующем примере создаются 4 поля:
{
"name": "city",
"type": "CITY",
"filters": ["France", "Spain"]
},
{
"name": "city_lat",
"type": "LINK",
"conditionals": {
"link": "$city.lat"
}
},
{
"name": "city_long",
"type": "LINK",
"conditionals": {
"link": "$city.long"
}
},
{
"name": "city_country",
"type": "LINK",
"conditionals": {
"link": "$city.country"
}
}
Он особенный, и он прочитает путь к файлу CSV, загрузите его в память и проанализируйте.
К этому можно применить фильтр и создать другие Поле, производные от этого Поле.
Например,нассуществовать/opt/cloudera/parcels/DATAGEN/dictionaries/person_test.csvсерединаиметьэтотиндивидуальный CSV :
name;department;country
francois;PS;France
kamel;SE;France
thomas;RH;Germany
sebastian;PS;Spain
Мы можем создать два Поле:
{
"name": "person",
"type": "CSV",
"filters": ["country=France"],
"file": "/opt/cloudera/parcels/DATAGEN/dictionaries/person_test.csv",
"field": "name"
},
{
"name": "person_department",
"type": "LINK",
"conditionals": {
"link": "$person.department"
}
}
Условие — это объект, который позволяет определять зависимости от других полей.
чиновник,даиспользовать ВОценивать${field_name}заменятьдля Чтоценитьиз Расположениеизчиновник,Например:
{
"name": "starting_hour",
"type": "INTEGER",
"min": 0,
"max": 16
},
{
"name": "finished_hour",
"type": "INTEGER",
"conditionals": {
"formula": "$starting_hour + 8"
}
}
Условие — это объект, который позволяет определять зависимости от других полей.
инъекция,даодин строка,Чтосередина${field_name}одеялозаменятьдляониизценить,Например:
{
"name": "email",
"type": "STRING",
"conditionals": {
"injection": "${name}@company.it"
}
}
Условие — это объект, который позволяет определять зависимости от других полей.
состояние строки да серия строк, рассчитанная по одному,Если одиндля верно,Тогда значение настройкидля является правильным выражением.
Каждая строка условия состоит из имени поля (заданного $ отчет), состоящий из условия формы, имя поля заменяется его значением, оператор ( <, >, =, !=) Воляпроверить определениеизценитьили Поле(也одеялозаменять)。состояние ХОРОШОМожетк Зависит отиспользовать&(AND) или|(OR) Оператор состоит из нескольких проверок.
Пример:
{
"name": "rain",
"type": "STRING",
"conditionals": {
"$humidity_9_am>70 & $temperature_9_am<20 & $wind_force_9_am<80" : "true",
"$humidity_9_pm>70 & $temperature_9_pm<20 & $wind_force_9_am<80" : "true",
"$wind_provenance_9_am=NORTH & $wind_force_9_am>80" : "true",
"$wind_provenance_9_pm=NORTH & $wind_force_9_pm>80" : "true",
"$humidity_9_pm>70 & $temperature_9_pm<25 & $pressure_9_pm<1010": "true",
"$humidity_9_am>70 & $temperature_9_am<25 & $pressure_9_am<1010": "true",
"default" : "false"
}
}
Это доступные ключи, которые можно использовать для настройки места расположения данных:
Все доступные ключи для этих дадля определенных конфигураций сервиса:
Это дадля определенных сервисов настраивает все доступные ключи для Базовыхнастроек: **
Давайте создадим одну простую модель, чтобы переместить некоторые данные в общедоступный документ Hive:
Я хочу, чтобы что-то представляло сотрудников:
Кстати,Штаб-квартира компании находится в Германии.,Для всех сотрудников для.
Местокэтотдафинальныйиз JSON I результат:
{
"Fields": [
{
"name": "name",
"type": "NAME",
"filters": ["Germany"]
},
{
"name": "city",
"type": "CITY",
"filters": ["Germany"]
},
{
"name": "phone_number",
"type": "PHONE",
"filters": ["Germany"]
},
{
"name": "years_of_experience",
"type": "INTEGER",
"min": 0,
"max": 10
},
{
"name": "employee_id",
"type": "INCREMENT_INTEGER",
"min": 123456
},
{
"name": "department",
"type": "STRING",
"possible_values": ["HR", "CONSULTING", "FINANCE", "SALES", "ENGINEERING", "ADMINISTRATION", "MARKETING"]
}
],
"Table_Names": [
{"HIVE_HDFS_FILE_PATH": "/user/datagen/hive/employee_model/"},
{"HIVE_DATABASE": "datagen_test"},
{"HIVE_TABLE_NAME": "employee_model"},
{"HIVE_TEMPORARY_TABLE_NAME": "employee_model_tmp"},
{"AVRO_NAME": "datagenemployee"}
],
"Primary_Keys": [
],
"Options": [
]
}
хотетьсуществовать Начать генерацию данных До Тестовая модель,Можеткиспользовать API Проверьте это.
существовать model-tester-controller Далее API /model/testВоля Модельпутьделатьдлявходитьилипрямойзагрузить Модельивозвращатьсяиспользоватьэтот Модельгенерироватьиз一ХОРОШО。
Результат:
{ "name" : "Gerhilt", "city" : "Beelen", "phone_number" : "+49 299776078", "years_of_experience" : "2", "employee_id" : "123457", "department" : "FINANCE" }
сейчассуществовать,мы готовы,использоватьпоказнойилипрямойвызов API(использовать curl、postman или что-нибудь еще), мы Начаем генерацию данные, как показано ниже:
команда скручивания:
curl -X POST "https://ccycloud-1.lisbon.root.hwx.site:4242/datagen/hive" -H "accept: */*" -H "Content-Type: multipart/form-data" -F "batches=10" -F "model_file=@model-test.json;type=application/json" -F "rows=10000" -F "threads=10"
Верните следующий UUID:
{ "commandUuid": "1567dfba-a8f9-4da9-b389-9bc30f4ec1d5" , "error": "" }
существовать Datagen Webserver бревносередина,нас Можетксуществовать Смотрите в концеприезжать:
давайте проверим
Если у вас достаточно прав для входа в систему, чтобы приезжать hue (илиbeeline) у нас будет одна новая база данных:datagen_test,Чтосередина Сумка含одинповерхностьemployee_modelи一некоторыйданные:
позволить Datagen Знание того, как подключиться к различным службам, потребует некоторой входной конфигурации.
Настройте базовый документapplication.properties, существующий в локальной среде выполнения, фактически создав инъекцию среды выполнения CDP.
Должендокументразвертыватьсуществовать CDP Чжунши имеет следующие разрешения: 400 datagen:datagenиироды Каталог запуска:/var/run/cloudera-scm-agent/process/DATAGEN-XXXXXXX/service.properties/
У каждого типа сервиса есть раздел для загрузки данных, который можно без риска пустовать.
существовать CDP При работе на да это не требуется, но можно киспользовать ADMIN Роль определяет пользователя Ranger и его пароль.
этоттолько Зависит отInitialize service dirs and policies命令использовать Всуществовать Ranger Создайте необходимую политику по умолчанию в формате .
Если не настраивать, вам придется создавать необходимые политики самостоятельно.
ПРИМЕЧАНИЕ. Если у вас есть другие пути/база данные/тема ограничивать данные без да datagen Путь по умолчанию /база данные/тема, необходимые пользователю datagen Предоставьте разрешения, если вы не укажете другого пользователя
Cloudera Manager для Мы сделали кучу автоматических настроек, например kerberos или auto-TLS。
существовать Cloudera Manager середина,существоватьDatagen > ConfigurationВниз,Вы можете просмотреть все объекты размещения,Вы можете ознакомиться с некоторыми автоматическими настройками,А другие нет.
Самое главное даавтообнаружение (описано ниже).
Все свойства передаются на веб-сервер до начала внедрения документа приложения и существования.
При запуске Datagen Воляapplication.propertiesнагрузкаприезжать Памятьсерединаи继续进ХОРОШОМестопредикатизавтообнаружение。
существовать CDP серединанастраиватьчас,Datagen(еслиcm.autodiscoveryдля true)Воляиспользовать CM APIавтообнаружениеВсе услуги.(пользователь Не нужно ничего указывать)。
это也Можетспособный依赖ВописыватьдляAUTO-DISCOVERYиз Поле,Эти Поле заполняются по умолчанию.
Эти поляки,Справочные свойствадокумент,нравитьсяhdfs-site.xml、hive-site.xmlждать……иметь了этотиндивидуальный,Datagen Разберите эти файлы и автоматически настройте все возможные дополнительные поля.
После запуска,ты Можетксуществовать Datagen Web Server Я видел этот журнал:
еслииспользовать CM автообнаружение:
9:35:04.701 AM INFO PropertiesLoader [main] Going to auto-discover hbase.zookeeper.quorum with CM API
9:35:04.701 AM INFO PropertiesLoader [main] Going to auto-discover hbase.zookeeper.port with CM API
если Нетиспользовать CM автообнаружениено Конфигурациядокументавтообнаружение:
2022-10-13 13:33:49,220 INFO [main] com.cloudera.frisch.randomdatagen.config.PropertiesLoader: Going to auto-discover hbase.zookeeper.quorum
2022-10-13 13:33:49,222 DEBUG [main] com.cloudera.frisch.randomdatagen.Utils: Return value: server_zk1,server_zk_2,server_zk_3 from file: dev-support/test_files/hbase-site.xml for property: hbase.zookeeper.quorum
2022-10-13 13:33:49,222 INFO [main] com.cloudera.frisch.randomdatagen.config.PropertiesLoader: Going to auto-discover hbase.zookeeper.port
2022-10-13 13:33:49,223 DEBUG [main] com.cloudera.frisch.randomdatagen.Utils: Return value: 2181 from file: dev-support/test_files/hbase-site.xml for property: hbase.zookeeper.property.clientPort
Каждый раз, когда создается команда генерировать данные, первое, что она делает, — это получает настроенную карту памяти и копирует.
Затем,Пользователи могут предоставлять любую конфигурацию в своих вызовах API.,это будет только针верно Долженделатьохват отраслисейчасиметь Конфигурация,И на других это никак не влияет. также,Пользователи ничего не могут определить,При запуске по умолчанию будет использоваться фактическая конфигурация по умолчанию.
Это также означает, что теоретически вы можете передавать данные любому уважаемому Datagen использоватьиз API внешние услуги (например, внешний kafka изkafka-client-2.5 )。
Вы также можете киспользовать API для обслуживания разных пользователей (через keytab и директор), эти пользователи будут datagen Используется для предотвращения данных, которых следует избегать пользователям. datagen Создайте конкретные стратегии.
Оригинальная ссылка: https://frischhwc.github.io/datagen.