accumulo summit 2015: zookeeper, accumulo, and you [internals]
TRANSCRIPT
ACCUMULO CLUSTER
Worker
Hadoop
DataNode
Accumulo
Tserver
Worker
Hadoop
DataNode
Accumulo
Tserver
Accumulo
Master
Zookeeper
Cluster
Hadoop
NameNod
e
WHAT'S ZOOKEEPER GOOD AT?
Small amounts of data
Consistent across cluster
Fast reads
(in memory)
Total order of operations
Zab
ZOOKEEPER CLIENTS
Zookeeper Node
Zookeeper
Client
2181/tcp
Random long client ID and random password
Keep alive ping
ACCUMULO DATA IN ZOOKEEPER
/
accumulo
cf7c5ecd-0c3c-4d5c-aed2-36d9ca076976
user
monitor
root_tablet
gc table_locks hdfs_reservationsnamespaces recoveryfate
tservers tables
next_filetracers
config
dead bulk_failed_copyqmasters
instances
tservers
zlock-0000000000
server1.companyco.com:9997
TSERVERS
zlock-0000000000
server2.compnyco.com:9997
users
root
ZOOKEEPER ACLS
mallen jvines afuchs
'digest,'accumulo:SkvnZlrIQ19GNd7eLDXGKg0Esgw=: cdrwa
ZK-DIGEST.SH#!/bin/bash
if [ -z ${ZOOKEEPER_HOME} ]; then
echo "Set \$ZOOKEEPER_HOME before running this script"
exit 4747
fi
if [ -z ${JAVA_HOME} ]; then
echo "Set \$JAVA_HOME before running this script"
exit 4747
fi
if [ $# -eq 0 ]; then
echo "usage: zk-digest.sh <digest string>"
echo ""
echo " Utility to produce authentication digests, such as you might see in ZooKeeper node ACL entries"
echo ""
echo " Example: zk-digest.sh sqrrl:secret"
exit 4747
fi
ZK_CLASSPATH="\
${ZOOKEEPER_HOME}/build/classes:\
${ZOOKEEPER_HOME}/build/lib/*.jar:\
${ZOOKEEPER_HOME}/lib/slf4j-log4j12-1.6.1.jar:\
${ZOOKEEPER_HOME}/lib/slf4j-api-1.6.1.jar:\
${ZOOKEEPER_HOME}/lib/netty-3.2.2.Final.jar:\
${ZOOKEEPER_HOME}/lib/log4j-1.2.15.jar:\
${ZOOKEEPER_HOME}/lib/jline-0.9.94.jar:\
${ZOOKEEPER_HOME}/zookeeper-3.4.5.jar:\
${ZOOKEEPER_HOME}/src/java/lib/*.jar:\
${ZOOKEEPER_HOME}/conf\
"
${JAVA_HOME}/bin/java -Dzookeeper.log.dir="." \
-Dzookeeper.root.logger="INFO,CONSOLE" \
-cp "${ZK_CLASSPATH}" \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.local.only=false \
org.apache.zookeeper.server.auth.DigestAuthenticationProvider $*
ROOTING YOUR ZOOKEEPER
1. Create an identityzk-digest.sh super:secretsuper:secret->super:lK75jTNcA+U9vtVEw5vB51mj/w4=
ROOTING YOUR ZOOKEEPER
1. Create an identity
2. Edit zk-server.shnohup $JAVA "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \-cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &
ROOTING YOUR ZOOKEEPER
1. Create an identity
2. Edit zk-server.shnohup $JAVA "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
"-Dzookeeper.DigestAuthenticationProvider.superDigest=super:lK75jTNcA+U9vtVEw5vB51mj/w4= \"-cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &