当前位置: 首页 > 工具软件 > HPCC Systems > 使用案例 >

OS X上的高性能计算集群(HPCC)和Cassandra

常甫
2023-12-01

我们的新母公司LexisNexis拥有世界上最大的公共记录数据库之一:

“…我们从10,000多种不同来源(包括公共,私人,规范和衍生数据)中全面收集了460亿条记录。 您可以获得有关大约2.69亿个人和2.77亿个独立企业的全面信息。”

http://www.lexisnexis.com/en-us/products/public-records.page

他们几十年来一直在管理,分析和搜索该数据库。 在这段时间里,他们建立了各种各样的“大数据”技术。 LexisNexis将这些技术统称为高性能计算集群(HPCC)平台。

HPCC是完全开源的:

自然,我们正在努力将HPCC与我们的实时数据管理和分析堆栈结合起来。 潜力确实令人兴奋。 具体来说,HPCC具有完善的机器学习和统计信息库,以及能够提供这些统计信息的查询引擎(Roxie)。

低估了,HPCC可以将Cassandra用作后端存储机制! (FTW!)

MacCC在技术上不支持HPCC平台,但是这是我为使其运行而要做的事情:

HPCC安装

  • 克隆github存储库及其子模块(git子模块更新–init –递归)
  • 拉我的补丁( https://github.com/hpcc-systems/HPCC-Platform/pull/7166
  • 使用brew安装依赖项
    brew install icu4c
    brew install boost
    brew install libarchive
    brew install bison27
    brew install openldap
    brew install nodejs
  • 创建一个构建目录,然后从那里运行cmake:
    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)进行编译和安装
  • 之后,您需要考虑一下权限:
    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.zip的内容替换/ var / lib / HPCCSystems
    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的Web服务和UI层)
    • eclccserver :(运行ECL编译服务器,该服务器接受ECL并将其编译为C,然后编译为动态库)
    • roxie (运行能够响应查询的Roxie服务器)
  • 启动其中的每一个,那么您应该准备运行一些ECL。 然后,在浏览器中转到http:// localhost:8010 。 您已经准备好运行一些ECL!

运行ECL

像带Hadoop的Pig一样,HPCC运行称为ECL的DSL。 可以在以下位置找到有关ECL的更多信息: http : //hpccsystems.com/download/docs/learning-ecl

  • 作为一个简单的冒烟测试,进入HPCC-Platform存储库,然后进入:./testing/regress/ecl。
  • 然后,运行以下命令:
ecl run hello.ecl --target roxie --server=localhost:8010
  • 您应该看到以下内容:
    <dataset name="Result 1"> 
            <row><result_1>Hello world</result_1></row> 
            </dataset>
  • Cassandra插件

    随着HPCC的启动和运行,我们准备与Cassandra一起玩乐。 HPCC具有插件。 这些插件位于/ opt / HPCC / plugins中。 对我来说,我必须将这些库复制到/ opt / HPCCSystems / lib中,以使HPCC能够识别它们。

    返回至test / regress / ecl目录,并查看cassandra-simple.ecl。 片段如下所示:

    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。 然后,我们创建一个childrec类型的DATASET。 然后,我们定义一个方法,该方法采用childrec类型的数据集,并对数据集中的每个记录运行Cassandra插入命令。

    在本地启动Cassandra。 (下载Cassandra,解压缩,然后运行bin / cassandra -f(将其保留在前台))

    Cassandra启动后,只需像执行hello程序一样运行ECL。

    ecl run cassandra-simple.ecl --target roxie --server=localhost:8010

    然后,您可以转到cqlsh并验证所有数据是否都将其返回到Cassandra中:

    ➜  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的味道。 这是一个强大的平台。

    一如既往,让我知道您是否遇到任何麻烦。

    翻译自: https://www.javacodegeeks.com/2015/04/high-performance-computing-clusters-hpcc-and-cassandra-on-os-x.html

 类似资料: