Apache Accumulo User Manual Version 1.6 February 11, 2015 Contents 1 Introduction 1 2 Accumulo Design 2 2.1 Data Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.2 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.3 Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3.1 Tablet Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3.2 Garbage Collector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3.3 Master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3.4 Tracer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3.5 Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3.6 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.4 Data Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.5 Tablet Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.6 Compactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.7 Splitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.8 Fault-Tolerance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3 Accumulo Shell 8 3.1 Basic Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2 Table Maintenance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.3 User Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4 Writing Accumulo Clients 11 4.1 Running Client Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.2 Connecting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.3 Writing Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.3.1 BatchWriter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.3.2 ConditionalWriter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 i 4.4 Reading Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.4.1 Scanner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.4.2 Isolated Scanner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.4.3 BatchScanner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.5 Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.5.1 Prequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.5.2 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.5.3 Running the Proxy Server . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.5.4 Creating a Proxy Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.5.5 Using a Proxy Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5 Development Clients 18 5.1 Mock Accumulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5.2 Mini Accumulo Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 6 Table Configuration 20 6.1 Locality Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 6.1.1 Managing Locality Groups via the Shell . . . . . . . . . . . . . . . . . . . 20 6.1.2 Managing Locality Groups via the Client API . . . . . . . . . . . . . . . . 21 6.2 Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.3 Bloom Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.4 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.4.1 Setting Iterators via the Shell . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.4.2 Setting Iterators Programmatically . . . . . . . . . . . . . . . . . . . . . . 23 6.4.3 Versioning Iterators and Timestamps . . . . . . . . . . . . . . . . . . . . . 23 6.4.4 Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 6.4.5 Combiners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 6.5 Block Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 6.6 Compaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.7 Pre-splitting tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6.8 Merging tablets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.9 Delete Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 6.10 Cloning Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 6.11 Exporting Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 7 Table Design 32 7.1 Basic Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 7.2 RowID Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 7.3 Lexicoders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 7.4 Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 ii 7.5 Entity-Attribute and Graph Tables . . . . . . . . . . . . . . . . . . . . . . . . . . 35 7.6 Document-Partitioned Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 8 High-Speed Ingest 39 8.1 Pre-Splitting New Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 8.2 Multiple Ingester Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 8.3 Bulk Ingest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 8.4 Logical Time for Bulk Ingest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 8.5 MapReduce Ingest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 9 Analytics 42 9.1 MapReduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 9.1.1 Mapper and Reducer classes . . . . . . . . . . . . . . . . . . . . . . . . . . 42 9.1.2 AccumuloInputFormat options . . . . . . . . . . . . . . . . . . . . . . . . 43 9.1.3 AccumuloMultiTableInputFormat options . . . . . . . . . . . . . . . . . . 44 9.1.4 AccumuloOutputFormat options . . . . . . . . . . . . . . . . . . . . . . . 44 9.2 Combiners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 9.2.1 Feature Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 9.3 Statistical Modeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 10 Security 47 10.1 Security Label Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 10.2 Security Label Expression Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 10.3 Authorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 10.4 User Authorizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 10.5 Pluggable Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 10.6 Secure Authorizations Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 10.7 Query Services Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 11 Implementation Details 51 11.1 Fault-Tolerant Executor (FATE) . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 11.1.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 11.1.2 Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 12 SSL 53 12.1 Server configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 12.2 Client configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 12.3 Generating SSL material using OpenSSL . . . . . . . . . . . . . . . . . . . . . . . 55 12.3.1 Generate a certificate authority . . . . . . . . . . . . . . . . . . . . . . . . 55 12.3.2 Generate a certificate/keystore per host . . . . . . . . . . . . . . . . . . . 55 iii 13 Administration 57 13.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 13.2 Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 13.3 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 13.4 Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 13.5 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 13.5.1 Edit conf/accumulo-env.sh . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 13.5.2 Native Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 13.5.3 Cluster Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 13.5.4 Accumulo Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 13.5.5 Deploy Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 13.5.6 Sensitive Configuration Values . . . . . . . . . . . . . . . . . . . . . . . . 62 13.5.7 Using a JavaKeyStoreCredentialProvider for storage . . . . . . . . . . . . 62 13.6 Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 13.7 Running . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 13.7.1 Starting Accumulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 13.7.2 Stopping Accumulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 13.7.3 Adding a Node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 13.7.4 Decomissioning a Node. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 13.7.5 Restarting process on a node . . . . . . . . . . . . . . . . . . . . . . . . . 64 13.8 Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 13.9 Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 13.9.1 Tracers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 13.9.2 Instrumenting a Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 13.9.3 Viewing Collected Traces . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 13.9.4 Tracing from the Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 13.10Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 13.11Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 13.12Migrating Accumulo from non-HA Namenode to HA Namenode . . . . . . . . . . 68 14 Multi-Volume Installations 70 15 Troubleshooting 72 15.1 Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 15.2 Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 15.3 HDFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 15.4 Zookeeper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 15.4.1 Keeping the tablet server lock . . . . . . . . . . . . . . . . . . . . . . . . . 74 15.5 Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 15.6 System Metadata Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 iv 15.7 Simple System Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 15.8 Advanced System Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 15.8.1 HDFS Failure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 15.8.2 ZooKeeper Failure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 15.8.3 Upgrade Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 15.9 File Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 A Configuration Management 85 A.1 Configuration Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 A.1.1 Zookeeper table properties . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 A.1.2 Zookeeper system properties . . . . . . . . . . . . . . . . . . . . . . . . . . 85 A.1.3 accumulo-site.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 A.1.4 Default Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 A.2 Configuration in the Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 A.3 Available Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 A.3.1 rpc.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 A.3.2 instance.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 A.3.3 general.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 A.3.4 master.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 A.3.5 tserver.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 A.3.6 logger.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 A.3.7 gc.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 A.3.8 monitor.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 A.3.9 trace.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 A.3.10 trace.token.property.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 A.3.11 table.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 A.3.12 table.constraint.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 A.3.13 table.iterator.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 A.3.14 table.iterator.scan.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 A.3.15 table.iterator.minc.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 A.3.16 table.iterator.majc.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 A.3.17 table.group.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 A.3.18 table.majc.compaction.strategy.opts.* . . . . . . . . . . . . . . . . . . . . 122 A.3.19 general.vfs.context.classpath.* . . . . . . . . . . . . . . . . . . . . . . . . . 122 A.4 Property Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 A.4.1 duration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 A.4.2 date/time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 A.4.3 memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 A.4.4 host list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 A.4.5 port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 v A.4.6 count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 A.4.7 fraction/percentage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 A.4.8 path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 A.4.9 absolute path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 A.4.10 java class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 A.4.11 string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 A.4.12 boolean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 A.4.13 uri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 vi Chapter 1 Introduction Apache Accumulo is a highly scalable structured store based on Google’s BigTable. Accumulo is written in Java and operates over the Hadoop Distributed File System (HDFS), which is part of the popular Apache Hadoop project. Accumulo supports efficient storage and retrieval of structured data, including queries for ranges, and provides support for using Accumulo tables as input and output for MapReduce jobs. Accumulofeaturesautomaticload-balancingandpartitioning,datacompressionandfine-grained security labels. 1 Chapter 2 Accumulo Design 2.1 Data Model Accumulo provides a richer data model than simple key-value stores, but is not a fully relational database. Data is represented as key-value pairs, where the key and value are comprised of the following elements: Key Column Value Row ID Timestamp Family Qualifier Visibility All elements of the Key and the Value are represented as byte arrays except for Timestamp, which is a Long. Accumulo sorts keys by element and lexicographically in ascending order. Timestamps are sorted in descending order so that later versions of the same Key appear first in a sequential scan. Tables consist of a set of sorted key-value pairs. 2.2 Architecture Accumuloisadistributeddatastorageandretrievalsystemandassuchconsistsofseveralarchi- tecturalcomponents,someofwhichrunonmanyindividualservers. MuchoftheworkAccumulo does involves maintaining certain properties of the data, such as organization, availability, and integrity, across many commodity-class machines. 2 2.3 Components An instance of Accumulo includes many TabletServers, one Garbage Collector process, one Master server and many Clients. 2.3.1 Tablet Server The TabletServer manages some subset of all the tablets (partitions of tables). This includes receiving writes from clients, persisting writes to a write-ahead log, sorting new key-value pairs in memory, periodically flushing sorted key-value pairs to new files in HDFS, and responding to reads from clients, forming a merge-sorted view of all keys and values from all the files it has created and the sorted in-memory store. TabletServers also perform recovery of a tablet that was previously on a server that failed, reapplying any writes found in the write-ahead log to the tablet. 2.3.2 Garbage Collector Accumulo processes will share files stored in HDFS. Periodically, the Garbage Collector will identify files that are no longer needed by any process, and delete them. Multiple garbage collectors can be run to provide hot-standby support. They will perform leader election among themselves to choose a single active instance. 2.3.3 Master TheAccumuloMasterisresponsiblefordetectingandrespondingtoTabletServerfailure. Ittries to balance the load across TabletServer by assigning tablets carefully and instructing Tablet- Servers to unload tablets when necessary. The Master ensures all tablets are assigned to one TabletServer each, and handles table creation, alteration, and deletion requests from clients. The Master also coordinates startup, graceful shutdown and recovery of changes in write-ahead logs when Tablet servers fail. Multiple masters may be run. The masters will choose among themselves a single master, and the others will become backups if the master should fail. 3
Description: