A prototype for a Bento cluster (self contained HDFS/YARN/HBase/Cassandra environment). Runs CDH 5 and Cassandra 2 in pseudo-distributed mode.
The Bento Cluster can be installed using pip:
pip3 install kiji-bento-cluster
To upgrade your installation:
pip3 install --upgrade kiji-bento-cluster
The Bento Cluster is controlled from the bento script. bento help will show a listing of
all available bento options.
In this section strings in code blocks situated in between angle braces (<, >) represent fields
to be filled in by the user.
Many of the commands below make usage of the --bento-name= flag. If it is not specified, the name
'bento' is used.
Run the bento pull command to fetch the latest bento docker image from dockerhub. Note: this
operation may pause for a long period of time without any output.
If a specific platform version is desired, specify it with the --platform-version= flag:
bento pull --platform-version=cdh5.1.2
Run the bento create command to create a new bento instance. A name can be specified with the
--bento-name= flag:
bento --bento-name=<my_very_own_bento> create
This command can be validated by running the bento list command with the --all option (displays
running bento instances as well as ones that aren't running):
bento list --all
Run the bento start command to start a created bento instance. Data already existing within bento
instances being started is preserved. To start a specific bento instance use the --bento-name=
flag:
bento --bento-name=<my_very_own_bento> start
This command will block until hdfs has been initialized. The list of running bento instances can be printed by running:
bento list
The status of a particular bento instance can also be printed by running:
bento --bento-name=<my_very_own_bento> status
Bento cluster uses supervisor to bring up and watch its various services. The status of each service
can be observed by accessing the supervisor web UI available at: http://<my_very_own_bento>:9001/.
After starting a bento instance hadoop/hbase client configuration files will be written to:
~/.bento/<bento-instance-name>/hadoop/
~/.bento/<bento-instance-name>/hbase/
To use a particular bento instance source its 'bento-env.sh' script in:
~/.bento/<bento-instance-name>/bento-env.sh
Run the bento stop command to stop running processes of a bento (not delete its state/data). To
stop a specific bento instance use the --bento-name= flag:
bento --bento-name=<my_very_own_bento> stop
This command will wait until the bento container has stopped.
Run the bento rm command to delete a bento instance. To delete a specific bento instance use the
--bento-name= flag:
bento --bento-name=<my_very_own_bento> rm
Bento may ask for sudo permissions when creating or starting a container by default. This is
necessary to update /etc/hosts with an entry for the container. This can be handled in several
different ways:
-
Skip adding a dns entry for the bento instance by using the
--skip-hosts-edit(-e) flag withbento createorbento start. -
Add a sudoers rule allowing members of the
bentogroup to run theupdate-etc-hostsscript as root without providing a sudo password:bento setup-sudoersThis will also copy the
update-etc-hostsscript to/usr/local/bin/. Note for Mac users: the/etc/sudoers.ddirectory is not included by default but can be enabled by adding the#includedir /etc/sudoers.ddirective in/etc/sudoers.
Note that HBase and some Hadoop functionality will not work if the container's hostname can not be resolved.
See bento-maven-plugin.
Requires:
Requires:
-
A network route to the bento box:
sudo route add $(bento ip)/16 $(boot2docker ip 2> /dev/null)
If you are using OS X and planning on running any MapReduce jobs, you will likely want to allocate
boot2dockermore than its default 2 GB of RAM. You can find directions for doing so on the github page for theboot2dockerCLI. In short, do the following:- Create a
boot2dockerprofile with the default settings:
boot2docker config > ~/.boot2docker/profile
- Update the line in
~/.boot2docker/profileto increase the amount of memory from 2048 to perhaps
- Sanity check your new settings by running
boot2docker configagain. - Destroy your old
boot2dockerVM and start again:
boot2docker destroy boot2docker init boot2docker up- Validate your new settings:
boot2docker info
- Create a