# 工具

# 1.控制脚本

Ignite提供了一个命令行脚本control.sh|bat,可以用它来对集群进行监控和管理,该脚本位于安装目录的/bin/文件夹。

控制脚本的语法如下:

    # 1.1.接入集群

    如果执行脚本时没有连接参数,控制脚本会尝试连接运行在本机的节点(localhost:11211),如果希望接入运行在远程主机上的节点,需要指定连接参数:

    参数 描述 默认值
    --host HOST_OR_IP 节点的主机名或者IP地址 localhost
    --port PORT 连接端口 11211
    --user USER 用户名
    --password PASSWORD 密码
    --ping-interval PING_INTERVAL ping操作间隔 5000
    --ping-timeout PING_TIMEOUT ping操作响应超时 30000
    --ssl-protocol PROTOCOL1, PROTOCOL2…​ 接入集群时尝试的SSL协议列表,支持的协议在这里 TLS
    --ssl-cipher-suites CIPHER1,CIPHER2…​ SSL密码列表,支持的密码在这里
    --ssl-key-algorithm ALG SSL密钥算法 SunX509
    --keystore-type KEYSTORE_TYPE 密钥库类型 JKS
    --keystore KEYSTORE_PATH 密钥库路径,为控制脚本指定密钥库来开启SSL
    --keystore-password KEYSTORE_PWD 密钥库密码
    --truststore-type TRUSTSTORE_TYPE 信任库类型 JKS
    --truststore TRUSTSTORE_PATH 信任库路径
    --truststore-password TRUSTSTORE_PWD 信任库密码
    --ssl-factory SSL_FACTORY_PATH 自定义的SSL工厂Spring配置文件路径

    # 1.2.激活、冻结和拓扑管理

    可以使用控制脚本来激活/冻结集群,以及管理基线拓扑

    # 1.2.1.获取集群状态

    集群可以有3个状态:激活、只读和非激活,具体可以参见集群状态章节的介绍。

    执行下面的命令,可以获得集群的状态:

      # 1.2.2.激活集群

      激活是将当前可用的服务端节点集配置为基线拓扑,只有使用原生持久化时才需要激活。

      使用下面的命令可以激活集群。

        # 1.2.3.冻结集群

        警告

        冻结会在所有集群节点上释放已分配的所有内存资源,包括应用的数据,并禁用公开的集群API。如果有未持久化(原生持久化外部存储)的缓存,则将丢失数据,并且必须重新加载这些缓存。非持久化的系统缓存也会被清理。

        执行下面的命令可以冻结集群:

          # 1.2.4.获取基线中注册的节点

          执行下面的命令可以获得基线中注册的节点列表:

            输出中包含了当前的拓扑版本,基线中节点的一致性ID列表,以及加入集群但是还没有添加到基线的节点列表。

            Command [BASELINE] started
            Arguments: --baseline
            --------------------------------------------------------------------------------
            Cluster state: active
            Current topology version: 3
            
            Current topology version: 3 (Coordinator: ConsistentId=dd3d3959-4fd6-4dc2-8199-bee213b34ff1, Order=1)
            
            Baseline nodes:
                ConsistentId=7d79a1b5-cbbd-4ab5-9665-e8af0454f178, State=ONLINE, Order=2
                ConsistentId=dd3d3959-4fd6-4dc2-8199-bee213b34ff1, State=ONLINE, Order=1
            --------------------------------------------------------------------------------
            Number of baseline nodes: 2
            
            Other nodes:
                ConsistentId=30e16660-49f8-4225-9122-c1b684723e97, Order=3
            Number of other nodes: 1
            Command [BASELINE] finished with code: 0
            Control utility has completed execution at: 2019-12-24T16:53:08.392865
            Execution time: 333 ms
            

            # 1.2.5.往基线拓扑中添加节点

            使用下面的命令可以往基线拓扑中添加节点。节点加入之后,会开启再平衡过程

              # 1.2.6.从基线拓扑中删除节点

              使用下面的命令可以从基线拓扑中删除节点。只有离线的节点才能从基线拓扑中删除,需要先停止该节点然后才能执行remove命令。这个操作会开启再平衡过程,会在基线拓扑的剩余节点中重新分布数据。

                # 1.2.7.配置基线拓扑

                可以通过提供节点的一致性ID列表,或者通过指定基线拓扑版本来配置基线拓扑。

                要将一组节点配置为基线,可以使用下面的命令:

                  要恢复指定版本的基线,可以使用下面的命令:

                    # 1.2.8.启用基线拓扑自动调整

                    基线拓扑自动调整是指在拓扑稳定一段时间后自动更新基线拓扑。

                    对于纯内存集群,自动调整是默认启用的,并且超时设置为0。这意味着基线拓扑在服务端节点加入或离开集群后立即更改。对于开启持久化的集群,自动调整默认是警用的,使用以下命令可以开启:

                      超时时间以毫秒计,在上一次JOIN/LEFT/FAIL事件之后经过给定的毫秒数时,会将基线设置为当前拓扑。每个新的JOIN/LEFT/FAIL事件都会重新启动超时倒计时。

                      使用以下命令可以禁用基线自动调整:

                        # 1.3.事务管理

                        控制脚本可以拿到集群中正在执行的事务的信息,也可以取消某个事务。

                        下面的命令可以返回匹配过滤条件的事务列表(或者没有过滤条件返回所有的事务):

                          事务过滤器参数在下表列出:

                          参数 描述
                          --xid XID 事务ID
                          --min-duration SECONDS 事务已执行的最小秒数
                          --min-size SIZE 事务大小最小值
                          --label LABEL 事务的标签,可以使用正则表达式
                          --servers --clients
                          --nodes nodeId1,nodeId2…​ 希望获得事务信息的节点一致性ID列表
                          --limit NUMBER 将事务数限制为指定值
                          --order DURATION SIZE

                          使用下面的命令可以取消事务:

                            要取消已运行超过100秒的事务,请执行以下命令:

                            control.sh --tx --min-duration 100 --kill
                            

                            # 1.4.事务竞争检测

                            contention命令可用于检测多个事务在相同键上竞争创建锁的情况,当有事务长期运行或者挂起时,该命令很有用。

                            示例:

                            # Reports all keys that are point of contention for at least 5 transactions on all cluster nodes.
                            control.sh|bat --cache contention 5
                            
                            # Reports all keys that are point of contention for at least 5 transactions on specific server node.
                            control.sh|bat --cache contention 5 f2ea-5f56-11e8-9c2d-fa7a
                            

                            如果存在任何竞争激烈的键,该工具将转储大量信息,包括发生争用的键、事务和节点。

                            示例:

                            [node=TcpDiscoveryNode [id=d9620450-eefa-4ab6-a821-644098f00001, addrs=[127.0.0.1], sockAddrs=[/127.0.0.1:47501], discPort=47501, order=2, intOrder=2, lastExchangeTime=1527169443913, loc=false, ver=2.5.0#20180518-sha1:02c9b2de, isClient=false]]
                            
                            // No contention on node d9620450-eefa-4ab6-a821-644098f00001.
                            
                            [node=TcpDiscoveryNode [id=03379796-df31-4dbd-80e5-09cef5000000, addrs=[127.0.0.1], sockAddrs=[/127.0.0.1:47500], discPort=47500, order=1, intOrder=1, lastExchangeTime=1527169443913, loc=false, ver=2.5.0#20180518-sha1:02c9b2de, isClient=false]]
                                TxEntry [cacheId=1544803905, key=KeyCacheObjectImpl [part=0, val=0, hasValBytes=false], queue=10, op=CREATE, val=UserCacheObjectImpl [val=0, hasValBytes=false], tx=GridNearTxLocal[xid=e9754629361-00000000-0843-9f61-0000-000000000001, xidVersion=GridCacheVersion [topVer=138649441, order=1527169439646, nodeOrder=1], concurrency=PESSIMISTIC, isolation=REPEATABLE_READ, state=ACTIVE, invalidate=false, rollbackOnly=false, nodeId=03379796-df31-4dbd-80e5-09cef5000000, timeout=0, duration=1247], other=[]]
                                TxEntry [cacheId=1544803905, key=KeyCacheObjectImpl [part=0, val=0, hasValBytes=false], queue=10, op=READ, val=null, tx=GridNearTxLocal[xid=8a754629361-00000000-0843-9f61-0000-000000000001, xidVersion=GridCacheVersion [topVer=138649441, order=1527169439656, nodeOrder=1], concurrency=PESSIMISTIC, isolation=REPEATABLE_READ, state=ACTIVE, invalidate=false, rollbackOnly=false, nodeId=03379796-df31-4dbd-80e5-09cef5000000, timeout=0, duration=1175], other=[]]
                                TxEntry [cacheId=1544803905, key=KeyCacheObjectImpl [part=0, val=0, hasValBytes=false], queue=10, op=READ, val=null, tx=GridNearTxLocal[xid=6a754629361-00000000-0843-9f61-0000-000000000001, xidVersion=GridCacheVersion [topVer=138649441, order=1527169439654, nodeOrder=1], concurrency=PESSIMISTIC, isolation=REPEATABLE_READ, state=ACTIVE, invalidate=false, rollbackOnly=false, nodeId=03379796-df31-4dbd-80e5-09cef5000000, timeout=0, duration=1175], other=[]]
                                TxEntry [cacheId=1544803905, key=KeyCacheObjectImpl [part=0, val=0, hasValBytes=false], queue=10, op=READ, val=null, tx=GridNearTxLocal[xid=7a754629361-00000000-0843-9f61-0000-000000000001, xidVersion=GridCacheVersion [topVer=138649441, order=1527169439655, nodeOrder=1], concurrency=PESSIMISTIC, isolation=REPEATABLE_READ, state=ACTIVE, invalidate=false, rollbackOnly=false, nodeId=03379796-df31-4dbd-80e5-09cef5000000, timeout=0, duration=1175], other=[]]
                                TxEntry [cacheId=1544803905, key=KeyCacheObjectImpl [part=0, val=0, hasValBytes=false], queue=10, op=READ, val=null, tx=GridNearTxLocal[xid=4a754629361-00000000-0843-9f61-0000-000000000001, xidVersion=GridCacheVersion [topVer=138649441, order=1527169439652, nodeOrder=1], concurrency=PESSIMISTIC, isolation=REPEATABLE_READ, state=ACTIVE, invalidate=false, rollbackOnly=false, nodeId=03379796-df31-4dbd-80e5-09cef5000000, timeout=0, duration=1175], other=[]]
                            
                            // Node 03379796-df31-4dbd-80e5-09cef5000000 is place for contention on key KeyCacheObjectImpl [part=0, val=0, hasValBytes=false].
                            

                            # 1.5.缓存状态监控

                            控制脚本的另一个重要命令是--cache list,其用于缓存的监控。该命令可以提供已部署缓存的列表及其关联/分布参数,还有在缓存组内的分布,另外还有一个命令用于查看已有的原子序列。

                            # Displays a list of all caches
                            control.sh|bat --cache list .
                            
                            # Displays a list of caches whose names start with "account-".
                            control.sh|bat --cache list account-.*
                            
                            # Displays info about cache group distribution for all caches.
                            control.sh|bat --cache list . --groups
                            
                            # Displays info about cache group distribution for the caches whose names start with "account-".
                            control.sh|bat --cache list account-.* --groups
                            
                            # Displays info about all atomic sequences.
                            control.sh|bat --cache list . --seq
                            
                            # Displays info about the atomic sequnces whose names start with "counter-".
                            control.sh|bat --cache list counter-.* --seq
                            

                            # 1.6.丢失分区重置

                            可以使用控制脚本重置某个缓存丢失的分区,具体请参见分区丢失策略

                            control.sh --cache reset_lost_partitions cacheName1,cacheName2,...
                            

                            # 1.7.一致性检查和修复命令

                            control.sh|bat包括一组一致性检查命令,可用于验证和修复内部数据的一致性。

                            首先,这些命令可用于调试和故障排除场景,尤其是在开发高峰期。

                            其次,如果怀疑查询(例如SQL查询等)返回的结果集不完整或错误,则这些命令可以验证数据中是否存在不一致。

                            第三,一致性检查命令可以用作常规集群运行健康监测的一部分。

                            最后,必要时一致性是可以修复的。

                            下面看下更具体的使用场景:

                            # 1.7.1.验证分区校验和

                            即使主备之间的更新计数器和大小都相等,但是由于某些严重的故障,主备之间还是有可能出现差异。

                            idle_verify命令将主分区的哈希与备份分区的哈希进行比较,并报告差异。差异可能是更新操作期间节点故障或非正常关闭导致。如果检测到任何不一致之处,建议删除不正确的分区。

                            如果检测到任何的不一致,建议删除不正确的分区,或者使用--consistency repair命令修复一致性。

                            # Checks partitions of all caches that their partitions actually contain same data.
                            control.sh|bat --cache idle_verify
                            
                            # Checks partitions of specific caches that their partitions actually contain same data.
                            control.sh|bat --cache idle_verify cache1,cache2,cache3
                            

                            如果有分区出现偏离,则会输出冲突的分区列表,如下所示:

                            idle_verify check has finished, found 2 conflict partitions.
                            
                            Conflict partition: PartitionKey [grpId=1544803905, grpName=default, partId=5]
                            Partition instances: [PartitionHashRecord [isPrimary=true, partHash=97506054, updateCntr=3, size=3, consistentId=bltTest1], PartitionHashRecord [isPrimary=false, partHash=65957380, updateCntr=3, size=2, consistentId=bltTest0]]
                            Conflict partition: PartitionKey [grpId=1544803905, grpName=default, partId=6]
                            Partition instances: [PartitionHashRecord [isPrimary=true, partHash=97595430, updateCntr=3, size=3, consistentId=bltTest1], PartitionHashRecord [isPrimary=false, partHash=66016964, updateCntr=3, size=2, consistentId=bltTest0]]
                            

                            idle_verify检查期间集群应处于空闲状态

                            idle_verify计算哈希时,所有的更新应停止,否则可能显示错误的结果。如果正在不停地更新,比较一个分布式系统的大规模数据集是不可能的。

                            # 1.7.2.修复缓存一致性

                            试验性特性

                            该命令可能不适用于某些配置,或者可能导致集群/节点故障。

                            在生产环境实际操作之前,务必在与生产类似的数据/配置条件下进行验证。

                            必要的额外配置项

                            该命令使用特定的违反一致性事件来记录一致性冲突,所以必须在命令执行前启用该事件。

                            关于如何监听事件,请参见处理事件的相关章节。

                            idle_verify命令会输出不一致的缓存组名和分区列表,repair命令可以执行缓存的一致性检查,然后对于idle_verify命令发现的每个不一致的分区,使用读修复的方式尽可能地修复。

                            该命令使用特定的策略来进行修复,建议是首先使用CHECK_ONLY命令列出不一致的值,然后使用正确的修复策略进行修复。

                            发现的不一致条目默认会列出在应用的日志中,通过修改org.apache.ignite.internal.visor.consistency包对应的Logger的日志路径,可以修改日志的位置。

                            找到的不一致条目默认会原样输出,但是通过启用IGNITE_TO_STRING_INCLUDE_SENSITIVE系统属性,可以屏蔽敏感信息。

                              参数

                              参数名 描述
                              cache-name 待检查/修复的缓存/缓存组名
                              partitions 待检查/修复的逗号分隔的缓存分区号列表
                              strategy 参见修复策略

                              可选参数

                              参数名 描述
                              --parallel 通过并行执行加快检查/修复的速度

                              # 1.7.3.缓存一致性检查/修复操作状态

                              该命令用于检查--consistency repair命令的状态。

                                # 1.7.4.分区更新计数器校准

                                该命令会在手工修复后对分区的更新计数器进行校准。

                                  # 1.7.5.验证SQL索引一致性

                                  validate_indexes命令将验证所有集群节点上给定缓存的索引。

                                  验证过程将检查以下内容:

                                  1. 二级SQL索引可以访问主索引引用的所有键-值条目;
                                  2. 主索引引用的所有键-值条目都必须是可访问的,主索引的引用不应指向空值;
                                  3. 主索引可以访问二级SQL索引引用的所有键-值条目。
                                  # Checks indexes of all caches on all cluster nodes.
                                  control.sh|bat --cache validate_indexes
                                  
                                  # Checks indexes of specific caches on all cluster nodes.
                                  control.sh|bat --cache validate_indexes cache1,cache2
                                  
                                  # Checks indexes of specific caches on node with given node ID.
                                  control.sh|bat --cache validate_indexes cache1,cache2 f2ea-5f56-11e8-9c2d-fa7a
                                  

                                  如果索引引用了不存在的条目(或部分条目未被索引),会输出错误,如下所示:

                                  PartitionKey [grpId=-528791027, grpName=persons-cache-vi, partId=0] ValidateIndexesPartitionResult [updateCntr=313, size=313, isPrimary=true, consistentId=bltTest0]
                                  IndexValidationIssue [key=0, cacheName=persons-cache-vi, idxName=_key_PK], class org.apache.ignite.IgniteCheckedException: Key is present in CacheDataTree, but can't be found in SQL index.
                                  IndexValidationIssue [key=0, cacheName=persons-cache-vi, idxName=PERSON_ORGID_ASC_IDX], class org.apache.ignite.IgniteCheckedException: Key is present in CacheDataTree, but can't be found in SQL index.
                                  validate_indexes has finished with errors (listed above).
                                  

                                  validate_indexes检查期间集群应处于空闲状态

                                  idle_verify一样,索引验证工具仅在停止更新后才能正常工作。否则检查程序线程与更新条目/索引的线程之间可能会出现竞争,这可能导致错误的检测结果。

                                  # 1.7.6.检查快照一致性

                                  检查快照一致性命令的工作方式与idle_verify命令相同。它会比较主分区和相应备份分区之间的哈希值,并在发现任何差异时输出报告。差异可能是由于获取快照的集群上的某些数据不一致导致的,如果发生这种情况,建议在集群上执行该idle_verify过程。

                                  检查增量快照的命令仅验证WAL段中的数据。它会检查快照中包含的每个事务是否已在每个参与的节点上完全提交。它还计算这些事务和提交的数据更改的哈希值,并在节点之间进行比较。

                                  增量快照只验证事务性缓存

                                  注意,增量快照并不能保证原子缓存的一致性。建议在恢复后使用idle_verify命令验证这些缓存,必要的话可以使用--consistency命令修复不一致的分区。

                                  此过程不需要集群处于idle状态。

                                  # Checks that partitions of all snapshot caches have the correct checksums and primary/backup ones actually contain the same data.
                                  control.(sh|bat) --snapshot check snapshot_name
                                  
                                  # Checks the transactional data included into incremental snapshots. Incremental snapshots with indices from 1 to 3 are checked.
                                  control.(sh|bat) --snapshot check snapshot_name --increment 3
                                  

                                  # 1.7.7.检查SQL索引内联值

                                  运行中的Ignite集群在各个节点上可能有不同的SQL索引内联值,例如各个节点上IGNITE_MAX_INDEX_PAYLOAD_SIZE的属性值不同等。索引内联值之间的差异可能导致性能下降。

                                  check_index_inline_sizes命令会验证所有节点上给定缓存的索引内联值。在节点加入时会始终检查二级索引的内联值,如有不同,则会在日志中输出警告信息。

                                  使用以下命令可以检查各个节点上二级索引内联值是否相同:

                                  control.sh|bat --cache check_index_inline_sizes
                                  

                                  如果内联值不同,控制台输出如下所示:

                                  Control utility [ver. 2.12.0]
                                  2022 Copyright(C) Apache Software Foundation
                                  User: test
                                  Time: 2021-04-27T16:13:21.213
                                  Command [CACHE] started
                                  Arguments: --cache check_index_inline_sizes --yes
                                  
                                  Found 4 secondary indexes.
                                  3 index(es) have different effective inline size on nodes. It can lead to
                                  performance degradation in SQL queries.
                                  Index(es):
                                    Full index name: PUBLIC#TEST_TABLE#L_IDX nodes:
                                  [ca1d23ae-89d4-4e8d-ae12-6c68f3900000] inline size: 1, nodes:
                                  [8327bbd1-df08-4b97-8721-de95e363e745] inline size: 2
                                    Full index name: PUBLIC#TEST_TABLE#S1_IDX nodes:
                                  [ca1d23ae-89d4-4e8d-ae12-6c68f3900000] inline size: 1, nodes:
                                  [8327bbd1-df08-4b97-8721-de95e363e745] inline size: 2
                                    Full index name: PUBLIC#TEST_TABLE#I_IDX nodes:
                                  [ca1d23ae-89d4-4e8d-ae12-6c68f3900000] inline size: 1, nodes:
                                  [8327bbd1-df08-4b97-8721-de95e363e745] inline size: 2
                                  

                                  # 1.8.追踪配置

                                  通过--tracing-configuration命令可以启用/禁用某个API的追踪采样,具体请参见追踪章节的介绍。

                                  使用该命令之前,需要开启控制脚本的试验性功能:

                                  export IGNITE_ENABLE_EXPERIMENTAL_COMMAND=true
                                  

                                  执行下面的命令可以查看当前的追踪配置:

                                  control.sh --tracing-configuration
                                  

                                  要启用某个API的追踪采样:

                                  control.sh --tracing-configuration set --scope <scope> --sampling-rate <rate> --label <label>
                                  

                                  参数:

                                  参数 描述
                                  --scope 要追踪的API:
                                  1.DISCOVERY:发现事件;
                                  2.EXCHANGE:交换事件;
                                  3.COMMUNICATION:通信事件;
                                  4.TX:事务
                                  --sampling-rate 概率采样率,介于0.01.0之间的数字(包含),0表示不采样(默认),1表示始终采样。例如0.5表示每条追踪都以50%的概率采样
                                  --label 仅适用于TXAPI范围。该参数定义具有给定标签的事务的采样率。当指定--label参数时,则Ignite将追踪指定标签的事务。可以为不同的标签配置不同的采样率。没有标签的事务追踪将以默认采样率采样,TX范围的默认采样率可以通过不带--label参数的命令进行配置

                                  示例:

                                  • 追踪所有的发现事件:

                                    control.sh --tracing-configuration set --scope DISCOVER --sampling-rate 1
                                    
                                  • 追踪所有的事务:

                                    control.sh --tracing-configuration set --scope TX --sampling-rate 1
                                    
                                  • 配置标签为report的事务的采样率为50%:

                                    control.sh --tracing-configuration set --scope TX --sampling-rate 0.5
                                    

                                  # 1.9.集群ID和标签

                                  集群ID可以唯一标识一个集群,其是在集群第一次启动时自动生成的,具体请参见集群ID和标签章节的内容。

                                  使用--state命令可查看当前集群的ID:

                                    然后检查输出:

                                    Command [STATE] started
                                    Arguments: --state
                                    --------------------------------------------------------------------------------
                                    Cluster  ID: bf9764ea-995e-4ea9-b35d-8c6d078b0234
                                    Cluster tag: competent_black
                                    --------------------------------------------------------------------------------
                                    Cluster is active
                                    Command [STATE] finished with code: 0
                                    

                                    集群标签是可以分配给集群的用户友好名称,使用以下命令可以修改标签(标签不得超过280个字符):

                                      # 1.10.指标命令

                                      metrics命令会输出一个指标或者由参数列表提供的指标注册表的值。使用--node-id参数,可以拿到某个节点的指标,如果未指定该参数,Ignite会随机选择一个节点。

                                        指标输出示例:

                                        control.sh --metric sysCurrentThreadCpuTime
                                        Command [METRIC] started
                                        Arguments: --metric sys
                                        --------------------------------------------------------------------------------
                                        metric                          value
                                        sys.CurrentThreadCpuTime        17270000
                                        Command [METRIC] finished with code: 0
                                        

                                        指标注册表输出示例:

                                        control.sh --metric io.dataregion.default
                                        Command [METRIC] started
                                        Arguments: --metric sys
                                        --------------------------------------------------------------------------------
                                        metric                          value
                                        io.dataregion.default.TotalAllocatedSize          0
                                        io.dataregion.default.LargeEntriesPagesCount      0
                                        io.dataregion.default.PagesReplaced               0
                                        io.dataregion.default.PhysicalMemorySize          0
                                        io.dataregion.default.CheckpointBufferSize        0
                                        io.dataregion.default.PagesReplaceRate            0
                                        io.dataregion.default.InitialSize                 268435456
                                        io.dataregion.default.PagesRead                   0
                                        io.dataregion.default.AllocationRate              0
                                        io.dataregion.default.OffHeapSize                 0
                                        io.dataregion.default.UsedCheckpointBufferSize    0
                                        io.dataregion.default.MaxSize                     6871947673
                                        io.dataregion.default.OffheapUsedSize             0
                                        io.dataregion.default.EmptyDataPages              0
                                        io.dataregion.default.PagesFillFactor             0.0
                                        io.dataregion.default.DirtyPages                  0
                                        io.dataregion.default.TotalThrottlingTime         0
                                        io.dataregion.default.EvictionRate                0
                                        io.dataregion.default.PagesWritten                0
                                        io.dataregion.default.TotalAllocatedPages         0
                                        io.dataregion.default.PagesReplaceAge             0
                                        io.dataregion.default.PhysicalMemoryPages         0
                                        Command [METRIC] finished with code: 0
                                        

                                        # 1.11.指标配置命令

                                        指标命令可以配置直方图指标的边界或命中率指标的速率时间间隔。

                                          提示

                                          指标命令中的指标名格式为:<register-name>.<metric-name>,比如WalLoggingRate指标必须配置为io.datastorage.WalLoggingRate

                                          # 1.12.索引管理

                                          下面的命令可以获得索引的特定信息,然后触发索引的重建过程。

                                          要获取所有匹配过滤规则的索引列表,可使用下面的命令:

                                            参数:

                                            参数 描述
                                            --node-id nodeId 作业执行的节点ID,如果ID未指定,集群会选择一个节点
                                            --group-name regExp 启用按缓存组名筛选的正则表达式
                                            --cache-name regExp 启用按缓存名筛选的正则表达式
                                            --index-name regExp 启用按索引名筛选的正则表达式

                                            要获取正在重建索引的所有缓存的列表,可使用以下命令:

                                              要触发指定缓存或缓存组的所有索引的重建过程,可使用以下命令:

                                                参数 描述
                                                --node-ids 重建索引的节点ID列表
                                                --all-nodes 所有节点
                                                --cache-names 待重建索引的缓存名列表,逗号分割
                                                --group-names 待重建索引的缓存组名列表,逗号分割

                                                # 1.13.系统视图命令

                                                该命令会输出由参数列表指定的系统视图的内容,使用--node-id参数,可以拿到某个节点的指标,如果未指定该参数,Ignite会随机选择一个节点。

                                                  输出示例:

                                                  control.sh --system-view nodes
                                                  Command [SYSTEM-VIEW] started
                                                  Arguments: --system-view nodes
                                                  --------------------------------------------------------------------------------
                                                  nodeId                                  consistentId                                         version                          isClient    nodeOrder    addresses                                          hostnames          isLocal
                                                  a8a28869-cac6-4b17-946a-6f7f547b9f62    0:0:0:0:0:0:0:1%lo0,127.0.0.1,192.168.31.45:47500    2.10.0#20201230-sha1:00000000    false               1    [0:0:0:0:0:0:0:1%lo0, 127.0.0.1, 192.168.31.45]    [192.168.31.45]    true
                                                  d580433d-c621-45ff-a558-b4df82d09613    0:0:0:0:0:0:0:1%lo0,127.0.0.1,192.168.31.45:47501    2.10.0#20201230-sha1:00000000    false               2    [0:0:0:0:0:0:0:1%lo0, 127.0.0.1, 192.168.31.45]    [192.168.31.45]    false
                                                  Command [SYSTEM-VIEW] finished with code: 0
                                                  
                                                  control.sh --system-view views
                                                  Command [SYSTEM-VIEW] started
                                                  Arguments: --system-view views
                                                  --------------------------------------------------------------------------------
                                                  name                           schema    description
                                                  NODES                          SYS       Cluster nodes
                                                  SQL_QUERIES_HISTORY            SYS       SQL queries history.
                                                  INDEXES                        SYS       SQL indexes
                                                  BASELINE_NODES                 SYS       Baseline topology nodes
                                                  STRIPED_THREADPOOL_QUEUE       SYS       Striped thread pool task queue
                                                  LOCAL_CACHE_GROUPS_IO          SYS       Local node IO statistics for cache groups
                                                  SCAN_QUERIES                   SYS       Scan queries
                                                  CLIENT_CONNECTIONS             SYS       Client connections
                                                  PARTITION_STATES               SYS       Distribution of cache group partitions across cluster nodes
                                                  VIEW_COLUMNS                   SYS       SQL view columns
                                                  SQL_QUERIES                    SYS       Running SQL queries.
                                                  CACHE_GROUP_PAGE_LISTS         SYS       Cache group page lists
                                                  METRICS                        SYS       Ignite metrics
                                                  CONTINUOUS_QUERIES             SYS       Continuous queries
                                                  TABLE_COLUMNS                  SYS       SQL table columns
                                                  TABLES                         SYS       SQL tables
                                                  DISTRIBUTED_METASTORAGE        SYS       Distributed metastorage data
                                                  SERVICES                       SYS       Services
                                                  DATASTREAM_THREADPOOL_QUEUE    SYS       Datastream thread pool task queue
                                                  NODE_METRICS                   SYS       Node metrics
                                                  BINARY_METADATA                SYS       Binary metadata
                                                  JOBS                           SYS       Running compute jobs, part of compute task started on remote host.
                                                  SCHEMAS                        SYS       SQL schemas
                                                  CACHE_GROUPS                   SYS       Cache groups
                                                  VIEWS                          SYS       SQL views
                                                  DATA_REGION_PAGE_LISTS         SYS       Data region page lists
                                                  NODE_ATTRIBUTES                SYS       Node attributes
                                                  TRANSACTIONS                   SYS       Running transactions
                                                  CACHES                         SYS       Caches
                                                  TASKS                          SYS       Running compute tasks
                                                  Command [SYSTEM-VIEW] finished with code: 0
                                                  

                                                  # 1.14.性能统计

                                                  Ignite提供了一个用于集群分析的内置工具,具体请参见性能统计章节的内容。

                                                    参数:

                                                    参数 描述
                                                    start 在集群中开始收集性能统计数据
                                                    stop 在集群中停止收集性能统计数据
                                                    rotate 轮流收集集群中的性能统计数据
                                                    status 取得集群中收集性能统计数据的状态

                                                    # 1.15.销毁缓存

                                                    可以通过控制脚本销毁某个缓存。

                                                    control.sh|bat --cache destroy --caches cache1,...,cacheN|--destroy-all-caches
                                                    

                                                    参数:

                                                    参数 描述
                                                    --caches cache1,…​,cacheN 指定要销毁的缓存名列表,逗号分割
                                                    --destroy-all-caches 永久销毁所有用户创建的缓存

                                                    示例:

                                                    # Destroy cache1 and cache2.
                                                    control.sh|bat --cache destroy --caches cache1,cache2
                                                    
                                                    # Destroy all user-created caches.
                                                    control.sh|bat --cache destroy --destroy-all-caches
                                                    

                                                    # 1.16.清理缓存

                                                    可以通过控制脚本清理某些缓存的数据。

                                                    control.sh|bat --cache clear --caches cache1,...,cacheN
                                                    

                                                    参数:

                                                    参数 描述
                                                    --caches cache1,…​,cacheN 指定要清理的缓存名列表,逗号分割

                                                    示例:

                                                    # Clear cache1 and cache2.
                                                    control.sh|bat --cache clear --caches cache1,cache2
                                                    

                                                    # 1.17.扫描缓存

                                                    可以通过控制脚本扫描缓存的数据。

                                                    control.sh|bat --cache scan cacheName [--limit N]
                                                    

                                                    对于每个条目会显示四列:键类型和主键的字符串表示,值类型和值的字符串表示。

                                                    参数 描述
                                                    --limit N 扫描的数据量限额(默认值1000)

                                                    示例:

                                                    # Query no more than 10 entries from cache "cache1"
                                                    control.sh|bat --cache scan cache1 --limit 10
                                                    

                                                    # 1.18.创建缓存

                                                    可以使用控制脚本创建一个缓存。

                                                    提示

                                                    需要启用ignite-spring模块。

                                                    control.sh|bat --cache create --springXmlConfig springXmlFilePath
                                                    

                                                    参数

                                                    参数 描述
                                                    --springXmlConfig springXmlConfigPath Spring XML配置文件路径,其中包含要创建缓存的org.apache.ignite.configuration.CacheConfigurationBean。

                                                    示例

                                                    # Create caches from the `/ignite/config/userCaches.xml` configuration.
                                                    control.sh|bat --cache create --springXmlConfig /ignite/config/userCaches.xml`
                                                    

                                                    # 1.19.处理集群属性

                                                    control.sh|bat脚本提供了处理SQL统计信息的能力。

                                                    要获得所有可用属性的列表,可以使用--property list命令。

                                                      可以使用--property set命令设定属性值,比如,在集群中启用/禁用SQL统计信息,可以指定ON|OFF|NO_UPDATE值。

                                                        还可以使用--property get命令获取属性值,比如:

                                                          # 1.20.管理缓存指标集合

                                                          该命令提供了开启/禁用/显示缓存指标集合状态的功能。

                                                          control.sh|bat --cache metrics enable|disable|status --caches cache1[,...,cacheN]|--all-caches
                                                          

                                                          参数

                                                          参数 描述
                                                          --caches cache1[,…​,cacheN] 要操作的缓存名列表,逗号分割
                                                          --all-caches 操作面向所有的缓存

                                                          示例

                                                          # Show metrics statuses for all caches:
                                                          control.sh|bat --cache metrics status --all-caches
                                                          
                                                          # Enable metrics collection for cache-1 and cache-2:
                                                          control.sh|bat --cache metrics enable --caches cache-2,cache-1
                                                          

                                                          # 1.21.重建索引

                                                          通过schedule_indexes_rebuild命令可以为指定的缓存或者缓存组重建索引,目标的缓存或者缓存组必须处于维护模式。

                                                          control.sh|bat --cache schedule_indexes_rebuild --node-ids nodeId1,...nodeIdN|--all-nodes --cache-names cacheName[index1,...indexN],cacheName2,cacheName3[index1] --group-names groupName1,groupName2,...groupNameN
                                                          

                                                          参数:

                                                          参数

                                                          参数 描述
                                                          --node-ids 要重建索引的节点列表,如果未指定,会在所有节点上执行
                                                          --all-nodes 在所有节点执行
                                                          --cache-names 逗号分隔的缓存名列表,可以指定索引名,如果索引名未指定,则会重建所有的索引,可以与缓存组名同时使用
                                                          --group-names 逗号分隔的缓存组名列表,可以与缓存名同时使用

                                                          # 2.SQLLine

                                                          # 2.1.概述

                                                          Ignite提供了一个SQLLine工具,它是一个接入关系数据库然后执行SQL命令的基于命令行的工具,本章节会描述如何用SQLLine接入Ignite集群,以及Ignite支持的各种SQLLine命令。

                                                          # 2.2.接入集群

                                                          IGNITE_HOME/bin目录中,执行sqlline.sh -u jdbc:ignite:thin:[host]命令就可以使用SQLLine接入集群,注意要将[host]替换为实际的值,比如:

                                                            输入./sqlline.sh -h或者./sqlline.sh --help可以看到可用的各种选项。

                                                            # 2.2.1.认证

                                                            如果集群打开了认证,那么在IGNITE_HOME/bin目录中,通过运行jdbc:ignite:thin://[address]:[port];user=[username];password=[password]命令SQLLine才可以接入集群。注意要将[address][port][username]和`[password]替换为实际值,比如:

                                                              如果未开启认证,需要忽略[username][password]

                                                              通过bash接入时JDBC URL要加引号

                                                              当在bash环境中接入时连接的URL一定要加" ",比如:"jdbc:ignite:thin://[address]:[port];user=[username];password=[password]"

                                                              # 2.3.命令

                                                              下面是Ignite支持的SQLLine命令列表:

                                                              命令 描述
                                                              !all 在当前的所有连接中执行指定的SQL
                                                              !batch 开始执行一批SQL语句
                                                              !brief 启动简易输出模式
                                                              !closeall 关闭所有目前已打开的连接
                                                              !columns 显示表中的列
                                                              !connect 接入数据库
                                                              !dbinfo 列出当前连接的元数据信息
                                                              !dropall 删除数据库中的所有表
                                                              !go 转换到另一个活动连接
                                                              !help 显示帮助信息
                                                              !history 显示命令历史
                                                              !indexes 显示表的索引
                                                              !list 显示所有的活动连接
                                                              !manual 显示SQLLine手册
                                                              !metadata 调用任意的元数据命令
                                                              !nickname 为连接命名(更新命令提示)
                                                              !outputformat 改变显示SQL结果的方法
                                                              !primarykeys 显示表的主键列
                                                              !properties 使用指定的属性文件接入数据库
                                                              !quit 退出SQLLine
                                                              !reconnect 重新连接当前的数据库
                                                              !record 开始记录SQL命令的所有输出
                                                              !run 执行一个命令脚本
                                                              !script 将已执行的命令保存到一个文件
                                                              !sql 在数据库上执行一个SQL
                                                              !tables 列出数据库中的所有表
                                                              !verbose 启动详细输出模式

                                                              上面的列表可能不完整,还可能添加支持其它的SQLLine命令。

                                                              # 2.4.示例

                                                              接入集群后,就可以执行SQL语句和SQLLine命令,比如:

                                                                # 3.Tableau

                                                                # 3.1.概述

                                                                Tableau是一个聚焦于商务智能领域的交互式数据可视化工具。它使用ODBC API接入各种数据库和数据平台,然后分析里面的数据。

                                                                Ignite有自己的ODBC实现,这样就使从Tableau端接入Ignite成为可能,并且可以分析存储于分布式Ignite集群中的数据。

                                                                # 3.2.安装和配置

                                                                要从Tableau接入Ignite,需要进行如下操作:

                                                                • 下载并且安转Tableau桌面版,可以在其产品主页查看官方文档;
                                                                • 在Windows或者基于Unix的操作系统上安装Ignite的ODBC驱动;
                                                                • 最后,通过DSN配置驱动,Tableau会通过DSN配置接入;
                                                                • ODBC驱动通过一个叫做ODBC processor的协议与Ignite集群通信,一定要确保这个组件在集群端已经启用。

                                                                上述步骤完成后,就可以接入集群然后分析数据了。

                                                                # 3.3.接入集群

                                                                1. 启动Tableau应用,然后在ConnectTo a ServerMore...窗口中找到Other Databases (ODBC)配置;
                                                                2. 点击Edit connection链接;
                                                                3. 配置之前设定的DSN属性值,下面的示例中为:LocalApacheIgniteDSN,做完之后,点击Connect按钮;
                                                                4. Tableau会试图验证这个连接,如果验证通过,Sign In按钮以及其它的与连接有关的字段就会变为可用状态,点击Sign In就会完成连接过程;

                                                                # 3.4.数据查询和分析

                                                                成功建立Ignite和Tableau之间的连接之后,就可以通过Tableau支持的各种方式对数据进行查询和分析,通过官方文档可以了解更多的细节。

                                                                # 4.Informatica

                                                                # 4.1.概述

                                                                Informatica是一个云数据管理和集成工具,可以通过ODBC连接将Informatica接入Ignite。

                                                                # 4.2.从Informatica PowerCenter Designer接入

                                                                在PowerCenter Designer中,必须安装32位的Ignite ODBC驱动才能接入Ignite,可以按照下面链接的内容安装ODBC驱动并且创建DSN:

                                                                然后:

                                                                1. 如果要从Ignite中导入表,在Sources或者Targets菜单中选择Import from Database...
                                                                2. 通过选择Apache Ignite DSN作为ODBC数据源接入集群。

                                                                # 4.3.在Informatica服务节点上安装Ignite ODBC

                                                                在Linux上构建在Linux上安装文档中,描述了如何在Ignite服务端节点上安装Ignite ODBC。

                                                                Informatica会使用$ODBCINI$ODBCISTINI环境变量指定的配置文件(为ODBC配置UNIX环境变量)。配置Ignite ODBC驱动和创建新的DSN,如下所示:

                                                                  要验证ODBC连接,可以使用Informatica的ssgodbc.linux64工具,如下所示:

                                                                  <INFORMATICA_HOME>/tools/debugtools/ssgodbc/linux64/ssgodbc.linux64 -d ApacheIgnite -u ignite -p ignite -v
                                                                  

                                                                  如果unixODBC或者Ignite的ODBC库没有安装在默认的目录中-/usr/local/lib,则需要将其加入LD_LIBRARY_PATH然后再次测试,如下:

                                                                  UNIXODBC_LIB=/opt/unixodbc/lib/
                                                                  IGNITE_ODBC_LIB=/opt/igniteodbc/lib
                                                                  LD_LIBRARY_PATH=<UNIXODBC_LIB>:<IGNITE_ODBC_LIB>
                                                                  
                                                                  <INFORMATICA_HOME>/tools/debugtools/ssgodbc/linux64/ssgodbc.linux64 -d ApacheIgnite -u ignite -p ignite -v
                                                                  

                                                                  # 4.4.配置相关的连接

                                                                  选择Connections>Relational...可以显示Relational Connection Browser

                                                                  选中ODBC类型然后创建一个新的连接。

                                                                  # 4.5.在Suse 11.4中安装Ignite ODBC

                                                                  下面是在Suse 11.4环境中构建Ignite和Ignite ODBC驱动的步骤。

                                                                  1. 添加仓库 - ossnon-ossopenSUSE_Factorydevel_gcc
                                                                  sudo zypper ar http://download.opensuse.org/distribution/11.4/repo/oss/ oss
                                                                  sudo zypper ar http://download.opensuse.org/distribution/11.4/repo/non-oss/ non-oss
                                                                  sudo zypper ar https://download.opensuse.org/repositories/devel:/tools:/building/openSUSE_Factory/ openSUSE_Factory
                                                                  sudo zypper ar http://download.opensuse.org/repositories/devel:/gcc/SLE-11/  devel_gcc
                                                                  
                                                                  1. 安装automakeautoconf
                                                                  sudo zypper install autoconf automake
                                                                  
                                                                  1. 安装libtool
                                                                  sudo zypper install libtool-2.4.6-7.1.x86_64
                                                                  
                                                                  Loading repository data...
                                                                  Reading installed packages...
                                                                  Resolving package dependencies...
                                                                  
                                                                  Problem: nothing provides m4 >= 1.4.16 needed by libtool-2.4.6-7.1.x86_64
                                                                   Solution 1: do not install libtool-2.4.6-7.1.x86_64
                                                                   Solution 2: break libtool-2.4.6-7.1.x86_64 by ignoring some of its dependencies
                                                                  
                                                                  Choose from above solutions by number or cancel [1/2/c] (c): 2
                                                                  
                                                                  1. 安装OpenSSL
                                                                  sudo zypper install openssl openssl-devel
                                                                  
                                                                  Loading repository data...
                                                                  Reading installed packages...
                                                                  'openssl-devel' not found in package names. Trying capabilities.
                                                                  Resolving package dependencies...
                                                                  
                                                                  Problem: libopenssl-devel-1.0.0c-17.1.x86_64 requires zlib-devel, but this requirement cannot be provided
                                                                    uninstallable providers: zlib-devel-1.2.5-8.1.i586[oss]
                                                                                     zlib-devel-1.2.5-8.1.x86_64[oss]
                                                                   Solution 1: downgrade of zlib-1.2.7-0.12.3.x86_64 to zlib-1.2.5-8.1.x86_64
                                                                   Solution 2: do not ask to install a solvable providing openssl-devel
                                                                   Solution 3: do not ask to install a solvable providing openssl-devel
                                                                   Solution 4: break libopenssl-devel-1.0.0c-17.1.x86_64 by ignoring some of its dependencies
                                                                  
                                                                  Choose from above solutions by number or cancel [1/2/3/4/c] (c): 1
                                                                  
                                                                  1. 安装GCC编译器:
                                                                  sudo zypper install gcc5 gcc5-c++
                                                                  
                                                                  Loading repository data...
                                                                  Reading installed packages...
                                                                  Resolving package dependencies...
                                                                  2 Problems:
                                                                  Problem: gcc5-5.5.0+r253576-1.1.x86_64 requires libgcc_s1 >= 5.5.0+r253576-1.1, but this requirement cannot be provided
                                                                  Problem: gcc5-c++-5.5.0+r253576-1.1.x86_64 requires gcc5 = 5.5.0+r253576-1.1, but this requirement cannot be provided
                                                                  
                                                                  Problem: gcc5-5.5.0+r253576-1.1.x86_64 requires libgcc_s1 >= 5.5.0+r253576-1.1, but this requirement cannot be provided
                                                                    uninstallable providers: libgcc_s1-5.5.0+r253576-1.1.i586[devel_gcc]
                                                                                     libgcc_s1-5.5.0+r253576-1.1.x86_64[devel_gcc]
                                                                                     libgcc_s1-6.4.1+r251631-80.1.i586[devel_gcc]
                                                                                     libgcc_s1-6.4.1+r251631-80.1.x86_64[devel_gcc]
                                                                                     libgcc_s1-7.3.1+r258812-103.1.i586[devel_gcc]
                                                                                     libgcc_s1-7.3.1+r258812-103.1.x86_64[devel_gcc]
                                                                                     libgcc_s1-8.1.1+r260570-32.1.i586[devel_gcc]
                                                                                     libgcc_s1-8.1.1+r260570-32.1.x86_64[devel_gcc]
                                                                   Solution 1: install libgcc_s1-8.1.1+r260570-32.1.x86_64 (with vendor change)
                                                                    SUSE LINUX Products GmbH, Nuernberg, Germany  -->  obs://build.opensuse.org/devel:gcc
                                                                   Solution 2: do not install gcc5-5.5.0+r253576-1.1.x86_64
                                                                   Solution 3: do not install gcc5-5.5.0+r253576-1.1.x86_64
                                                                   Solution 4: break gcc5-5.5.0+r253576-1.1.x86_64 by ignoring some of its dependencies
                                                                  
                                                                  Choose from above solutions by number or skip, retry or cancel [1/2/3/4/s/r/c] (c): 1
                                                                  
                                                                  Problem: gcc5-c++-5.5.0+r253576-1.1.x86_64 requires gcc5 = 5.5.0+r253576-1.1, but this requirement cannot be provided
                                                                    uninstallable providers: gcc5-5.5.0+r253576-1.1.i586[devel_gcc]
                                                                                     gcc5-5.5.0+r253576-1.1.x86_64[devel_gcc]
                                                                   Solution 1: install libgomp1-8.1.1+r260570-32.1.x86_64 (with vendor change)
                                                                    SUSE LINUX Products GmbH, Nuernberg, Germany  -->  obs://build.opensuse.org/devel:gcc
                                                                   Solution 2: do not install gcc5-c++-5.5.0+r253576-1.1.x86_64
                                                                   Solution 3: do not install gcc5-c++-5.5.0+r253576-1.1.x86_64
                                                                   Solution 4: break gcc5-c++-5.5.0+r253576-1.1.x86_64 by ignoring some of its dependencies
                                                                  
                                                                  Choose from above solutions by number or skip, retry or cancel [1/2/3/4/s/r/c] (c): 1
                                                                  Resolving dependencies...
                                                                  Resolving package dependencies...
                                                                  
                                                                  Problem: gcc5-c++-5.5.0+r253576-1.1.x86_64 requires libstdc++6-devel-gcc5 = 5.5.0+r253576-1.1, but this requirement cannot be provided
                                                                    uninstallable providers: libstdc++6-devel-gcc5-5.5.0+r253576-1.1.i586[devel_gcc]
                                                                                     libstdc++6-devel-gcc5-5.5.0+r253576-1.1.x86_64[devel_gcc]
                                                                   Solution 1: install libstdc++6-8.1.1+r260570-32.1.x86_64 (with vendor change)
                                                                    SUSE LINUX Products GmbH, Nuernberg, Germany  -->  obs://build.opensuse.org/devel:gcc
                                                                   Solution 2: do not install gcc5-c++-5.5.0+r253576-1.1.x86_64
                                                                   Solution 3: do not install gcc5-c++-5.5.0+r253576-1.1.x86_64
                                                                   Solution 4: break gcc5-c++-5.5.0+r253576-1.1.x86_64 by ignoring some of its dependencies
                                                                  
                                                                  Choose from above solutions by number or cancel [1/2/3/4/c] (c): 1
                                                                  
                                                                  1. 创建编译器执行文件的符号链接:
                                                                  sudo rm /usr/bin/gcc
                                                                  sudo rm /usr/bin/g++
                                                                  
                                                                  sudo ln -s /usr/bin/g++-5 /usr/bin/g++
                                                                  sudo ln -s /usr/bin/gcc-5 /usr/bin/gcc
                                                                  
                                                                  1. 通过源码安装unixODBC:从http://www.unixodbc.org/下载并安装最新的unixODBC(2.3.6或更新的版本);
                                                                  2. 检查指定版本的所有依赖库和工具都已经成功安装:
                                                                  1. libtool --version
                                                                  libtool (GNU libtool) 2.4.6
                                                                  2. m4 --version
                                                                  m4 (GNU M4) 1.4.12
                                                                  3. autoconf --version
                                                                  autoconf (GNU Autoconf) 2.69
                                                                  4. automake --version
                                                                  automake (GNU automake) 1.16.1
                                                                  5. openssl version
                                                                  OpenSSL 1.0.0c 2 Dec 2010
                                                                  6. g++ --version
                                                                  g++ (SUSE Linux) 5.5.0 20171010 [gcc-5-branch revision 253640]
                                                                  7. JDK 1.8
                                                                  
                                                                  1. 检查JAVA_HOME环境变量是否配置,然后执行下面的命令:
                                                                  cd $IGNITE_HOME/platforms/cpp
                                                                  export LDFLAGS=-lrt
                                                                  
                                                                  libtoolize && aclocal && autoheader && automake --add-missing && autoreconf
                                                                  ./configure --enable-odbc
                                                                  make
                                                                  sudo make install
                                                                  
                                                                  1. 成功之后,重启系统;
                                                                  2. 安装ODBC驱动:
                                                                  sudo odbcinst -i -d -f $IGNITE_HOME/platforms/cpp/odbc/install/ignite-odbc-install.ini
                                                                  

                                                                  # 5.Pentaho

                                                                  # 5.1.概述

                                                                  Pentaho是一个全面的平台,它可以非常容易地对数据进行抽取、转换、可视化和分析。Pentaho数据集成采用Java数据库连接(JDBC)API接入数据库。

                                                                  Ignite有自己的JDBC驱动,这样就使得通过Pentaho平台接入Ignite成为可能,然后就可以分析分布式Ignite集群中的数据了。

                                                                  # 5.2.安装和配置

                                                                  • 下载并安装Pentaho平台,具体可以参考官方的Pentaho文档;
                                                                  • 安装完成之后,需要使用相关的工具安装Ignite的JDBC驱动,怎么做呢,下载Ignite然后找到{apache-ignite}/libs/ignite-core-{version}.jar,然后将其复制到{pentaho}/jdbc-distribution目录;
                                                                  • 打开一个命令行工具,切换到{pentaho}/jdbc-distribution目录然后执行脚本:./distribute-files.sh ignite-core-{version}.jar

                                                                  # 5.3.JDBC驱动配置

                                                                  下一步是配置JDBC驱动然后接入集群,下面做的都是必要的,JDBC Thin模式驱动有更多的细节信息。

                                                                  • 打开命令行工具,切换到{pentaho}/design-tools/data-integration目录,然后使用./spoon.sh脚本启动Pentaho;
                                                                  • 出现下面的界面之后,点击File菜单然后创建一个新的转换:New->Transformation

                                                                  • 在Pentaho的界面中,填入下面的参数就可以创建一个新的数据库连接:
                                                                  Pentaho属性名
                                                                  Connection Name 比如IgniteConnection这样的自定义名字
                                                                  Connection Type 选择Generic database选项
                                                                  Access 选择Native (JDBC)
                                                                  Custom Connection URL jdbc:ignite:thin://localhost:10800,其中端口和地址可以根据实际进行调整
                                                                  Custom Driver Class Name org.apache.ignite.IgniteJdbcThinDriver
                                                                  • 点击Test按钮,对连接进行测试

                                                                  # 5.4.数据的查询和分析

                                                                  Ignite和Pentaho之间建立连接之后,就可以通过Pentaho支持的各种方式对数据进行查询、转换和分析了,更多的细节,可以查看Pentaho的官方文档。

                                                                  # 6.Index Reader

                                                                  Ignite提供了一个命令行脚本index-reader.sh|bat,可以用它来检查分区文件中的缓存数据树与其索引的一致性,该脚本位于安装目录的/bin/文件夹下。

                                                                  警告

                                                                  该工具执行时,集群不能处于运行状态。

                                                                  # 6.1.运行

                                                                  {IGNITE_HOME}/bin目录中运行index-reader.sh|bat脚本。

                                                                  参数 描述 默认值
                                                                  --dir index.bin索引文件和分区文件(可选)所在的分区目录
                                                                  --part-cnt 缓存组的分区数 0
                                                                  --page-size 页面大小(字节) 4096
                                                                  --page-store-ver 页面存储版本 2
                                                                  --indexes 可以指定要处理的索引树名,逗号分割不能有空格,然后其他的索引树会被忽略 []
                                                                  --check-parts 检查分区文件内的缓存数据树及其与索引的一致性 false

                                                                  # 6.2.使用

                                                                  ./index-reader.sh|bat --dir [--part-cnt] [--page-size] [--page-store-ver] [--indexes] [--check-parts]
                                                                  

                                                                  18624049226

                                                                  最后更新时间:: 11/25/2023, 3:51:28 PM