You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Mahadev konar (JIRA)" <ji...@apache.org> on 2012/08/30 07:08:07 UTC

[jira] [Updated] (ZOOKEEPER-1218) zktreeutil tool enhancement

     [ https://issues.apache.org/jira/browse/ZOOKEEPER-1218?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mahadev konar updated ZOOKEEPER-1218:
-------------------------------------

    Fix Version/s:     (was: 3.4.0)
                   3.5.0
    
> zktreeutil tool enhancement
> ---------------------------
>
>                 Key: ZOOKEEPER-1218
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1218
>             Project: ZooKeeper
>          Issue Type: Improvement
>          Components: contrib
>    Affects Versions: 3.4.0
>         Environment: GNU/Linux i386/i686/x64_84
>            Reporter: Anirban Roy
>            Assignee: Anirban Roy
>              Labels: patch
>             Fix For: 3.5.0
>
>         Attachments: zktreeutil.patch
>
>   Original Estimate: 168h
>          Time Spent: 168h
>  Remaining Estimate: 0h
>
> ============================================
> zktreeutil - Zookeeper Tree Data Utility
> Author: Anirban Roy (r_anirban at yahoo.com)
> Organization: Yahoo Inc.
> ============================================
> zktreeutil program is intended to manage and manipulate zk-tree data quickly,
> efficiently and with ease. The utility operates on free-form ZK-tree and hence
> can be used for any cluster managed by Zookeeper. Here are the basic
> functionalities -
> EXPORT: The whole/partial ZK-tree is exported into a XML file. This helps in
> capturing a current snapshot of the data for backup/analysis. For a subtree
> export, one need to specify the path to the ZK-subtree with proper option.
> Since Zookeeper store binary data against znode, the data dumped on xml file
> is based64 encoded with an attribute "encode=true". Optionally one may specify
> not to encode data with --noencode option if data stored on zookeeper is
> guaranteed to be text data.
> IMPORT: The ZK (sub)tree can be imported from XML into ZK cluster. This helps in
> priming the new ZK cluster with static configuration. The import can be
> non-intrusive by making only additions and modifications in the existing data.
> One may optionally delete existing (sub)tree before importing the new data
> with --force option. The znodes which carries an attribute "encode=true" will be
> decoded and written to zookeeper.
> DIFF: Creates a diff between live ZK data vs data saved in XML file. Diff can
> ignore some ZK-tree branches (possibly dynamic data) on reading the optional
> ignore flag from XML file. Taking diff on a ZK-subtree achieved by providing
> path to ZK-subtree with diff command.
> UPDATE: Make the incremental changes into the live ZK-tree from saved XML,
> essentially after running the diff.
> DUMP: Dumps the ZK (sub)tree on the standard output device reading either from
> live ZK server or XML file.
> The exported ZK data into XML file can be shortened by only keeping the static
> ZK nodes which are required to prime an application. The dynamic zk nodes
> (created on-the-fly) can be ignored by setting a 'ignore' attribute at the root
> node of the dynamic subtree (see tests/zk_sample.xml), possibly deleting all
> inner ZK nodes under that.  Once ignored, the whole subtree is ignored during
> DIFF, UPDATE and WRITE.
> Pre-requisites
> --------------
> 1. Linux system with 2.6.X kernel.
> 2. Zookeeper C client library (locally built at ../../c/.libs) >= 3.X.X
> 3. Development build libraries (rpm packages):
>   a. boost-devel >= 1.32.0
>   b. libxml2-devel >= 2.6.26
>   c. log4cxx-devel >= 0.9.7-7
>   d. openssl-devel >= 0.9.7a
>   e. cppunit >= 1.12.0-2
> Build instructions
> ------------------
> 1. cd into this directory
> 2. autoreconf -if
> 3. ./configure              # Configure the build env
> 4. make                     # Build the tool
> 5. make check               # Run unit-tests
> 6. ./src/zktreeutil --help  # Usage help
> Testing  and usage of zktreeutil
> --------------------------------
> 1.  Run Zookeeper server locally on port 2181
> 2.  export LD_LIBRARY_PATH=../../c/.libs/:/usr/local/lib/
> 3.  ./src/zktreeutil --help                                                                                         # show help
> 4.  ./src/zktreeutil --zookeeper=localhost:2181 --import --xmlfile=tests/zkdata_test.xml 2>/dev/null                # import sample ZK tree
> 5.  ./src/zktreeutil --zookeeper=localhost:2181 --dump --path=/myapp/version-1.0 2>/dev/null                        # dump Zk subtree 
> 5.  ./src/zktreeutil --zookeeper=localhost:2181 --dump --depth=3 2>/dev/null                                        # dump Zk tree till certain depth
> 6.  ./src/zktreeutil --xmlfile=zkdata_test.xml -D 2>/dev/null                                                       # dump the xml data
> 7.  Change zkdata_test.xml with adding/deleting/chaging some nodes 
> 8.  ./src/zktreeutil -z localhost:2181 -F -x zkdata_test.xml -p /myapp/version-1.0/configuration 2>/dev/null        # take a diff of changes
> 9.  ./src/zktreeutil -z localhost:2181 -E --noencode 2>/dev/null > zk_sample2.xml                                   # export the mofied ZK tree
> 10. ./src/zktreeutil -z localhost:2181 -U -x zkdata_test.xml -p /myapp/version-1.0/distributions 2>/dev/null        # update with incr. changes
> 11. ./src/zktreeutil --zookeeper=localhost:2181 --import --force --xmlfile=zk_sample2.xml 2>/dev/null               # re-prime the ZK tree
> For more details of usage, please see the unit tests. Hope this helps. Please
> reach out to me for any bugs, comments or suggestions.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira