Наша новая материнская компания LexisNexis обладает одной из крупнейших в мире баз данных публичных записей:
«… Наша обширная коллекция из более чем 46 миллиардов записей из более чем 10 000 различных источников, включая публичные, частные, регулируемые и производные данные. Вы получаете исчерпывающую информацию о примерно 269 млн. Человек и 277 млн. Уникальных предприятий ».
http://www.lexisnexis.com/en-us/products/public-records.page
И они управляли, анализировали и искали эту базу данных в течение десятилетий. За это время они создали целый ряд технологий «больших данных». В совокупности LexisNexis называет эти технологии своей платформой высокопроизводительных вычислительных кластеров (HPCC).
HPCC полностью с открытым исходным кодом:
Естественно, мы работаем через объединение HPCC с нашим стеком управления и анализа данных в реальном времени. Потенциал действительно захватывающий. В частности, HPCC имеет сложные библиотеки машинного обучения и статистики и механизм запросов (Roxie), способный обслуживать эту статистику.
Не важно, HPCC может использовать Cassandra в качестве механизма хранения данных! (FTW!)
Платформа HPCC технически не поддерживается на Mac, но вот что я сделал для ее запуска:
HPCC Установить
- Клонировать репозиторий github и его подмодули (git submodule update –init –recursive)
- Вытащите мои патчи ( https://github.com/hpcc-systems/HPCC-Platform/pull/7166 )
- Установите зависимости используя brew
123456
brew install icu4c
brew install boost
brew install libarchive
brew install bison27
brew install openldap
brew install nodejs
- Создайте каталог для сборки и оттуда запустите cmake:
123
export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
cmake ../ -DICU_LIBRARIES=/usr/local/opt/icu4c/lib/libicuuc.dylib -DICU_INCLUDE_DIR=/usr/local/opt/icu4c/include -DLIBARCHIVE_INCLUDE_DIR=/usr/local/opt/libarchive/include -DLIBARCHIVE_LIBRARIES=/usr/local/opt/libarchive/lib/libarchive.dylib -DBOOST_REGEX_LIBRARIES=/usr/local/opt/boost/lib -DBOOST_REGEX_INCLUDE_DIR=/usr/local/opt/boost/include -DUSE_OPENLDAP=
true
-DOPENLDAP_INCLUDE_DIR=/usr/local/opt/openldap/include -DOPENLDAP_LIBRARIES=/usr/local/opt/openldap/lib/libldap_r.dylib -DCLIENTTOOLS_ONLY=
false
-DPLATFORM=
true
- Затем скомпилируйте и установите с помощью (sudo make install)
- После этого вам нужно немного поработать с разрешениями:
123
chmod -R a+rwx /opt/HPCCSystems/
chmod -R a+rwx /var/lock/HPCCSystems
chmod -R a+rwx /var/log/HPCCSystems
- Теперь, как правило, вы запускаете hpcc-init для настройки системы, но этот скрипт не работает в OS X, поэтому я использовал linux для генерации работающих файлов конфигурации и разместил их в репозитории здесь: https://github.com/boneill42 / hpcc_on_mac
- Клонируйте этот репозиторий и замените / var / lib / HPCCSystems содержимым var_lib_hpccsystems.zip
123
sudo rm -fr /var/lib/HPCCSystems
sudo unzip var_lib_hpccsystems.zip -d /var/lib
chmod -R a+rwx /var/lib/HPCCSystems
- Затем из каталога, содержащего файлы XML в этом хранилище, вы можете запустить:
- daserver : (запускает сервер Dali, который является механизмом сохранения для HPCC)
- esp : (Запускает сервер ESP, который является веб-сервисом и уровнем пользовательского интерфейса для HPCC)
- eclccserver : (запускает сервер компиляции ECL, который берет ECL и компилирует его в C, а затем в dynmic библиотеку)
- roxie (запускает сервер Roxie, который способен отвечать на запросы)
- Начните каждый из них, тогда вы должны быть готовы запустить ECL. Затем перейдите по адресу http: // localhost: 8010 в браузере. Вы готовы запустить ECL!
Запуск ECL
Как и Pig с Hadoop, HPCC использует DSL под названием ECL. Более подробную информацию о ECL можно найти здесь: http://hpccsystems.com/download/docs/learning-ecl
- В качестве простого теста дыма перейдите в свой репозиторий платформы HPCC и перейдите по адресу: ./testing/regress/ecl.
- Затем выполните следующее:
- Вы должны увидеть следующее:
123
<dataset name=
"Result 1"
>
<row><result_1>Hello world</result_1></row>
</dataset>
1
|
ecl run hello.ecl --target roxie --server=localhost: 8010 |
Кассандра Плагин
Когда HPCC запущен и работает, мы готовы повеселиться с Cassandra. HPCC имеет плагины. Эти плагины находятся в / opt / HPCC / plugins. Мне пришлось скопировать эти библиотеки в / opt / HPCCSystems / lib, чтобы HPCC распознал их.
Вернитесь в каталог testing / regress / ecl и посмотрите на cassandra-simple.ecl. Фрагмент приведен ниже:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
childrec := RECORD string name, integer4 value { default ( 99999 ) }, boolean boolval { default ( true ) }, real8 r8 { default ( 99.99 )}, real4 r4 { default ( 999.99 )}, DATA d { default (D '999999' )}, DECIMAL10_2 ddd { default ( 9.99 )}, UTF8 u1 { default (U '9999 ß' )}, UNICODE u2 { default (U '9999 ßßßß' )}, STRING a, SET OF STRING set1, SET OF INTEGER4 list1, LINKCOUNTED DICTIONARY(maprec) map1{linkcounted}; END; init := DATASET([{ 'name1' , 1 , true , 1.2 , 3.4 , D 'aa55aa55' , 1234567.89 , U 'Straße' , U 'Straße' , 'Ascii' ,[ 'one' , 'two' , 'two' , 'three' ],[ 5 , 4 , 4 , 3 ],[{ 'a' => 'apple' },{ 'b' => 'banana' }]}, { 'name2' , 2 , false , 5.6 , 7.8 , D '00' , - 1234567.89 , U 'là' , U 'là' , 'Ascii' , [],[],[]}], childrec); load(dataset(childrec) values) := EMBED(cassandra : user( 'boneill' ),keyspace( 'test' ),batch( 'unlogged' )) INSERT INTO tbl1 (name, value, boolval, r8, r4,d,ddd,u1,u2,a,set1,list1,map1) values (?,?,?,?,?,?,?,?,?,?,?,?,?); ENDEMBED; |
В этом примере мы определяем childrec как RECORD с набором полей. Затем мы создаем DATASET типа childrec. Затем мы определяем метод, который принимает набор данных типа childrec и запускает команду вставки Cassandra для каждой записи в наборе данных.
Запуск Кассандры локально. (скачайте Cassandra, разархивируйте его, затем запустите bin / cassandra -f (чтобы сохранить его на переднем плане))
Как только Cassandra включится, просто запустите ECL, как вы сделали программу hello.
1
|
ecl run cassandra-simple.ecl --target roxie --server=localhost: 8010 |
Затем вы можете перейти к cqlsh и проверить, что все данные вернулись в Cassandra:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
➜ cassandra bin/cqlsh Connected to Test Cluster at localhost:9160. [cqlsh 4.1.1 | Cassandra 2.0.7 | CQL spec 3.1.1 | Thrift protocol 19.39.0] Use HELP for help. cqlsh> select * from test.tbl1 limit 5; name | a | boolval | d | ddd | list1 | map1 | r4 | r8 | set1 | u1 | u2 | value -----------+---+---------+----------------+------+-------+------+--------+--------+------+ name1575 | | True | 0x393939393939 | 9.99 | null | null | 1576.6 | 1575 | null | 9999 ß | 9999 ßßßß | 1575 name3859 | | True | 0x393939393939 | 9.99 | null | null | 3862.9 | 3859 | null | 9999 ß | 9999 ßßßß | 3859 name11043 | | True | 0x393939393939 | 9.99 | null | null | 11054 | 11043 | null | 9999 ß | 9999 ßßßß | 11043 name3215 | | True | 0x393939393939 | 9.99 | null | null | 3218.2 | 3215 | null | 9999 ß | 9999 ßßßß | 3215 name7608 | | False | 0x393939393939 | 9.99 | null | null | 7615.6 | 7608.1 | null | 9999 ß | 9999 ßßßß | 7608 |
Хорошо, это должно дать немного вкуса ECL и HPCC. Это мощная платформа.
Как всегда, дайте мне знать, если у вас возникнут проблемы.
Ссылка: | Высокопроизводительные вычислительные кластеры (HPCC) и Cassandra для OS X от нашего партнера по JCG Брайана ONeill в блоге |