diff --git a/.gitignore b/.gitignore index 5b33192f8c9..50dfdfb69e5 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ linklint/ .java-version *.log **/*.log +tmp diff --git a/conf/hbase-site.xml b/conf/hbase-site.xml index c516ac72911..48b78ec72d0 100644 --- a/conf/hbase-site.xml +++ b/conf/hbase-site.xml @@ -1,8 +1,7 @@ + + + hbase.cluster.distributed + false + + + hbase.tmp.dir + ${env.HBASE_HOME:-.}/tmp + + + hbase.unsafe.stream.capability.enforce + false + diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/CommonFSUtils.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/CommonFSUtils.java index 29b3e143f78..f6ff8fa620b 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/CommonFSUtils.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/CommonFSUtils.java @@ -1,4 +1,4 @@ -/** +/* * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -349,7 +349,7 @@ public final class CommonFSUtils { public static FileSystem getWALFileSystem(final Configuration c) throws IOException { Path p = getWALRootDir(c); FileSystem fs = p.getFileSystem(c); - // hadoop-core does fs caching, so need to propogate this if set + // hadoop-core does fs caching, so need to propagate this if set String enforceStreamCapability = c.get(UNSAFE_STREAM_CAPABILITY_ENFORCE); if (enforceStreamCapability != null) { fs.getConf().set(UNSAFE_STREAM_CAPABILITY_ENFORCE, enforceStreamCapability); diff --git a/src/main/asciidoc/_chapters/getting_started.adoc b/src/main/asciidoc/_chapters/getting_started.adoc index e12b7a2fabf..9e4aa8c069b 100644 --- a/src/main/asciidoc/_chapters/getting_started.adoc +++ b/src/main/asciidoc/_chapters/getting_started.adoc @@ -77,76 +77,12 @@ $ cd hbase-{Version}/ # The java implementation to use. export JAVA_HOME=/usr/jdk64/jdk1.8.0_112 + - -. Edit _conf/hbase-site.xml_, which is the main HBase configuration file. - At this time, you need to specify the directory on the local filesystem where HBase and ZooKeeper write data and acknowledge some risks. - By default, a new directory is created under /tmp. - Many servers are configured to delete the contents of _/tmp_ upon reboot, so you should store the data elsewhere. - The following configuration will store HBase's data in the _hbase_ directory, in the home directory of the user called `testuser`. - Paste the `` tags beneath the `` tags, which should be empty in a new HBase install. -+ -.Example _hbase-site.xml_ for Standalone HBase -==== -[source,xml] ----- - - - - hbase.rootdir - file:///home/testuser/hbase - - - hbase.zookeeper.property.dataDir - /home/testuser/zookeeper - - - hbase.unsafe.stream.capability.enforce - false - - Controls whether HBase will check for stream capabilities (hflush/hsync). - - Disable this if you intend to run on LocalFileSystem, denoted by a rootdir - with the 'file://' scheme, but be mindful of the NOTE below. - - WARNING: Setting this to false blinds you to potential data loss and - inconsistent system state in the event of process and/or node failures. If - HBase is complaining of an inability to use hsync or hflush it's most - likely not a false positive. - - - ----- -==== -+ -You do not need to create the HBase data directory. -HBase will do this for you. If you create the directory, -HBase will attempt to do a migration, which is not what you want. -+ -NOTE: The _hbase.rootdir_ in the above example points to a directory -in the _local filesystem_. The 'file://' prefix is how we denote local -filesystem. You should take the WARNING present in the configuration example -to heart. In standalone mode HBase makes use of the local filesystem abstraction -from the Apache Hadoop project. That abstraction doesn't provide the durability -promises that HBase needs to operate safely. This is fine for local development -and testing use cases where the cost of cluster failure is well contained. It is -not appropriate for production deployments; eventually you will lose data. - -To home HBase on an existing instance of HDFS, set the _hbase.rootdir_ to point at a -directory up on your instance: e.g. _hdfs://namenode.example.org:8020/hbase_. -For more on this variant, see the section below on Standalone HBase over HDFS. - . The _bin/start-hbase.sh_ script is provided as a convenient way to start HBase. Issue the command, and if all goes well, a message is logged to standard output showing that HBase started successfully. You can use the `jps` command to verify that you have one running process called `HMaster`. In standalone mode HBase runs all daemons within this single JVM, i.e. the HMaster, a single HRegionServer, and the ZooKeeper daemon. Go to _http://localhost:16010_ to view the HBase Web UI. -+ -NOTE: Java needs to be installed and available. -If you get an error indicating that Java is not installed, -but it is on your system, perhaps in a non-standard location, -edit the _conf/hbase-env.sh_ file and modify the `JAVA_HOME` -setting to point to the directory that contains _bin/java_ on your system. [[shell_exercises]] @@ -306,7 +242,7 @@ The above has shown you how to start and stop a standalone instance of HBase. In the next sections we give a quick overview of other modes of hbase deploy. [[quickstart_pseudo]] -=== Pseudo-Distributed Local Install +=== Pseudo-Distributed for Local Testing After working your way through <> standalone mode, you can re-configure HBase to run in pseudo-distributed mode. @@ -348,8 +284,8 @@ First, add the following property which directs HBase to run in distributed mode ---- + -Next, change the `hbase.rootdir` from the local filesystem to the address of your HDFS instance, using the `hdfs:////` URI syntax. -In this example, HDFS is running on the localhost at port 8020. Be sure to either remove the entry for `hbase.unsafe.stream.capability.enforce` or set it to true. +Next, add a configuration for `hbase.rootdir`, pointing to the address of your HDFS instance, using the `hdfs:////` URI syntax. +In this example, HDFS is running on the localhost at port 8020. + [source,xml] ---- @@ -361,8 +297,9 @@ In this example, HDFS is running on the localhost at port 8020. Be sure to eithe ---- + You do not need to create the directory in HDFS. -HBase will do this for you. -If you create the directory, HBase will attempt to do a migration, which is not what you want. +HBase will do this for you. If you create the directory, HBase will attempt to do a migration, which is not what you want. ++ +Finally, remove existing configuration for `hbase.tmp.dir` and `hbase.unsafe.stream.capability.enforce`, . Start HBase. + @@ -449,7 +386,7 @@ You can stop HBase the same way as in the <> procedure, u [[quickstart_fully_distributed]] -=== Advanced - Fully Distributed +=== Fully Distributed for Production In reality, you need a fully-distributed configuration to fully test HBase and to use it in real-world scenarios. In a distributed configuration, the cluster contains multiple nodes, each of which runs one or more HBase daemon.