/
create-hbase-site
68 lines (58 loc) · 2.48 KB
/
create-hbase-site
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/bash
#
# create-hbase-site
# This will write a correct hbase-site.xml file for you, assuming you have:
# 1. gcloud auth login
# 2. either given --project NAME or gcloud config set project XXXXX
#
# It will also test for the existence of key.json or GOOGLE_APPLICATION_CREDENTIALS
# NOTE - This only works w/ HBase 1.0.1 for now.
# Prequsites: gcloud
_BIGTABLE="alpha"
_PROJECTS="alpha"
if [[ ! -e key.json ]]; then
{ echo "Missing key.json file - please copy the appropriate credentials file as key.json"; exit 1; }
fi
# Test for gcloud
hash gcloud 2>/dev/null || { echo >&2 'gcloud needs to be installed from https://cloud.google.com/sdk/'; exit 1; }
NOTLOGGEDIN=$(gcloud auth list --format text | grep active_account | grep None)
if [[ -n "$NOTLOGGEDIN" ]]; then
echo >&2 'Please login using: gcloud auth login'; exit 1;
fi
if [ "$1" == "--project" ]; then
_projectID=$2
else
# If possible set a default project
_defProj=$(gcloud config list project | grep project)
if [ $? -eq 0 ] && [ -n "${_defProj}" ]; then
_projectID="${_defProj##project = }"
else
_projectID=""
fi
fi
HAVEPROJECT=$(gcloud "${_PROJECTS}" projects list --format text | grep "${_projectID}" | grep projectId 1>/dev/null)
if [ $? -ne 0 ]; then
{ echo "Project ${_projectID} not found."; exit 1; }
fi
HAVECLUSTER=$(gcloud alpha bigtable clusters list --project "${_projectID}" --format yaml | grep "name:" )
if [ $? -eq 0 ]; then
IFS='/' read -ra ADDR <<< "$HAVECLUSTER"
_zone=${ADDR[3]}
_clusterID=${ADDR[5]}
else
{ echo "Project ${_projectID} does not have any Cloud Bigtable clusters created."; exit 1; }
fi
echo "<configuration>" >hbase-site.xml
echo " <property><name>google.bigtable.project.id</name><value>${_projectID}</value></property>" >>hbase-site.xml
echo " <property><name>google.bigtable.cluster.name</name><value>${_clusterID}</value></property>" >>hbase-site.xml
echo " <property><name>google.bigtable.zone.name</name><value>${_zone}</value></property>" >>hbase-site.xml
echo "" >>hbase-site.xml
echo " <property>" >>hbase-site.xml
echo " <name>google.bigtable.endpoint.host</name>" >>hbase-site.xml
echo " <value>bigtable.googleapis.com</value>" >>hbase-site.xml
echo " </property>" >>hbase-site.xml
echo " <property>" >>hbase-site.xml
echo " <name>hbase.client.connection.impl</name>" >>hbase-site.xml
echo " <value>com.google.cloud.bigtable.hbase1_0.BigtableConnection</value>" >>hbase-site.xml
echo " </property>" >>hbase-site.xml
echo "</configuration>" >>hbase-site.xml