Publish commit(s) from site source repo:
  f2bfdd4fb [blog] a blogpost about location awareness in Kudu

Site-Repo-Commit: f2bfdd4fbdab46590487bebaed8f22c88ed17cec
diff --git a/2016/02/26/apache-kudu-0-7-0-released.html b/2016/02/26/apache-kudu-0-7-0-released.html
index 6000a4c..664935f 100644
--- a/2016/02/26/apache-kudu-0-7-0-released.html
+++ b/2016/02/26/apache-kudu-0-7-0-released.html
@@ -149,6 +149,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -177,8 +179,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/03/10/apache-kudu-0-7-1-released.html b/2016/03/10/apache-kudu-0-7-1-released.html
index 30e4ac7..baf7910 100644
--- a/2016/03/10/apache-kudu-0-7-1-released.html
+++ b/2016/03/10/apache-kudu-0-7-1-released.html
@@ -148,6 +148,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -176,8 +178,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/03/20/weekly-update.html b/2016/03/20/weekly-update.html
index b35adaa..a7de593 100644
--- a/2016/03/20/weekly-update.html
+++ b/2016/03/20/weekly-update.html
@@ -208,6 +208,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -236,8 +238,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/03/28/weekly-update.html b/2016/03/28/weekly-update.html
index e60c7dc..b331a58 100644
--- a/2016/03/28/weekly-update.html
+++ b/2016/03/28/weekly-update.html
@@ -199,6 +199,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -227,8 +229,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/04/04/weekly-update.html b/2016/04/04/weekly-update.html
index d68e2a8..c8f76ec 100644
--- a/2016/04/04/weekly-update.html
+++ b/2016/04/04/weekly-update.html
@@ -218,6 +218,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -246,8 +248,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/04/11/weekly-update.html b/2016/04/11/weekly-update.html
index 2c6f7c1..c7bda4f 100644
--- a/2016/04/11/weekly-update.html
+++ b/2016/04/11/weekly-update.html
@@ -218,6 +218,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -246,8 +248,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/04/12/apache-kudu-0-8-0-released.html b/2016/04/12/apache-kudu-0-8-0-released.html
index a9fe068..5aa52d4 100644
--- a/2016/04/12/apache-kudu-0-8-0-released.html
+++ b/2016/04/12/apache-kudu-0-8-0-released.html
@@ -139,6 +139,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -167,8 +169,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/04/14/ingesting-json-apache-kudu-streamsets-data-collector.html b/2016/04/14/ingesting-json-apache-kudu-streamsets-data-collector.html
index 681e96f..798659b 100644
--- a/2016/04/14/ingesting-json-apache-kudu-streamsets-data-collector.html
+++ b/2016/04/14/ingesting-json-apache-kudu-streamsets-data-collector.html
@@ -162,6 +162,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -190,8 +192,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/04/18/weekly-update.html b/2016/04/18/weekly-update.html
index 6831c98..a3a1421 100644
--- a/2016/04/18/weekly-update.html
+++ b/2016/04/18/weekly-update.html
@@ -216,6 +216,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -244,8 +246,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/04/19/kudu-0-8-0-predicate-improvements.html b/2016/04/19/kudu-0-8-0-predicate-improvements.html
index b28c641..babb824 100644
--- a/2016/04/19/kudu-0-8-0-predicate-improvements.html
+++ b/2016/04/19/kudu-0-8-0-predicate-improvements.html
@@ -196,6 +196,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -224,8 +226,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/04/25/weekly-update.html b/2016/04/25/weekly-update.html
index e593ad2..3dc86c4 100644
--- a/2016/04/25/weekly-update.html
+++ b/2016/04/25/weekly-update.html
@@ -215,6 +215,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -243,8 +245,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/04/26/ycsb.html b/2016/04/26/ycsb.html
index 16105ff..d6d37a4 100644
--- a/2016/04/26/ycsb.html
+++ b/2016/04/26/ycsb.html
@@ -418,6 +418,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -446,8 +448,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/05/03/weekly-update.html b/2016/05/03/weekly-update.html
index 5f38d21..fda482f 100644
--- a/2016/05/03/weekly-update.html
+++ b/2016/05/03/weekly-update.html
@@ -190,6 +190,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -218,8 +220,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/05/09/weekly-update.html b/2016/05/09/weekly-update.html
index fb697e3..a809216 100644
--- a/2016/05/09/weekly-update.html
+++ b/2016/05/09/weekly-update.html
@@ -180,6 +180,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -208,8 +210,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/05/16/weekly-update.html b/2016/05/16/weekly-update.html
index 998dd44..2569fad 100644
--- a/2016/05/16/weekly-update.html
+++ b/2016/05/16/weekly-update.html
@@ -215,6 +215,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -243,8 +245,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/05/23/weekly-update.html b/2016/05/23/weekly-update.html
index 2140f64..801bf7f 100644
--- a/2016/05/23/weekly-update.html
+++ b/2016/05/23/weekly-update.html
@@ -204,6 +204,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -232,8 +234,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/06/01/weekly-update.html b/2016/06/01/weekly-update.html
index 7e89e01..a18a787 100644
--- a/2016/06/01/weekly-update.html
+++ b/2016/06/01/weekly-update.html
@@ -170,6 +170,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -198,8 +200,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/06/02/no-default-partitioning.html b/2016/06/02/no-default-partitioning.html
index 3630dc2..9bfaed2 100644
--- a/2016/06/02/no-default-partitioning.html
+++ b/2016/06/02/no-default-partitioning.html
@@ -211,6 +211,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -239,8 +241,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/06/06/weekly-update.html b/2016/06/06/weekly-update.html
index 17ac1b1..ac1ce47 100644
--- a/2016/06/06/weekly-update.html
+++ b/2016/06/06/weekly-update.html
@@ -165,6 +165,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -193,8 +195,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/06/10/apache-kudu-0-9-0-released.html b/2016/06/10/apache-kudu-0-9-0-released.html
index 868b42c..4fa95d7 100644
--- a/2016/06/10/apache-kudu-0-9-0-released.html
+++ b/2016/06/10/apache-kudu-0-9-0-released.html
@@ -140,6 +140,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -168,8 +170,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/06/13/weekly-update.html b/2016/06/13/weekly-update.html
index 238153f..11b2482 100644
--- a/2016/06/13/weekly-update.html
+++ b/2016/06/13/weekly-update.html
@@ -173,6 +173,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -201,8 +203,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/06/17/raft-consensus-single-node.html b/2016/06/17/raft-consensus-single-node.html
index 51684e6..c285ff3 100644
--- a/2016/06/17/raft-consensus-single-node.html
+++ b/2016/06/17/raft-consensus-single-node.html
@@ -215,6 +215,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -243,8 +245,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/06/21/weekly-update.html b/2016/06/21/weekly-update.html
index 8d5dc6b..2c4ec0a 100644
--- a/2016/06/21/weekly-update.html
+++ b/2016/06/21/weekly-update.html
@@ -166,6 +166,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -194,8 +196,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/06/24/multi-master-1-0-0.html b/2016/06/24/multi-master-1-0-0.html
index 86f815c..7d44ca4 100644
--- a/2016/06/24/multi-master-1-0-0.html
+++ b/2016/06/24/multi-master-1-0-0.html
@@ -228,6 +228,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -256,8 +258,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/06/27/weekly-update.html b/2016/06/27/weekly-update.html
index 02ca653..3d840bb 100644
--- a/2016/06/27/weekly-update.html
+++ b/2016/06/27/weekly-update.html
@@ -230,6 +230,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -258,8 +260,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/07/01/apache-kudu-0-9-1-released.html b/2016/07/01/apache-kudu-0-9-1-released.html
index 161afc4..c9677e7 100644
--- a/2016/07/01/apache-kudu-0-9-1-released.html
+++ b/2016/07/01/apache-kudu-0-9-1-released.html
@@ -138,6 +138,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -166,8 +168,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/07/11/weekly-update.html b/2016/07/11/weekly-update.html
index c8cb4c4..950f23d 100644
--- a/2016/07/11/weekly-update.html
+++ b/2016/07/11/weekly-update.html
@@ -196,6 +196,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -224,8 +226,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/07/18/weekly-update.html b/2016/07/18/weekly-update.html
index 6232842..9c3b323 100644
--- a/2016/07/18/weekly-update.html
+++ b/2016/07/18/weekly-update.html
@@ -188,6 +188,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -216,8 +218,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/07/25/asf-graduation.html b/2016/07/25/asf-graduation.html
index 928e8d5..9c89a07 100644
--- a/2016/07/25/asf-graduation.html
+++ b/2016/07/25/asf-graduation.html
@@ -164,6 +164,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -192,8 +194,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/07/26/weekly-update.html b/2016/07/26/weekly-update.html
index 50891ba..85e55a6 100644
--- a/2016/07/26/weekly-update.html
+++ b/2016/07/26/weekly-update.html
@@ -196,6 +196,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -224,8 +226,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/08/08/weekly-update.html b/2016/08/08/weekly-update.html
index bde8272..5b1eea3 100644
--- a/2016/08/08/weekly-update.html
+++ b/2016/08/08/weekly-update.html
@@ -195,6 +195,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -223,8 +225,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/08/16/weekly-update.html b/2016/08/16/weekly-update.html
index 198bcb6..12c1db5 100644
--- a/2016/08/16/weekly-update.html
+++ b/2016/08/16/weekly-update.html
@@ -245,6 +245,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -273,8 +275,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/08/23/apache-kudu-0-10-0-released.html b/2016/08/23/apache-kudu-0-10-0-released.html
index 0929737..9fbd976 100644
--- a/2016/08/23/apache-kudu-0-10-0-released.html
+++ b/2016/08/23/apache-kudu-0-10-0-released.html
@@ -161,6 +161,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -189,8 +191,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/08/23/new-range-partitioning-features.html b/2016/08/23/new-range-partitioning-features.html
index abfd49e..48d9a3c 100644
--- a/2016/08/23/new-range-partitioning-features.html
+++ b/2016/08/23/new-range-partitioning-features.html
@@ -221,6 +221,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -249,8 +251,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/08/31/intro-flume-kudu-sink.html b/2016/08/31/intro-flume-kudu-sink.html
index 1e8dcda..08ce6b4 100644
--- a/2016/08/31/intro-flume-kudu-sink.html
+++ b/2016/08/31/intro-flume-kudu-sink.html
@@ -423,6 +423,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -451,8 +453,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/09/16/predicate-pushdown.html b/2016/09/16/predicate-pushdown.html
index 534a917..3728bf3 100644
--- a/2016/09/16/predicate-pushdown.html
+++ b/2016/09/16/predicate-pushdown.html
@@ -269,6 +269,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -297,8 +299,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/09/20/apache-kudu-1-0-0-released.html b/2016/09/20/apache-kudu-1-0-0-released.html
index bacdd67..8595c36 100644
--- a/2016/09/20/apache-kudu-1-0-0-released.html
+++ b/2016/09/20/apache-kudu-1-0-0-released.html
@@ -164,6 +164,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -192,8 +194,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/09/26/strata-nyc-kudu-talks.html b/2016/09/26/strata-nyc-kudu-talks.html
index 61e0734..0d78811 100644
--- a/2016/09/26/strata-nyc-kudu-talks.html
+++ b/2016/09/26/strata-nyc-kudu-talks.html
@@ -183,6 +183,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -211,8 +213,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/10/11/weekly-update.html b/2016/10/11/weekly-update.html
index 70753ad..096adf0 100644
--- a/2016/10/11/weekly-update.html
+++ b/2016/10/11/weekly-update.html
@@ -287,6 +287,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -315,8 +317,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/10/20/weekly-update.html b/2016/10/20/weekly-update.html
index 300f368..1682cfe 100644
--- a/2016/10/20/weekly-update.html
+++ b/2016/10/20/weekly-update.html
@@ -216,6 +216,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -244,8 +246,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/11/01/weekly-update.html b/2016/11/01/weekly-update.html
index 533792f..10dd414 100644
--- a/2016/11/01/weekly-update.html
+++ b/2016/11/01/weekly-update.html
@@ -214,6 +214,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -242,8 +244,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2016/11/15/weekly-update.html b/2016/11/15/weekly-update.html
index 400d1c6..56f9372 100644
--- a/2016/11/15/weekly-update.html
+++ b/2016/11/15/weekly-update.html
@@ -235,6 +235,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -263,8 +265,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2017/01/20/apache-kudu-1-2-0-released.html b/2017/01/20/apache-kudu-1-2-0-released.html
index b2ebcca..f0fffbd 100644
--- a/2017/01/20/apache-kudu-1-2-0-released.html
+++ b/2017/01/20/apache-kudu-1-2-0-released.html
@@ -160,6 +160,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -188,8 +190,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2017/03/20/apache-kudu-1-3-0-released.html b/2017/03/20/apache-kudu-1-3-0-released.html
index 2b91d4b..640b499 100644
--- a/2017/03/20/apache-kudu-1-3-0-released.html
+++ b/2017/03/20/apache-kudu-1-3-0-released.html
@@ -159,6 +159,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -187,8 +189,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2017/04/19/apache-kudu-1-3-1-released.html b/2017/04/19/apache-kudu-1-3-1-released.html
index 5a13408..a69af8e 100644
--- a/2017/04/19/apache-kudu-1-3-1-released.html
+++ b/2017/04/19/apache-kudu-1-3-1-released.html
@@ -143,6 +143,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -171,8 +173,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2017/06/13/apache-kudu-1-4-0-released.html b/2017/06/13/apache-kudu-1-4-0-released.html
index ab36727..1662d55 100644
--- a/2017/06/13/apache-kudu-1-4-0-released.html
+++ b/2017/06/13/apache-kudu-1-4-0-released.html
@@ -159,6 +159,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -187,8 +189,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2017/09/08/apache-kudu-1-5-0-released.html b/2017/09/08/apache-kudu-1-5-0-released.html
index af86872..0cec84d 100644
--- a/2017/09/08/apache-kudu-1-5-0-released.html
+++ b/2017/09/08/apache-kudu-1-5-0-released.html
@@ -165,6 +165,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -193,8 +195,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2017/09/18/kudu-consistency-pt1.html b/2017/09/18/kudu-consistency-pt1.html
index d61b843..4699df7 100644
--- a/2017/09/18/kudu-consistency-pt1.html
+++ b/2017/09/18/kudu-consistency-pt1.html
@@ -302,6 +302,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -330,8 +332,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2017/10/23/nosql-kudu-spanner-slides.html b/2017/10/23/nosql-kudu-spanner-slides.html
index ca92f1e..9e9c832 100644
--- a/2017/10/23/nosql-kudu-spanner-slides.html
+++ b/2017/10/23/nosql-kudu-spanner-slides.html
@@ -183,6 +183,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -211,8 +213,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2017/12/08/apache-kudu-1-6-0-released.html b/2017/12/08/apache-kudu-1-6-0-released.html
index d9fcb7e..875fc61 100644
--- a/2017/12/08/apache-kudu-1-6-0-released.html
+++ b/2017/12/08/apache-kudu-1-6-0-released.html
@@ -184,6 +184,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -212,8 +214,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2018/03/23/apache-kudu-1-7-0-released.html b/2018/03/23/apache-kudu-1-7-0-released.html
index 160386c..0902f9f 100644
--- a/2018/03/23/apache-kudu-1-7-0-released.html
+++ b/2018/03/23/apache-kudu-1-7-0-released.html
@@ -196,6 +196,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -224,8 +226,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2018/07/10/instrumentation-in-kudu.html b/2018/07/10/instrumentation-in-kudu.html
index 7e794f2..e738e82 100644
--- a/2018/07/10/instrumentation-in-kudu.html
+++ b/2018/07/10/instrumentation-in-kudu.html
@@ -156,6 +156,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -184,8 +186,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2018/08/06/getting-started-with-kudu-an-oreilly-title.html b/2018/08/06/getting-started-with-kudu-an-oreilly-title.html
index 5d2b4f2..5aa7dc6 100644
--- a/2018/08/06/getting-started-with-kudu-an-oreilly-title.html
+++ b/2018/08/06/getting-started-with-kudu-an-oreilly-title.html
@@ -183,6 +183,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -211,8 +213,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2018/09/11/simplified-pipelines-with-kudu.html b/2018/09/11/simplified-pipelines-with-kudu.html
index 3eb6710..234b675 100644
--- a/2018/09/11/simplified-pipelines-with-kudu.html
+++ b/2018/09/11/simplified-pipelines-with-kudu.html
@@ -166,6 +166,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -194,8 +196,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2018/09/26/index-skip-scan-optimization-in-kudu.html b/2018/09/26/index-skip-scan-optimization-in-kudu.html
index 2065b22..9eb5cc0 100644
--- a/2018/09/26/index-skip-scan-optimization-in-kudu.html
+++ b/2018/09/26/index-skip-scan-optimization-in-kudu.html
@@ -230,6 +230,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -258,8 +260,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2018/10/26/apache-kudu-1-8-0-released.html b/2018/10/26/apache-kudu-1-8-0-released.html
index 3b82ae1..84af7e1 100644
--- a/2018/10/26/apache-kudu-1-8-0-released.html
+++ b/2018/10/26/apache-kudu-1-8-0-released.html
@@ -165,6 +165,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -193,8 +195,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2018/12/11/call-for-posts.html b/2018/12/11/call-for-posts.html
index c9bfd4a..995c0e9 100644
--- a/2018/12/11/call-for-posts.html
+++ b/2018/12/11/call-for-posts.html
@@ -143,6 +143,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -171,8 +173,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2019/03/05/transparent-hierarchical-storage-management-with-apache-kudu-and-impala.html b/2019/03/05/transparent-hierarchical-storage-management-with-apache-kudu-and-impala.html
index 51136f6..a25e6a5 100644
--- a/2019/03/05/transparent-hierarchical-storage-management-with-apache-kudu-and-impala.html
+++ b/2019/03/05/transparent-hierarchical-storage-management-with-apache-kudu-and-impala.html
@@ -528,6 +528,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -556,8 +558,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2019/03/15/apache-kudu-1-9-0-release.html b/2019/03/15/apache-kudu-1-9-0-release.html
index 9a0ac24..cb384fe 100644
--- a/2019/03/15/apache-kudu-1-9-0-release.html
+++ b/2019/03/15/apache-kudu-1-9-0-release.html
@@ -167,6 +167,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -195,8 +197,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html b/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html
index 73d7350..1abe5d5 100644
--- a/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html
+++ b/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html
@@ -345,6 +345,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -373,8 +375,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html b/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html
index ac4611d..dc19afe 100644
--- a/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html
+++ b/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html
@@ -251,6 +251,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -279,8 +281,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/2019/04/30/location-awareness.html b/2019/04/30/location-awareness.html
new file mode 100644
index 0000000..eab5aa3
--- /dev/null
+++ b/2019/04/30/location-awareness.html
@@ -0,0 +1,574 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
+    <meta name="description" content="A new open source Apache Hadoop ecosystem project, Apache Kudu completes Hadoop's storage layer to enable fast analytics on fast data" />
+    <meta name="author" content="Cloudera" />
+    <title>Apache Kudu - Location Awareness in Kudu</title>
+    <!-- Bootstrap core CSS -->
+    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"
+          integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7"
+          crossorigin="anonymous">
+
+    <!-- Custom styles for this template -->
+    <link href="/css/kudu.css" rel="stylesheet"/>
+    <link href="/css/asciidoc.css" rel="stylesheet"/>
+    <link rel="shortcut icon" href="/img/logo-favicon.ico" />
+    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" />
+
+    
+    <link rel="alternate" type="application/atom+xml"
+      title="RSS Feed for Apache Kudu blog"
+      href="/feed.xml" />
+    
+
+    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
+    <!--[if lt IE 9]>
+        <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
+        <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+        <![endif]-->
+  </head>
+  <body>
+    <div class="kudu-site container-fluid">
+      <!-- Static navbar -->
+        <nav class="navbar navbar-default">
+          <div class="container-fluid">
+            <div class="navbar-header">
+              <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
+                <span class="sr-only">Toggle navigation</span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+              </button>
+              
+              <a class="logo" href="/"><img
+                src="//d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_80px.png"
+                srcset="//d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_80px.png 1x, //d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_160px.png 2x"
+                alt="Apache Kudu"/></a>
+              
+            </div>
+            <div id="navbar" class="collapse navbar-collapse">
+              <ul class="nav navbar-nav navbar-right">
+                <li >
+                  <a href="/">Home</a>
+                </li>
+                <li >
+                  <a href="/overview.html">Overview</a>
+                </li>
+                <li >
+                  <a href="/docs/">Documentation</a>
+                </li>
+                <li >
+                  <a href="/releases/">Download</a>
+                </li>
+                <li class="active">
+                  <a href="/blog/">Blog</a>
+                </li>
+                <!-- NOTE: this dropdown menu does not appear on Mobile, so don't add anything here
+                     that doesn't also appear elsewhere on the site. -->
+                <li class="dropdown">
+                  <a href="/community.html" role="button" aria-haspopup="true" aria-expanded="false">Community <span class="caret"></span></a>
+                  <ul class="dropdown-menu">
+                    <li class="dropdown-header">GET IN TOUCH</li>
+                    <li><a class="icon email" href="/community.html">Mailing Lists</a></li>
+                    <li><a class="icon slack" href="https://getkudu-slack.herokuapp.com/">Slack Channel</a></li>
+                    <li role="separator" class="divider"></li>
+                    <li><a href="/community.html#meetups-user-groups-and-conference-presentations">Events and Meetups</a></li>
+                    <li><a href="/committers.html">Project Committers</a></li>
+                    <!--<li><a href="/roadmap.html">Roadmap</a></li>-->
+                    <li><a href="/community.html#contributions">How to Contribute</a></li>
+                    <li role="separator" class="divider"></li>
+                    <li class="dropdown-header">DEVELOPER RESOURCES</li>
+                    <li><a class="icon github" href="https://github.com/apache/incubator-kudu">GitHub</a></li>
+                    <li><a class="icon gerrit" href="http://gerrit.cloudera.org:8080/#/q/status:open+project:kudu">Gerrit Code Review</a></li>
+                    <li><a class="icon jira" href="https://issues.apache.org/jira/browse/KUDU">JIRA Issue Tracker</a></li>
+                    <li role="separator" class="divider"></li>
+                    <li class="dropdown-header">SOCIAL MEDIA</li>
+                    <li><a class="icon twitter" href="https://twitter.com/ApacheKudu">Twitter</a></li>
+                    <li role="separator" class="divider"></li>
+                    <li class="dropdown-header">APACHE SOFTWARE FOUNDATION</li>
+                    <li><a href="https://www.apache.org/security/" target="_blank">Security</a></li>
+                    <li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship</a></li>
+                    <li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li>
+                    <li><a href="https://www.apache.org/licenses/" target="_blank">License</a></li>
+                  </ul>
+                </li>
+                <li >
+                  <a href="/faq.html">FAQ</a>
+                </li>
+              </ul><!-- /.nav -->
+            </div><!-- /#navbar -->
+          </div><!-- /.container-fluid -->
+        </nav>
+
+<div class="row header">
+  <div class="col-lg-12">
+    <h2><a href="/blog">Apache Kudu Blog</a></h2>
+  </div>
+</div>
+
+<div class="row-fluid">
+  <div class="col-lg-9">
+    <article>
+  <header>
+    <h1 class="entry-title">Location Awareness in Kudu</h1>
+    <p class="meta">Posted 30 Apr 2019 by Alexey Serbin</p>
+  </header>
+  <div class="entry-content">
+    <p>This post is about location awareness in Kudu. It gives an overview
+of the following:
+- principles of the design
+- restrictions of the current implementation
+- potential future enhancements and extensions</p>
+
+<!--more-->
+
+<h1 id="introduction">Introduction</h1>
+<p>Kudu supports location awareness starting with the 1.9.0 release. The
+initial implementation of location awareness in Kudu is built to satisfy the
+following requirement:</p>
+
+<ul>
+  <li>In a Kudu cluster consisting of multiple servers spread over several racks,
+place the replicas of a tablet in such a way that the tablet stays available
+even if all the servers in a single rack become unavailable.</li>
+</ul>
+
+<p>A rack failure can occur when a hardware component shared among servers in the
+rack, such as a network switch or power supply, fails. More generally,
+replace ‘rack’ with any other aggregation of nodes (e.g., chassis, site,
+cloud availability zone, etc.) where some or all nodes in an aggregate become
+unavailable in case of a failure. This even applies to a datacenter if the
+network latency between datacenters is low. This is why we call the feature
+<em>location awareness</em> and not <em>rack awareness</em>.</p>
+
+<h1 id="locations-in-kudu">Locations in Kudu</h1>
+<p>In Kudu, a location is defined by a string that begins with a slash (<code>/</code>) and
+consists of slash-separated tokens each of which contains only characters from
+the set <code>[a-zA-Z0-9_-.]</code>. The components of the location string hierarchy
+should correspond to the physical or cloud-defined hierarchy of the deployed
+cluster, e.g. <code>/data-center-0/rack-09</code> or <code>/region-0/availability-zone-01</code>.</p>
+
+<p>The design choice of using hierarchical paths for location strings is
+partially influenced by HDFS. The intention was to make it possible using
+the same locations as for existing HDFS nodes, because it’s common to deploy
+Kudu alongside HDFS. In addition, the hierarchical structure of location
+strings allows for interpretation of those in terms of common ancestry and
+relative proximity. As of now, Kudu does not exploit the hierarchical
+structure of the location except for the client’s logic to find the closest
+tablet server. However, we plan to leverage the hierarchical structure
+in future releases.</p>
+
+<h1 id="defining-and-assigning-locations">Defining and assigning locations</h1>
+<p>Kudu masters assign locations to tablet servers and clients.</p>
+
+<p>Every Kudu master runs the location assignment procedure to assign a location
+to a tablet server when it registers. To determine the location for a tablet
+server, the master invokes an executable that takes the IP address or hostname
+of the tablet server and outputs the corresponding location string for the
+specified IP address or hostname. If the executable exits with non-zero exit
+status, that’s interpreted as an error and masters add corresponding error
+message about that into their logs. In case of tablet server registrations
+such outcome is deemed as a registration failure and the corresponding tablet
+server is not added into the master’s registry. The latter renders the tablet
+server unusable to Kudu clients since non-registered tablet servers are not
+discoverable to Kudu clients via <code>GetTableLocations</code> RPC.</p>
+
+<p>The master associates the produced location string with the registered tablet
+server and keeps it until the tablet server re-registers, which only occurs
+if the master or tablet server restarts. Masters use the assigned location
+information internally to make replica placement decisions, trying to place
+replicas evenly across locations and to keep tablets available in case all
+tablet servers in a single location fail (see
+<a href="https://s.apache.org/location-awareness-design">the design document</a>
+for details). In addition, masters provide connected clients with
+the information on the client’s assigned location, so the clients can make
+informed decisions when they attempt to read from the closest tablet server.
+Kudu tablet servers themselves are location agnostic, at least for now,
+so the assigned location is not reported back to a registered tablet server.</p>
+
+<h1 id="the-location-aware-placement-policy-for-tablet-replicas-in-kudu">The location-aware placement policy for tablet replicas in Kudu</h1>
+<p>While placing replicas of tablets in location-aware cluster, Kudu uses a best
+effort approach to adhere to the following principle:
+- Spread replicas across locations so that the failure of tablet servers
+  in one location does not make tablets unavailable.</p>
+
+<p>That’s referred to as the <em>replica placement policy</em> or just <em>placement policy</em>.
+In Kudu, both the initial placement of tablet replicas and the automatic
+re-replication are governed by that policy. As of now, that’s the only
+replica placement policy available in Kudu. The placement policy isn’t
+customizable and doesn’t have any configurable parameters.</p>
+
+<h1 id="automatic-re-replication-and-placement-policy">Automatic re-replication and placement policy</h1>
+<p>By design, keeping the target replication factor for tablets has higher
+priority than conforming to the replica placement policy. In other words,
+when bringing up tablet replicas to replace failed ones, Kudu uses a best-effort
+approach with regard to conforming to the constraints of the placement policy.
+Essentially, that means that if there isn’t a way to place a replica to conform
+with the placement policy, the system places the replica anyway. The resulting
+violation of the placement policy can be addressed later on when unreachable
+tablet servers become available again or the misconfiguration is addressed.
+As of now, to fix the resulting placement policy violations it’s necessary
+to run the CLI rebalancer tool manually (see below for details),
+but in future releases that might be done <a href="https://issues.apache.org/jira/browse/KUDU-2780">automatically in background</a>.</p>
+
+<h1 id="an-example-of-location-aware-rebalancing">An example of location-aware rebalancing</h1>
+<p>This section illustrates what happens during each phase of the location-aware
+rebalancing process.</p>
+
+<p>In the diagrams below, the larger outer boxes denote locations, and the
+smaller inner ones denote tablet servers. As for the real-world objects behind
+locations in this example, one might think of server racks with a shared power
+supply or a shared network switch. It’s assumed that no more than one tablet
+server is run at each node (i.e. machine) in a rack.</p>
+
+<p>The first phase of the rebalancing process is about detecting violations and
+reinstating the placement policy in the cluster. In the diagram below, there
+are three locations defined: <code>/L0</code>, <code>/L1</code>, <code>/L2</code>. Each location has two tablet
+servers. Table <code>A</code> has the replication factor of three (RF=3) and consists of
+four tablets: <code>A0</code>, <code>A1</code>, <code>A2</code>, <code>A3</code>. Table <code>B</code> has replication factor of five
+(RF=5) and consists of three tablets: <code>B0</code>, <code>B1</code>, <code>B2</code>.</p>
+
+<p>The distribution of the replicas for tablet <code>A0</code> violates the placement policy.
+Why? Because replicas <code>A0.0</code> and <code>A0.1</code> constitute the majority of replicas
+(two out of three) and reside in the same location <code>/L0</code>.</p>
+
+<pre><code>         /L0                     /L1                    /L2
++-------------------+   +-------------------+  +-------------------+
+|   TS0      TS1    |   |   TS2      TS3    |  |   TS4      TS5    |
+| +------+ +------+ |   | +------+ +------+ |  | +------+ +------+ |
+| | A0.0 | | A0.1 | |   | | A0.2 | |      | |  | |      | |      | |
+| |      | | A1.0 | |   | | A1.1 | |      | |  | | A1.2 | |      | |
+| |      | | A2.0 | |   | | A2.1 | |      | |  | | A2.2 | |      | |
+| |      | | A3.0 | |   | | A3.1 | |      | |  | | A3.2 | |      | |
+| | B0.0 | | B0.1 | |   | | B0.2 | | B0.3 | |  | | B0.4 | |      | |
+| | B1.0 | | B1.1 | |   | | B1.2 | | B1.3 | |  | | B1.4 | |      | |
+| | B2.0 | | B2.1 | |   | | B2.2 | | B2.3 | |  | | B2.4 | |      | |
+| +------+ +------+ |   | +------+ +------+ |  | +------+ +------+ |
++-------------------+   +-------------------+  +-------------------+
+</code></pre>
+
+<p>The location-aware rebalancer should initiate movement either of <code>T0.0</code> or
+<code>T0.1</code> from <code>/L0</code> to other location, so the resulting replica distribution would
+<em>not</em> contain the majority of replicas in any single location. In addition to
+that, the rebalancer tool tries to evenly spread the load across all locations
+and tablet servers within each location. The latter narrows down the list
+of the candidate replicas to move: <code>A0.1</code> is the best candidate to move from
+location <code>/L0</code>, so location <code>/L0</code> would not contain the majority of replicas
+for tablet <code>A0</code>. The same principle dictates the target location and the target
+tablet server to receive <code>A0.1</code>: that should be tablet server <code>TS5</code> in the
+location <code>/L2</code>. The result distribution of the tablet replicas after the move
+is represented in the diagram below.</p>
+
+<pre><code>         /L0                     /L1                    /L2
++-------------------+   +-------------------+  +-------------------+
+|   TS0      TS1    |   |   TS2      TS3    |  |   TS4      TS5    |
+| +------+ +------+ |   | +------+ +------+ |  | +------+ +------+ |
+| | A0.0 | |      | |   | | A0.2 | |      | |  | |      | | A0.1 | |
+| |      | | A1.0 | |   | | A1.1 | |      | |  | | A1.2 | |      | |
+| |      | | A2.0 | |   | | A2.1 | |      | |  | | A2.2 | |      | |
+| |      | | A3.0 | |   | | A3.1 | |      | |  | | A3.2 | |      | |
+| | B0.0 | | B0.1 | |   | | B0.2 | | B0.3 | |  | | B0.4 | |      | |
+| | B1.0 | | B1.1 | |   | | B1.2 | | B1.3 | |  | | B1.4 | |      | |
+| | B2.0 | | B2.1 | |   | | B2.2 | | B2.3 | |  | | B2.4 | |      | |
+| +------+ +------+ |   | +------+ +------+ |  | +------+ +------+ |
++-------------------+   +-------------------+  +-------------------+
+</code></pre>
+
+<p>The second phase of the location-aware rebalancing is about moving tablet
+replicas across locations to make the locations’ load more balanced. For the
+number <code>S</code> of tablet servers in a location and the total number <code>R</code> of replicas
+in the location, the <em>load of the location</em> is defined as <code>R/S</code>.</p>
+
+<p>At this stage all violations of the placement policy are already rectified. The
+rebalancer tool doesn’t attempt to make any moves which would violate the
+placement policy.</p>
+
+<p>The load of the locations in the diagram above:
+- <code>/L0</code>: 1/5
+- <code>/L1</code>: 1/5
+- <code>/L2</code>: 2/7</p>
+
+<p>A possible distribution of the tablet replicas after the second phase is
+represented below. The result load of the locations:
+- <code>/L0</code>: 2/9
+- <code>/L1</code>: 2/9
+- <code>/L2</code>: 2/9</p>
+
+<pre><code>         /L0                     /L1                    /L2
++-------------------+   +-------------------+  +-------------------+
+|   TS0      TS1    |   |   TS2      TS3    |  |   TS4      TS5    |
+| +------+ +------+ |   | +------+ +------+ |  | +------+ +------+ |
+| | A0.0 | |      | |   | | A0.2 | |      | |  | |      | | A0.1 | |
+| |      | | A1.0 | |   | | A1.1 | |      | |  | | A1.2 | |      | |
+| |      | | A2.0 | |   | | A2.1 | |      | |  | | A2.2 | |      | |
+| |      | | A3.0 | |   | | A3.1 | |      | |  | | A3.2 | |      | |
+| | B0.0 | |      | |   | | B0.2 | | B0.3 | |  | | B0.4 | | B0.1 | |
+| | B1.0 | | B1.1 | |   | |      | | B1.3 | |  | | B1.4 | | B2.2 | |
+| | B2.0 | | B2.1 | |   | | B2.2 | | B2.3 | |  | | B2.4 | |      | |
+| +------+ +------+ |   | +------+ +------+ |  | +------+ +------+ |
++-------------------+   +-------------------+  +-------------------+
+</code></pre>
+
+<p>The third phase of the location-aware rebalancing is about moving tablet
+replicas within each location to make the distribution of replicas even,
+both per-table and per-server.</p>
+
+<p>See below for a possible replicas’ distribution in the example scenario
+after the third phase of the location-aware rebalancing successfully completes.</p>
+
+<pre><code>         /L0                     /L1                    /L2
++-------------------+   +-------------------+  +-------------------+
+|   TS0      TS1    |   |   TS2      TS3    |  |   TS4      TS5    |
+| +------+ +------+ |   | +------+ +------+ |  | +------+ +------+ |
+| | A0.0 | |      | |   | |      | | A0.2 | |  | |      | | A0.1 | |
+| |      | | A1.0 | |   | | A1.1 | |      | |  | | A1.2 | |      | |
+| |      | | A2.0 | |   | | A2.1 | |      | |  | | A2.2 | |      | |
+| |      | | A3.0 | |   | | A3.1 | |      | |  | | A3.2 | |      | |
+| | B0.0 | |      | |   | | B0.2 | | B0.3 | |  | | B0.4 | | B0.1 | |
+| | B1.0 | | B1.1 | |   | |      | | B1.3 | |  | | B1.4 | | B1.2 | |
+| | B2.0 | | B2.1 | |   | | B2.2 | | B2.3 | |  | |      | | B2.4 | |
+| +------+ +------+ |   | +------+ +------+ |  | +------+ +------+ |
++-------------------+   +-------------------+  +-------------------+
+</code></pre>
+
+<h1 id="how-to-make-a-kudu-cluster-location-aware">How to make a Kudu cluster location-aware</h1>
+<p>To make a Kudu cluster location-aware, it’s necessary to set the
+<code>--location_mapping_cmd</code> flag for Kudu master(s) and make the corresponding
+executable (binary or a script) available at the nodes where Kudu masters run.
+In case of multiple masters, it’s important to make sure that the location
+mappings stay the same regardless of the node where the location assignment
+command is running.</p>
+
+<p>It’s recommended to have at least three locations defined in a Kudu
+cluster so that no location contains a majority of tablet replicas.
+With two locations or less it’s not possible to spread replicas
+of tablets with replication factor of three and higher such that no location
+contains a majority of replicas.</p>
+
+<p>For example, running a Kudu cluster in a single datacenter <code>dc0</code>, assign
+location <code>/dc0/rack0</code> to tablet servers running at machines in the rack <code>rack0</code>,
+<code>/dc0/rack1</code> to tablet servers running at machines in the rack <code>rack1</code>,
+and <code>/dc0/rack2</code> to tablet servers running at machines in the rack <code>rack2</code>.
+In a similar way, when running in cloud, assign location <code>/regionA/az0</code>
+to tablet servers running in availability zone <code>az0</code> of region <code>regionA</code>,
+and <code>/regionA/az1</code> to tablet servers running in zone <code>az1</code> of the same region.</p>
+
+<h1 id="an-example-of-location-assignment-script-for-kudu">An example of location assignment script for Kudu</h1>
+<pre><code>#!/bin/sh
+#
+# It's assumed a Kudu cluster consists of nodes with IPv4 addresses in the
+# private 192.168.100.0/32 subnet. The nodes are hosted in racks, where
+# each rack can contain at most 32 nodes. This results in 8 locations,
+# one location per rack.
+#
+# This example script maps IP addresses into locations assuming that RPC
+# endpoints of tablet servers are specified via IPv4 addresses. If tablet
+# servers' RPC endpoints are specified using DNS hostnames (and that's how
+# it's done by default), the script should consume DNS hostname instead of
+# an IP address as an input parameter. Check the `--rpc_bind_addresses` and
+# `--rpc_advertised_addresses` command line flags of kudu-tserver for details.
+#
+# DISCLAIMER:
+#   This is an example Bourne shell script for Kudu location assignment. Please
+#   note it's just a toy script created with illustrative-only purpose.
+#   The error handling and the input validation are minimalistic. Also, the
+#   network topology choice, supportability and capacity planning aspects of
+#   this script might be sub-optimal if applied as-is for real-world use cases.
+
+set -e
+
+if [ $# -ne 1 ]; then
+  echo "usage: $0 &lt;ip_address&gt;"
+  exit 1
+fi
+
+ip_address=$1
+shift
+
+suffix=${ip_address##192.168.100.}
+if [ -z "${suffix##*.*}" ]; then
+  # An IP address from a non-controlled subnet: maps into the 'other' location.
+  echo "/other"
+  exit 0
+fi
+
+# The mapping of the IP addresses
+if [ -z "$suffix" -o $suffix -lt 0 -o $suffix -gt 255 ]; then
+  echo "ERROR: '$ip_address' is not a valid IPv4 address"
+  exit 2
+fi
+
+if [ $suffix -eq 0 -o $suffix -eq 255 ]; then
+  echo "ERROR: '$ip_address' is a 0xffffff00 IPv4 subnet address"
+  exit 3
+fi
+
+if [ $suffix -lt 32 ]; then
+  echo "/dc0/rack00"
+elif [ $suffix -ge 32 -a $suffix -lt 64 ]; then
+  echo "/dc0/rack01"
+elif [ $suffix -ge 64 -a $suffix -lt 96 ]; then
+  echo "/dc0/rack02"
+elif [ $suffix -ge 96 -a $suffix -lt 128 ]; then
+  echo "/dc0/rack03"
+elif [ $suffix -ge 128 -a $suffix -lt 160 ]; then
+  echo "/dc0/rack04"
+elif [ $suffix -ge 160 -a $suffix -lt 192 ]; then
+  echo "/dc0/rack05"
+elif [ $suffix -ge 192 -a $suffix -lt 224 ]; then
+  echo "/dc0/rack06"
+else
+  echo "/dc0/rack07"
+fi
+</code></pre>
+
+<h1 id="reinstating-the-placement-policy-in-a-location-aware-kudu-cluster">Reinstating the placement policy in a location-aware Kudu cluster</h1>
+<p>As explained earlier, even if the initial placement of tablet replicas conforms
+to the placement policy, the cluster might get to a point where there are not
+enough tablet servers to place a new or a replacement replica. Ideally, such
+situations should be handled automatically: once there are enough tablet servers
+in the cluster or the misconfiguration is fixed, the placement policy should
+be reinstated. Currently, it’s possible to reinstate the placement policy using
+the <code>kudu</code> CLI tool:</p>
+
+<p><code>sudo -u kudu kudu cluster rebalance &lt;master_rpc_endpoints&gt;</code></p>
+
+<p>In the first phase, the location-aware rebalancing process tries to
+reestablish the placement policy. If that’s not possible, the tool
+terminates. Use the <code>--disable_policy_fixer</code> flag to skip this phase and
+continue to the cross-location rebalancing phase.</p>
+
+<p>The second phase is cross-location rebalancing, i.e. moving tablet replicas
+between different locations in attempt to spread tablet replicas among
+locations evenly, equalizing the loads of locations throughout the cluster.
+If the benefits of spreading the load among locations do not justify the cost
+of the cross-location replica movement, the tool can be instructed to skip the
+second phase of the location-aware rebalancing. Use the
+<code>--disable_cross_location_rebalancing</code> command line flag for that.</p>
+
+<p>The third phase is intra-location rebalancing, i.e. balancing the distribution
+of tablet replicas within each location as if each location is a cluster on its
+own. Use the <code>--disable_intra_location_rebalancing</code> flag to skip this phase.</p>
+
+<h1 id="future-work">Future work</h1>
+<p>Having a CLI tool to reinstate placement policy is nice, but it would be great
+to run the location-aware rebalancing in background, automatically reinstating
+the placement policy and making tablet replica distribution even
+across a Kudu cluster.</p>
+
+<p>In addition to that, there is a idea to make it possible to have
+multiple customizable placement policies in the system. As of now, there is
+a request to implement so-called ‘table pinning’, i.e. make it possible
+to specify placement policy where replicas of tablets of particular tables
+are placed only at nodes within the specified locations. The table pinning
+request is tracked by KUDU-2604 in Apache JIRA, see
+<a href="https://issues.apache.org/jira/browse/KUDU-2604">KUDU-2604</a>.</p>
+
+<h1 id="references">References</h1>
+<p>[1] Location awareness in Kudu: <a href="https://github.com/apache/kudu/blob/master/docs/design-docs/location-awareness.md">design document</a></p>
+
+<p>[2] A proposal for Kudu tablet server labeling: <a href="https://issues.apache.org/jira/browse/KUDU-2604">KUDU-2604</a></p>
+
+<p>[3] Further improvement: <a href="https://issues.apache.org/jira/browse/KUDU-2780">automatic cluster rebalancing</a>.</p>
+
+  </div>
+</article>
+
+
+  </div>
+  <div class="col-lg-3 recent-posts">
+    <h3>Recent posts</h3>
+    <ul>
+    
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
+      <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
+    
+      <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
+    
+      <li> <a href="/2019/03/15/apache-kudu-1-9-0-release.html">Apache Kudu 1.9.0 Released</a> </li>
+    
+      <li> <a href="/2019/03/05/transparent-hierarchical-storage-management-with-apache-kudu-and-impala.html">Transparent Hierarchical Storage Management with Apache Kudu and Impala</a> </li>
+    
+      <li> <a href="/2018/12/11/call-for-posts.html">Call for Posts</a> </li>
+    
+      <li> <a href="/2018/10/26/apache-kudu-1-8-0-released.html">Apache Kudu 1.8.0 Released</a> </li>
+    
+      <li> <a href="/2018/09/26/index-skip-scan-optimization-in-kudu.html">Index Skip Scan Optimization in Kudu</a> </li>
+    
+      <li> <a href="/2018/09/11/simplified-pipelines-with-kudu.html">Simplified Data Pipelines with Kudu</a> </li>
+    
+      <li> <a href="/2018/08/06/getting-started-with-kudu-an-oreilly-title.html">Getting Started with Kudu - an O'Reilly Title</a> </li>
+    
+      <li> <a href="/2018/07/10/instrumentation-in-kudu.html">Instrumentation in Apache Kudu</a> </li>
+    
+      <li> <a href="/2018/03/23/apache-kudu-1-7-0-released.html">Apache Kudu 1.7.0 released</a> </li>
+    
+      <li> <a href="/2017/12/08/apache-kudu-1-6-0-released.html">Apache Kudu 1.6.0 released</a> </li>
+    
+      <li> <a href="/2017/10/23/nosql-kudu-spanner-slides.html">Slides: A brave new world in mutable big data: Relational storage</a> </li>
+    
+      <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
+    
+    </ul>
+  </div>
+</div>
+
+      <footer class="footer">
+        <div class="row">
+          <div class="col-md-9">
+            <p class="small">
+            Copyright &copy; 2016 The Apache Software Foundation. 
+            </p>
+            <p class="small">
+            Apache Kudu, Kudu, Apache, the Apache feather logo, and the Apache Kudu
+            project logo are either registered trademarks or trademarks of The
+            Apache Software Foundation in the United States and other countries.
+            </p>
+          </div>
+          <div class="col-md-3">
+            <a class="pull-right" href="https://www.apache.org/events/current-event.html">
+                <img src="https://www.apache.org/events/current-event-234x60.png"/>
+            </a>
+          </div>
+        </div>
+      </footer>
+    </div>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
+    <script>
+      // Try to detect touch-screen devices. Note: Many laptops have touch screens.
+      $(document).ready(function() {
+        if ("ontouchstart" in document.documentElement) {
+          $(document.documentElement).addClass("touch");
+        } else {
+          $(document.documentElement).addClass("no-touch");
+        }
+      });
+    </script>
+    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"
+            integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS"
+            crossorigin="anonymous"></script>
+    <script>
+      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+      ga('create', 'UA-68448017-1', 'auto');
+      ga('send', 'pageview');
+    </script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/3.1.0/anchor.js"></script>
+    <script>
+      anchors.options = {
+        placement: 'right',
+        visible: 'touch',
+      };
+      anchors.add();
+    </script>
+  </body>
+</html>
+
diff --git a/blog/index.html b/blog/index.html
index f28e74d..a18be4b 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -117,6 +117,30 @@
 <!-- Articles -->
 <article>
   <header>
+    <h1 class="entry-title"><a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a></h1>
+    <p class="meta">Posted 30 Apr 2019 by Alexey Serbin</p>
+  </header>
+  <div class="entry-content">
+    
+    <p>This post is about location awareness in Kudu. It gives an overview
+of the following:
+- principles of the design
+- restrictions of the current implementation
+- potential future enhancements and extensions</p>
+
+
+    
+  </div>
+  <div class="read-full">
+    <a class="btn btn-info" href="/2019/04/30/location-awareness.html">Read full post...</a>
+  </div>
+</article>
+
+
+
+<!-- Articles -->
+<article>
+  <header>
     <h1 class="entry-title"><a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a></h1>
     <p class="meta">Posted 22 Apr 2019 by Grant Henke</p>
   </header>
@@ -227,29 +251,6 @@
 
 
 
-<!-- Articles -->
-<article>
-  <header>
-    <h1 class="entry-title"><a href="/2018/12/11/call-for-posts.html">Call for Posts</a></h1>
-    <p class="meta">Posted 11 Dec 2018 by Attila Bukor</p>
-  </header>
-  <div class="entry-content">
-    
-    <p>Most of the posts in the Kudu blog have been written by the project’s
-committers and are either technical or news-like in nature. We’d like to hear
-how you’re using Kudu in production, in testing, or in your hobby project and
-we’d like to share it with the world!</p>
-
-
-    
-  </div>
-  <div class="read-full">
-    <a class="btn btn-info" href="/2018/12/11/call-for-posts.html">Read full post...</a>
-  </div>
-</article>
-
-
-
 <!-- Pagination links -->
 
 <nav>
@@ -268,6 +269,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -296,8 +299,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/blog/page/10/index.html b/blog/page/10/index.html
index 7b66c21..6dfea6b 100644
--- a/blog/page/10/index.html
+++ b/blog/page/10/index.html
@@ -117,6 +117,27 @@
 <!-- Articles -->
 <article>
   <header>
+    <h1 class="entry-title"><a href="/2016/06/01/weekly-update.html">Apache Kudu (incubating) Weekly Update June 1, 2016</a></h1>
+    <p class="meta">Posted 01 Jun 2016 by Jean-Daniel Cryans</p>
+  </header>
+  <div class="entry-content">
+    
+    <p>Welcome to the eleventh edition of the Kudu Weekly Update. This weekly blog post
+covers ongoing development and news in the Apache Kudu (incubating) project.</p>
+
+
+    
+  </div>
+  <div class="read-full">
+    <a class="btn btn-info" href="/2016/06/01/weekly-update.html">Read full post...</a>
+  </div>
+</article>
+
+
+
+<!-- Articles -->
+<article>
+  <header>
     <h1 class="entry-title"><a href="/2016/05/23/weekly-update.html">Apache Kudu (incubating) Weekly Update May 23, 2016</a></h1>
     <p class="meta">Posted 23 May 2016 by Todd Lipcon</p>
   </header>
@@ -198,26 +219,6 @@
 
 
 
-<!-- Articles -->
-<article>
-  <header>
-    <h1 class="entry-title"><a href="/2016/04/26/ycsb.html">Benchmarking and Improving Kudu Insert Performance with YCSB</a></h1>
-    <p class="meta">Posted 26 Apr 2016 by Todd Lipcon</p>
-  </header>
-  <div class="entry-content">
-    
-    <p>Recently, I wanted to stress-test and benchmark some changes to the Kudu RPC server, and decided to use YCSB as a way to generate reasonable load. While running YCSB, I noticed interesting results, and what started as an unrelated testing exercise eventually yielded some new insights into Kudu’s behavior. These insights will motivate changes to default Kudu settings and code in upcoming versions. This post details the benchmark setup, analysis, and conclusions.</p>
-
-
-    
-  </div>
-  <div class="read-full">
-    <a class="btn btn-info" href="/2016/04/26/ycsb.html">Read full post...</a>
-  </div>
-</article>
-
-
-
 <!-- Pagination links -->
 
 <nav>
@@ -238,6 +239,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -266,8 +269,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/blog/page/11/index.html b/blog/page/11/index.html
index 6de2747..145e5b1 100644
--- a/blog/page/11/index.html
+++ b/blog/page/11/index.html
@@ -117,6 +117,26 @@
 <!-- Articles -->
 <article>
   <header>
+    <h1 class="entry-title"><a href="/2016/04/26/ycsb.html">Benchmarking and Improving Kudu Insert Performance with YCSB</a></h1>
+    <p class="meta">Posted 26 Apr 2016 by Todd Lipcon</p>
+  </header>
+  <div class="entry-content">
+    
+    <p>Recently, I wanted to stress-test and benchmark some changes to the Kudu RPC server, and decided to use YCSB as a way to generate reasonable load. While running YCSB, I noticed interesting results, and what started as an unrelated testing exercise eventually yielded some new insights into Kudu’s behavior. These insights will motivate changes to default Kudu settings and code in upcoming versions. This post details the benchmark setup, analysis, and conclusions.</p>
+
+
+    
+  </div>
+  <div class="read-full">
+    <a class="btn btn-info" href="/2016/04/26/ycsb.html">Read full post...</a>
+  </div>
+</article>
+
+
+
+<!-- Articles -->
+<article>
+  <header>
     <h1 class="entry-title"><a href="/2016/04/25/weekly-update.html">Apache Kudu (incubating) Weekly Update April 25, 2016</a></h1>
     <p class="meta">Posted 25 Apr 2016 by Todd Lipcon</p>
   </header>
@@ -210,36 +230,6 @@
 
 
 
-<!-- Articles -->
-<article>
-  <header>
-    <h1 class="entry-title"><a href="/2016/04/12/apache-kudu-0-8-0-released.html">Apache Kudu (incubating) 0.8.0 released</a></h1>
-    <p class="meta">Posted 12 Apr 2016 by Jean-Daniel Cryans</p>
-  </header>
-  <div class="entry-content">
-    
-    <p>The Apache Kudu (incubating) team is happy to announce the release of Kudu
-0.8.0!</p>
-
-<p>This latest version adds a sink for Apache Flume, partition pruning in the C++
-client and related improvements on the server-side, better error-handling in Java
-client, plus many other improvements and bug fixes.</p>
-
-<ul>
-  <li>Read the detailed <a href="http://kudu.apache.org/releases/0.8.0/docs/release_notes.html">Kudu 0.8.0 release notes</a></li>
-  <li>Download the <a href="http://kudu.apache.org/releases/0.8.0/">Kudu 0.8.0 source release</a></li>
-</ul>
-
-
-    
-  </div>
-  <div class="read-full">
-    <a class="btn btn-info" href="/2016/04/12/apache-kudu-0-8-0-released.html">Read full post...</a>
-  </div>
-</article>
-
-
-
 <!-- Pagination links -->
 
 <nav>
@@ -260,6 +250,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -288,8 +280,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/blog/page/12/index.html b/blog/page/12/index.html
index a57b29b..c101f92 100644
--- a/blog/page/12/index.html
+++ b/blog/page/12/index.html
@@ -117,6 +117,36 @@
 <!-- Articles -->
 <article>
   <header>
+    <h1 class="entry-title"><a href="/2016/04/12/apache-kudu-0-8-0-released.html">Apache Kudu (incubating) 0.8.0 released</a></h1>
+    <p class="meta">Posted 12 Apr 2016 by Jean-Daniel Cryans</p>
+  </header>
+  <div class="entry-content">
+    
+    <p>The Apache Kudu (incubating) team is happy to announce the release of Kudu
+0.8.0!</p>
+
+<p>This latest version adds a sink for Apache Flume, partition pruning in the C++
+client and related improvements on the server-side, better error-handling in Java
+client, plus many other improvements and bug fixes.</p>
+
+<ul>
+  <li>Read the detailed <a href="http://kudu.apache.org/releases/0.8.0/docs/release_notes.html">Kudu 0.8.0 release notes</a></li>
+  <li>Download the <a href="http://kudu.apache.org/releases/0.8.0/">Kudu 0.8.0 source release</a></li>
+</ul>
+
+
+    
+  </div>
+  <div class="read-full">
+    <a class="btn btn-info" href="/2016/04/12/apache-kudu-0-8-0-released.html">Read full post...</a>
+  </div>
+</article>
+
+
+
+<!-- Articles -->
+<article>
+  <header>
     <h1 class="entry-title"><a href="/2016/04/11/weekly-update.html">Apache Kudu (incubating) Weekly Update April 11, 2016</a></h1>
     <p class="meta">Posted 11 Apr 2016 by Todd Lipcon</p>
   </header>
@@ -205,31 +235,6 @@
 
 
 
-<!-- Articles -->
-<article>
-  <header>
-    <h1 class="entry-title"><a href="/2016/03/10/apache-kudu-0-7-1-released.html">Apache Kudu (incubating) 0.7.1 released</a></h1>
-    <p class="meta">Posted 10 Mar 2016 by Jean-Daniel Cryans</p>
-  </header>
-  <div class="entry-content">
-    
-    <p>The Apache Kudu (incubating) team is happy to announce the release of Kudu
-0.7.1!</p>
-
-<p>This latest release fixes several bugs found during and after the release
-of 0.7.0. Special thanks are due to several community users who reported
-bugs fixed in this release:</p>
-
-
-    
-  </div>
-  <div class="read-full">
-    <a class="btn btn-info" href="/2016/03/10/apache-kudu-0-7-1-released.html">Read full post...</a>
-  </div>
-</article>
-
-
-
 <!-- Pagination links -->
 
 <nav>
@@ -250,6 +255,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -278,8 +285,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/blog/page/13/index.html b/blog/page/13/index.html
index 39855fe..3051446 100644
--- a/blog/page/13/index.html
+++ b/blog/page/13/index.html
@@ -117,6 +117,31 @@
 <!-- Articles -->
 <article>
   <header>
+    <h1 class="entry-title"><a href="/2016/03/10/apache-kudu-0-7-1-released.html">Apache Kudu (incubating) 0.7.1 released</a></h1>
+    <p class="meta">Posted 10 Mar 2016 by Jean-Daniel Cryans</p>
+  </header>
+  <div class="entry-content">
+    
+    <p>The Apache Kudu (incubating) team is happy to announce the release of Kudu
+0.7.1!</p>
+
+<p>This latest release fixes several bugs found during and after the release
+of 0.7.0. Special thanks are due to several community users who reported
+bugs fixed in this release:</p>
+
+
+    
+  </div>
+  <div class="read-full">
+    <a class="btn btn-info" href="/2016/03/10/apache-kudu-0-7-1-released.html">Read full post...</a>
+  </div>
+</article>
+
+
+
+<!-- Articles -->
+<article>
+  <header>
     <h1 class="entry-title"><a href="/2016/02/26/apache-kudu-0-7-0-released.html">Apache Kudu (incubating) 0.7.0 released</a></h1>
     <p class="meta">Posted 26 Feb 2016 by Todd Lipcon</p>
   </header>
@@ -155,6 +180,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -183,8 +210,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/blog/page/2/index.html b/blog/page/2/index.html
index c6f05fb..f02d359 100644
--- a/blog/page/2/index.html
+++ b/blog/page/2/index.html
@@ -117,6 +117,29 @@
 <!-- Articles -->
 <article>
   <header>
+    <h1 class="entry-title"><a href="/2018/12/11/call-for-posts.html">Call for Posts</a></h1>
+    <p class="meta">Posted 11 Dec 2018 by Attila Bukor</p>
+  </header>
+  <div class="entry-content">
+    
+    <p>Most of the posts in the Kudu blog have been written by the project’s
+committers and are either technical or news-like in nature. We’d like to hear
+how you’re using Kudu in production, in testing, or in your hobby project and
+we’d like to share it with the world!</p>
+
+
+    
+  </div>
+  <div class="read-full">
+    <a class="btn btn-info" href="/2018/12/11/call-for-posts.html">Read full post...</a>
+  </div>
+</article>
+
+
+
+<!-- Articles -->
+<article>
+  <header>
     <h1 class="entry-title"><a href="/2018/10/26/apache-kudu-1-8-0-released.html">Apache Kudu 1.8.0 Released</a></h1>
     <p class="meta">Posted 26 Oct 2018 by Attila Bukor</p>
   </header>
@@ -212,34 +235,6 @@
 
 
 
-<!-- Articles -->
-<article>
-  <header>
-    <h1 class="entry-title"><a href="/2018/07/10/instrumentation-in-kudu.html">Instrumentation in Apache Kudu</a></h1>
-    <p class="meta">Posted 10 Jul 2018 by Todd Lipcon</p>
-  </header>
-  <div class="entry-content">
-    
-    <p>Last week, the <a href="http://opentracing.io/">OpenTracing</a> community invited me to
-their monthly Google Hangout meetup to give an informal talk on tracing and
-instrumentation in Apache Kudu.</p>
-
-<p>While Kudu doesn’t currently support distributed tracing using OpenTracing,
-it does have quite a lot of other types of instrumentation, metrics, and
-diagnostics logging. The OpenTracing team was interested to hear about some of
-the approaches that Kudu has used, and so I gave a brief introduction to topics
-including:</p>
-
-
-    
-  </div>
-  <div class="read-full">
-    <a class="btn btn-info" href="/2018/07/10/instrumentation-in-kudu.html">Read full post...</a>
-  </div>
-</article>
-
-
-
 <!-- Pagination links -->
 
 <nav>
@@ -260,6 +255,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -288,8 +285,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/blog/page/3/index.html b/blog/page/3/index.html
index 37d79ba..ff5e886 100644
--- a/blog/page/3/index.html
+++ b/blog/page/3/index.html
@@ -117,6 +117,34 @@
 <!-- Articles -->
 <article>
   <header>
+    <h1 class="entry-title"><a href="/2018/07/10/instrumentation-in-kudu.html">Instrumentation in Apache Kudu</a></h1>
+    <p class="meta">Posted 10 Jul 2018 by Todd Lipcon</p>
+  </header>
+  <div class="entry-content">
+    
+    <p>Last week, the <a href="http://opentracing.io/">OpenTracing</a> community invited me to
+their monthly Google Hangout meetup to give an informal talk on tracing and
+instrumentation in Apache Kudu.</p>
+
+<p>While Kudu doesn’t currently support distributed tracing using OpenTracing,
+it does have quite a lot of other types of instrumentation, metrics, and
+diagnostics logging. The OpenTracing team was interested to hear about some of
+the approaches that Kudu has used, and so I gave a brief introduction to topics
+including:</p>
+
+
+    
+  </div>
+  <div class="read-full">
+    <a class="btn btn-info" href="/2018/07/10/instrumentation-in-kudu.html">Read full post...</a>
+  </div>
+</article>
+
+
+
+<!-- Articles -->
+<article>
+  <header>
     <h1 class="entry-title"><a href="/2018/03/23/apache-kudu-1-7-0-released.html">Apache Kudu 1.7.0 released</a></h1>
     <p class="meta">Posted 23 Mar 2018 by Grant Henke</p>
   </header>
@@ -217,31 +245,6 @@
 
 
 
-<!-- Articles -->
-<article>
-  <header>
-    <h1 class="entry-title"><a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a></h1>
-    <p class="meta">Posted 08 Sep 2017 by Dan Burkert</p>
-  </header>
-  <div class="entry-content">
-    
-    <p>The Apache Kudu team is happy to announce the release of Kudu 1.5.0!</p>
-
-<p>Apache Kudu 1.5.0 is a minor release which offers several new features,
-improvements, optimizations, and bug fixes.</p>
-
-<p>Highlights include:</p>
-
-
-    
-  </div>
-  <div class="read-full">
-    <a class="btn btn-info" href="/2017/09/08/apache-kudu-1-5-0-released.html">Read full post...</a>
-  </div>
-</article>
-
-
-
 <!-- Pagination links -->
 
 <nav>
@@ -262,6 +265,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -290,8 +295,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/blog/page/4/index.html b/blog/page/4/index.html
index d24dd42..df0510a 100644
--- a/blog/page/4/index.html
+++ b/blog/page/4/index.html
@@ -117,6 +117,31 @@
 <!-- Articles -->
 <article>
   <header>
+    <h1 class="entry-title"><a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a></h1>
+    <p class="meta">Posted 08 Sep 2017 by Dan Burkert</p>
+  </header>
+  <div class="entry-content">
+    
+    <p>The Apache Kudu team is happy to announce the release of Kudu 1.5.0!</p>
+
+<p>Apache Kudu 1.5.0 is a minor release which offers several new features,
+improvements, optimizations, and bug fixes.</p>
+
+<p>Highlights include:</p>
+
+
+    
+  </div>
+  <div class="read-full">
+    <a class="btn btn-info" href="/2017/09/08/apache-kudu-1-5-0-released.html">Read full post...</a>
+  </div>
+</article>
+
+
+
+<!-- Articles -->
+<article>
+  <header>
     <h1 class="entry-title"><a href="/2017/06/13/apache-kudu-1-4-0-released.html">Apache Kudu 1.4.0 released</a></h1>
     <p class="meta">Posted 13 Jun 2017 by Todd Lipcon</p>
   </header>
@@ -219,27 +244,6 @@
 
 
 
-<!-- Articles -->
-<article>
-  <header>
-    <h1 class="entry-title"><a href="/2016/11/15/weekly-update.html">Apache Kudu Weekly Update November 15th, 2016</a></h1>
-    <p class="meta">Posted 15 Nov 2016 by David Alves</p>
-  </header>
-  <div class="entry-content">
-    
-    <p>Welcome to the twenty-third edition of the Kudu Weekly Update. This weekly blog post
-covers ongoing development and news in the Apache Kudu project.</p>
-
-
-    
-  </div>
-  <div class="read-full">
-    <a class="btn btn-info" href="/2016/11/15/weekly-update.html">Read full post...</a>
-  </div>
-</article>
-
-
-
 <!-- Pagination links -->
 
 <nav>
@@ -260,6 +264,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -288,8 +294,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/blog/page/5/index.html b/blog/page/5/index.html
index 40dce11..7bbb493 100644
--- a/blog/page/5/index.html
+++ b/blog/page/5/index.html
@@ -117,6 +117,27 @@
 <!-- Articles -->
 <article>
   <header>
+    <h1 class="entry-title"><a href="/2016/11/15/weekly-update.html">Apache Kudu Weekly Update November 15th, 2016</a></h1>
+    <p class="meta">Posted 15 Nov 2016 by David Alves</p>
+  </header>
+  <div class="entry-content">
+    
+    <p>Welcome to the twenty-third edition of the Kudu Weekly Update. This weekly blog post
+covers ongoing development and news in the Apache Kudu project.</p>
+
+
+    
+  </div>
+  <div class="read-full">
+    <a class="btn btn-info" href="/2016/11/15/weekly-update.html">Read full post...</a>
+  </div>
+</article>
+
+
+
+<!-- Articles -->
+<article>
+  <header>
     <h1 class="entry-title"><a href="/2016/11/01/weekly-update.html">Apache Kudu Weekly Update November 1st, 2016</a></h1>
     <p class="meta">Posted 01 Nov 2016 by Todd Lipcon</p>
   </header>
@@ -207,28 +228,6 @@
 
 
 
-<!-- Articles -->
-<article>
-  <header>
-    <h1 class="entry-title"><a href="/2016/09/20/apache-kudu-1-0-0-released.html">Apache Kudu 1.0.0 released</a></h1>
-    <p class="meta">Posted 20 Sep 2016 by Todd Lipcon</p>
-  </header>
-  <div class="entry-content">
-    
-    <p>The Apache Kudu team is happy to announce the release of Kudu 1.0.0!</p>
-
-<p>This latest version adds several new features, including:</p>
-
-
-    
-  </div>
-  <div class="read-full">
-    <a class="btn btn-info" href="/2016/09/20/apache-kudu-1-0-0-released.html">Read full post...</a>
-  </div>
-</article>
-
-
-
 <!-- Pagination links -->
 
 <nav>
@@ -249,6 +248,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -277,8 +278,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/blog/page/6/index.html b/blog/page/6/index.html
index 68f9211..2abea6c 100644
--- a/blog/page/6/index.html
+++ b/blog/page/6/index.html
@@ -117,6 +117,28 @@
 <!-- Articles -->
 <article>
   <header>
+    <h1 class="entry-title"><a href="/2016/09/20/apache-kudu-1-0-0-released.html">Apache Kudu 1.0.0 released</a></h1>
+    <p class="meta">Posted 20 Sep 2016 by Todd Lipcon</p>
+  </header>
+  <div class="entry-content">
+    
+    <p>The Apache Kudu team is happy to announce the release of Kudu 1.0.0!</p>
+
+<p>This latest version adds several new features, including:</p>
+
+
+    
+  </div>
+  <div class="read-full">
+    <a class="btn btn-info" href="/2016/09/20/apache-kudu-1-0-0-released.html">Read full post...</a>
+  </div>
+</article>
+
+
+
+<!-- Articles -->
+<article>
+  <header>
     <h1 class="entry-title"><a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a></h1>
     <p class="meta">Posted 16 Sep 2016 by Andrew Wong</p>
   </header>
@@ -495,27 +517,6 @@
 
 
 
-<!-- Articles -->
-<article>
-  <header>
-    <h1 class="entry-title"><a href="/2016/08/16/weekly-update.html">Apache Kudu Weekly Update August 16th, 2016</a></h1>
-    <p class="meta">Posted 16 Aug 2016 by Todd Lipcon</p>
-  </header>
-  <div class="entry-content">
-    
-    <p>Welcome to the twentieth edition of the Kudu Weekly Update. This weekly blog post
-covers ongoing development and news in the Apache Kudu project.</p>
-
-
-    
-  </div>
-  <div class="read-full">
-    <a class="btn btn-info" href="/2016/08/16/weekly-update.html">Read full post...</a>
-  </div>
-</article>
-
-
-
 <!-- Pagination links -->
 
 <nav>
@@ -536,6 +537,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -564,8 +567,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/blog/page/7/index.html b/blog/page/7/index.html
index cb14fae..bce4ac8 100644
--- a/blog/page/7/index.html
+++ b/blog/page/7/index.html
@@ -117,6 +117,27 @@
 <!-- Articles -->
 <article>
   <header>
+    <h1 class="entry-title"><a href="/2016/08/16/weekly-update.html">Apache Kudu Weekly Update August 16th, 2016</a></h1>
+    <p class="meta">Posted 16 Aug 2016 by Todd Lipcon</p>
+  </header>
+  <div class="entry-content">
+    
+    <p>Welcome to the twentieth edition of the Kudu Weekly Update. This weekly blog post
+covers ongoing development and news in the Apache Kudu project.</p>
+
+
+    
+  </div>
+  <div class="read-full">
+    <a class="btn btn-info" href="/2016/08/16/weekly-update.html">Read full post...</a>
+  </div>
+</article>
+
+
+
+<!-- Articles -->
+<article>
+  <header>
     <h1 class="entry-title"><a href="/2016/08/08/weekly-update.html">Apache Kudu Weekly Update August 8th, 2016</a></h1>
     <p class="meta">Posted 08 Aug 2016 by Todd Lipcon</p>
   </header>
@@ -201,27 +222,6 @@
 
 
 
-<!-- Articles -->
-<article>
-  <header>
-    <h1 class="entry-title"><a href="/2016/07/11/weekly-update.html">Apache Kudu (incubating) Weekly Update July 11, 2016</a></h1>
-    <p class="meta">Posted 11 Jul 2016 by Jean-Daniel Cryans</p>
-  </header>
-  <div class="entry-content">
-    
-    <p>Welcome to the sixteenth edition of the Kudu Weekly Update. This weekly blog post
-covers ongoing development and news in the Apache Kudu (incubating) project.</p>
-
-
-    
-  </div>
-  <div class="read-full">
-    <a class="btn btn-info" href="/2016/07/11/weekly-update.html">Read full post...</a>
-  </div>
-</article>
-
-
-
 <!-- Pagination links -->
 
 <nav>
@@ -242,6 +242,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -270,8 +272,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/blog/page/8/index.html b/blog/page/8/index.html
index de3a072..b457a35 100644
--- a/blog/page/8/index.html
+++ b/blog/page/8/index.html
@@ -117,6 +117,27 @@
 <!-- Articles -->
 <article>
   <header>
+    <h1 class="entry-title"><a href="/2016/07/11/weekly-update.html">Apache Kudu (incubating) Weekly Update July 11, 2016</a></h1>
+    <p class="meta">Posted 11 Jul 2016 by Jean-Daniel Cryans</p>
+  </header>
+  <div class="entry-content">
+    
+    <p>Welcome to the sixteenth edition of the Kudu Weekly Update. This weekly blog post
+covers ongoing development and news in the Apache Kudu (incubating) project.</p>
+
+
+    
+  </div>
+  <div class="read-full">
+    <a class="btn btn-info" href="/2016/07/11/weekly-update.html">Read full post...</a>
+  </div>
+</article>
+
+
+
+<!-- Articles -->
+<article>
+  <header>
     <h1 class="entry-title"><a href="/2016/07/01/apache-kudu-0-9-1-released.html">Apache Kudu (incubating) 0.9.1 released</a></h1>
     <p class="meta">Posted 01 Jul 2016 by Todd Lipcon</p>
   </header>
@@ -207,30 +228,6 @@
 
 
 
-<!-- Articles -->
-<article>
-  <header>
-    <h1 class="entry-title"><a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a></h1>
-    <p class="meta">Posted 17 Jun 2016 by Mike Percy</p>
-  </header>
-  <div class="entry-content">
-    
-    <p>As Kudu marches toward its 1.0 release, which will include support for
-multi-master operation, we are working on removing old code that is no longer
-needed. One such piece of code is called LocalConsensus. Once LocalConsensus is
-removed, we will be using Raft consensus even on Kudu tables that have a
-replication factor of 1.</p>
-
-
-    
-  </div>
-  <div class="read-full">
-    <a class="btn btn-info" href="/2016/06/17/raft-consensus-single-node.html">Read full post...</a>
-  </div>
-</article>
-
-
-
 <!-- Pagination links -->
 
 <nav>
@@ -251,6 +248,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -279,8 +278,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/blog/page/9/index.html b/blog/page/9/index.html
index 41fa453..8f5dcb6 100644
--- a/blog/page/9/index.html
+++ b/blog/page/9/index.html
@@ -117,6 +117,30 @@
 <!-- Articles -->
 <article>
   <header>
+    <h1 class="entry-title"><a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a></h1>
+    <p class="meta">Posted 17 Jun 2016 by Mike Percy</p>
+  </header>
+  <div class="entry-content">
+    
+    <p>As Kudu marches toward its 1.0 release, which will include support for
+multi-master operation, we are working on removing old code that is no longer
+needed. One such piece of code is called LocalConsensus. Once LocalConsensus is
+removed, we will be using Raft consensus even on Kudu tables that have a
+replication factor of 1.</p>
+
+
+    
+  </div>
+  <div class="read-full">
+    <a class="btn btn-info" href="/2016/06/17/raft-consensus-single-node.html">Read full post...</a>
+  </div>
+</article>
+
+
+
+<!-- Articles -->
+<article>
+  <header>
     <h1 class="entry-title"><a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a></h1>
     <p class="meta">Posted 13 Jun 2016 by Jean-Daniel Cryans</p>
   </header>
@@ -210,27 +234,6 @@
 
 
 
-<!-- Articles -->
-<article>
-  <header>
-    <h1 class="entry-title"><a href="/2016/06/01/weekly-update.html">Apache Kudu (incubating) Weekly Update June 1, 2016</a></h1>
-    <p class="meta">Posted 01 Jun 2016 by Jean-Daniel Cryans</p>
-  </header>
-  <div class="entry-content">
-    
-    <p>Welcome to the eleventh edition of the Kudu Weekly Update. This weekly blog post
-covers ongoing development and news in the Apache Kudu (incubating) project.</p>
-
-
-    
-  </div>
-  <div class="read-full">
-    <a class="btn btn-info" href="/2016/06/01/weekly-update.html">Read full post...</a>
-  </div>
-</article>
-
-
-
 <!-- Pagination links -->
 
 <nav>
@@ -251,6 +254,8 @@
     <h3>Recent posts</h3>
     <ul>
     
+      <li> <a href="/2019/04/30/location-awareness.html">Location Awareness in Kudu</a> </li>
+    
       <li> <a href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">Fine-Grained Authorization with Apache Kudu and Impala</a> </li>
     
       <li> <a href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">Testing Apache Kudu Applications on the JVM</a> </li>
@@ -279,8 +284,6 @@
     
       <li> <a href="/2017/09/18/kudu-consistency-pt1.html">Consistency in Apache Kudu, Part 1</a> </li>
     
-      <li> <a href="/2017/09/08/apache-kudu-1-5-0-released.html">Apache Kudu 1.5.0 released</a> </li>
-    
     </ul>
   </div>
 </div>
diff --git a/feed.xml b/feed.xml
index 9f5cab6..df22fb5 100644
--- a/feed.xml
+++ b/feed.xml
@@ -1,4 +1,363 @@
-<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><generator uri="http://jekyllrb.com" version="2.5.3">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2019-04-22T12:52:58-05:00</updated><id>/</id><entry><title>Fine-Grained Authorization with Apache Kudu and Impala</title><link href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html" rel="alternate" type="text/html" title="Fine-Grained Authorization with Apache Kudu and Impala" /><published>2019-04-22T00:00:00-05:00</published><updated>2019-04-22T00:00:00-05:00</updated><id>/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala</id><content type="html" xml:base="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">&lt;p&gt;Note: This is a cross-post from the Cloudera Engineering Blog
+<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><generator uri="http://jekyllrb.com" version="2.5.3">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2019-04-30T09:02:32-07:00</updated><id>/</id><entry><title>Location Awareness in Kudu</title><link href="/2019/04/30/location-awareness.html" rel="alternate" type="text/html" title="Location Awareness in Kudu" /><published>2019-04-30T00:00:00-07:00</published><updated>2019-04-30T00:00:00-07:00</updated><id>/2019/04/30/location-awareness</id><content type="html" xml:base="/2019/04/30/location-awareness.html">&lt;p&gt;This post is about location awareness in Kudu. It gives an overview
+of the following:
+- principles of the design
+- restrictions of the current implementation
+- potential future enhancements and extensions&lt;/p&gt;
+
+&lt;!--more--&gt;
+
+&lt;h1 id=&quot;introduction&quot;&gt;Introduction&lt;/h1&gt;
+&lt;p&gt;Kudu supports location awareness starting with the 1.9.0 release. The
+initial implementation of location awareness in Kudu is built to satisfy the
+following requirement:&lt;/p&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;In a Kudu cluster consisting of multiple servers spread over several racks,
+place the replicas of a tablet in such a way that the tablet stays available
+even if all the servers in a single rack become unavailable.&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;A rack failure can occur when a hardware component shared among servers in the
+rack, such as a network switch or power supply, fails. More generally,
+replace ‘rack’ with any other aggregation of nodes (e.g., chassis, site,
+cloud availability zone, etc.) where some or all nodes in an aggregate become
+unavailable in case of a failure. This even applies to a datacenter if the
+network latency between datacenters is low. This is why we call the feature
+&lt;em&gt;location awareness&lt;/em&gt; and not &lt;em&gt;rack awareness&lt;/em&gt;.&lt;/p&gt;
+
+&lt;h1 id=&quot;locations-in-kudu&quot;&gt;Locations in Kudu&lt;/h1&gt;
+&lt;p&gt;In Kudu, a location is defined by a string that begins with a slash (&lt;code&gt;/&lt;/code&gt;) and
+consists of slash-separated tokens each of which contains only characters from
+the set &lt;code&gt;[a-zA-Z0-9_-.]&lt;/code&gt;. The components of the location string hierarchy
+should correspond to the physical or cloud-defined hierarchy of the deployed
+cluster, e.g. &lt;code&gt;/data-center-0/rack-09&lt;/code&gt; or &lt;code&gt;/region-0/availability-zone-01&lt;/code&gt;.&lt;/p&gt;
+
+&lt;p&gt;The design choice of using hierarchical paths for location strings is
+partially influenced by HDFS. The intention was to make it possible using
+the same locations as for existing HDFS nodes, because it’s common to deploy
+Kudu alongside HDFS. In addition, the hierarchical structure of location
+strings allows for interpretation of those in terms of common ancestry and
+relative proximity. As of now, Kudu does not exploit the hierarchical
+structure of the location except for the client’s logic to find the closest
+tablet server. However, we plan to leverage the hierarchical structure
+in future releases.&lt;/p&gt;
+
+&lt;h1 id=&quot;defining-and-assigning-locations&quot;&gt;Defining and assigning locations&lt;/h1&gt;
+&lt;p&gt;Kudu masters assign locations to tablet servers and clients.&lt;/p&gt;
+
+&lt;p&gt;Every Kudu master runs the location assignment procedure to assign a location
+to a tablet server when it registers. To determine the location for a tablet
+server, the master invokes an executable that takes the IP address or hostname
+of the tablet server and outputs the corresponding location string for the
+specified IP address or hostname. If the executable exits with non-zero exit
+status, that’s interpreted as an error and masters add corresponding error
+message about that into their logs. In case of tablet server registrations
+such outcome is deemed as a registration failure and the corresponding tablet
+server is not added into the master’s registry. The latter renders the tablet
+server unusable to Kudu clients since non-registered tablet servers are not
+discoverable to Kudu clients via &lt;code&gt;GetTableLocations&lt;/code&gt; RPC.&lt;/p&gt;
+
+&lt;p&gt;The master associates the produced location string with the registered tablet
+server and keeps it until the tablet server re-registers, which only occurs
+if the master or tablet server restarts. Masters use the assigned location
+information internally to make replica placement decisions, trying to place
+replicas evenly across locations and to keep tablets available in case all
+tablet servers in a single location fail (see
+&lt;a href=&quot;https://s.apache.org/location-awareness-design&quot;&gt;the design document&lt;/a&gt;
+for details). In addition, masters provide connected clients with
+the information on the client’s assigned location, so the clients can make
+informed decisions when they attempt to read from the closest tablet server.
+Kudu tablet servers themselves are location agnostic, at least for now,
+so the assigned location is not reported back to a registered tablet server.&lt;/p&gt;
+
+&lt;h1 id=&quot;the-location-aware-placement-policy-for-tablet-replicas-in-kudu&quot;&gt;The location-aware placement policy for tablet replicas in Kudu&lt;/h1&gt;
+&lt;p&gt;While placing replicas of tablets in location-aware cluster, Kudu uses a best
+effort approach to adhere to the following principle:
+- Spread replicas across locations so that the failure of tablet servers
+  in one location does not make tablets unavailable.&lt;/p&gt;
+
+&lt;p&gt;That’s referred to as the &lt;em&gt;replica placement policy&lt;/em&gt; or just &lt;em&gt;placement policy&lt;/em&gt;.
+In Kudu, both the initial placement of tablet replicas and the automatic
+re-replication are governed by that policy. As of now, that’s the only
+replica placement policy available in Kudu. The placement policy isn’t
+customizable and doesn’t have any configurable parameters.&lt;/p&gt;
+
+&lt;h1 id=&quot;automatic-re-replication-and-placement-policy&quot;&gt;Automatic re-replication and placement policy&lt;/h1&gt;
+&lt;p&gt;By design, keeping the target replication factor for tablets has higher
+priority than conforming to the replica placement policy. In other words,
+when bringing up tablet replicas to replace failed ones, Kudu uses a best-effort
+approach with regard to conforming to the constraints of the placement policy.
+Essentially, that means that if there isn’t a way to place a replica to conform
+with the placement policy, the system places the replica anyway. The resulting
+violation of the placement policy can be addressed later on when unreachable
+tablet servers become available again or the misconfiguration is addressed.
+As of now, to fix the resulting placement policy violations it’s necessary
+to run the CLI rebalancer tool manually (see below for details),
+but in future releases that might be done &lt;a href=&quot;https://issues.apache.org/jira/browse/KUDU-2780&quot;&gt;automatically in background&lt;/a&gt;.&lt;/p&gt;
+
+&lt;h1 id=&quot;an-example-of-location-aware-rebalancing&quot;&gt;An example of location-aware rebalancing&lt;/h1&gt;
+&lt;p&gt;This section illustrates what happens during each phase of the location-aware
+rebalancing process.&lt;/p&gt;
+
+&lt;p&gt;In the diagrams below, the larger outer boxes denote locations, and the
+smaller inner ones denote tablet servers. As for the real-world objects behind
+locations in this example, one might think of server racks with a shared power
+supply or a shared network switch. It’s assumed that no more than one tablet
+server is run at each node (i.e. machine) in a rack.&lt;/p&gt;
+
+&lt;p&gt;The first phase of the rebalancing process is about detecting violations and
+reinstating the placement policy in the cluster. In the diagram below, there
+are three locations defined: &lt;code&gt;/L0&lt;/code&gt;, &lt;code&gt;/L1&lt;/code&gt;, &lt;code&gt;/L2&lt;/code&gt;. Each location has two tablet
+servers. Table &lt;code&gt;A&lt;/code&gt; has the replication factor of three (RF=3) and consists of
+four tablets: &lt;code&gt;A0&lt;/code&gt;, &lt;code&gt;A1&lt;/code&gt;, &lt;code&gt;A2&lt;/code&gt;, &lt;code&gt;A3&lt;/code&gt;. Table &lt;code&gt;B&lt;/code&gt; has replication factor of five
+(RF=5) and consists of three tablets: &lt;code&gt;B0&lt;/code&gt;, &lt;code&gt;B1&lt;/code&gt;, &lt;code&gt;B2&lt;/code&gt;.&lt;/p&gt;
+
+&lt;p&gt;The distribution of the replicas for tablet &lt;code&gt;A0&lt;/code&gt; violates the placement policy.
+Why? Because replicas &lt;code&gt;A0.0&lt;/code&gt; and &lt;code&gt;A0.1&lt;/code&gt; constitute the majority of replicas
+(two out of three) and reside in the same location &lt;code&gt;/L0&lt;/code&gt;.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code&gt;         /L0                     /L1                    /L2
++-------------------+   +-------------------+  +-------------------+
+|   TS0      TS1    |   |   TS2      TS3    |  |   TS4      TS5    |
+| +------+ +------+ |   | +------+ +------+ |  | +------+ +------+ |
+| | A0.0 | | A0.1 | |   | | A0.2 | |      | |  | |      | |      | |
+| |      | | A1.0 | |   | | A1.1 | |      | |  | | A1.2 | |      | |
+| |      | | A2.0 | |   | | A2.1 | |      | |  | | A2.2 | |      | |
+| |      | | A3.0 | |   | | A3.1 | |      | |  | | A3.2 | |      | |
+| | B0.0 | | B0.1 | |   | | B0.2 | | B0.3 | |  | | B0.4 | |      | |
+| | B1.0 | | B1.1 | |   | | B1.2 | | B1.3 | |  | | B1.4 | |      | |
+| | B2.0 | | B2.1 | |   | | B2.2 | | B2.3 | |  | | B2.4 | |      | |
+| +------+ +------+ |   | +------+ +------+ |  | +------+ +------+ |
++-------------------+   +-------------------+  +-------------------+
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;The location-aware rebalancer should initiate movement either of &lt;code&gt;T0.0&lt;/code&gt; or
+&lt;code&gt;T0.1&lt;/code&gt; from &lt;code&gt;/L0&lt;/code&gt; to other location, so the resulting replica distribution would
+&lt;em&gt;not&lt;/em&gt; contain the majority of replicas in any single location. In addition to
+that, the rebalancer tool tries to evenly spread the load across all locations
+and tablet servers within each location. The latter narrows down the list
+of the candidate replicas to move: &lt;code&gt;A0.1&lt;/code&gt; is the best candidate to move from
+location &lt;code&gt;/L0&lt;/code&gt;, so location &lt;code&gt;/L0&lt;/code&gt; would not contain the majority of replicas
+for tablet &lt;code&gt;A0&lt;/code&gt;. The same principle dictates the target location and the target
+tablet server to receive &lt;code&gt;A0.1&lt;/code&gt;: that should be tablet server &lt;code&gt;TS5&lt;/code&gt; in the
+location &lt;code&gt;/L2&lt;/code&gt;. The result distribution of the tablet replicas after the move
+is represented in the diagram below.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code&gt;         /L0                     /L1                    /L2
++-------------------+   +-------------------+  +-------------------+
+|   TS0      TS1    |   |   TS2      TS3    |  |   TS4      TS5    |
+| +------+ +------+ |   | +------+ +------+ |  | +------+ +------+ |
+| | A0.0 | |      | |   | | A0.2 | |      | |  | |      | | A0.1 | |
+| |      | | A1.0 | |   | | A1.1 | |      | |  | | A1.2 | |      | |
+| |      | | A2.0 | |   | | A2.1 | |      | |  | | A2.2 | |      | |
+| |      | | A3.0 | |   | | A3.1 | |      | |  | | A3.2 | |      | |
+| | B0.0 | | B0.1 | |   | | B0.2 | | B0.3 | |  | | B0.4 | |      | |
+| | B1.0 | | B1.1 | |   | | B1.2 | | B1.3 | |  | | B1.4 | |      | |
+| | B2.0 | | B2.1 | |   | | B2.2 | | B2.3 | |  | | B2.4 | |      | |
+| +------+ +------+ |   | +------+ +------+ |  | +------+ +------+ |
++-------------------+   +-------------------+  +-------------------+
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;The second phase of the location-aware rebalancing is about moving tablet
+replicas across locations to make the locations’ load more balanced. For the
+number &lt;code&gt;S&lt;/code&gt; of tablet servers in a location and the total number &lt;code&gt;R&lt;/code&gt; of replicas
+in the location, the &lt;em&gt;load of the location&lt;/em&gt; is defined as &lt;code&gt;R/S&lt;/code&gt;.&lt;/p&gt;
+
+&lt;p&gt;At this stage all violations of the placement policy are already rectified. The
+rebalancer tool doesn’t attempt to make any moves which would violate the
+placement policy.&lt;/p&gt;
+
+&lt;p&gt;The load of the locations in the diagram above:
+- &lt;code&gt;/L0&lt;/code&gt;: 1/5
+- &lt;code&gt;/L1&lt;/code&gt;: 1/5
+- &lt;code&gt;/L2&lt;/code&gt;: 2/7&lt;/p&gt;
+
+&lt;p&gt;A possible distribution of the tablet replicas after the second phase is
+represented below. The result load of the locations:
+- &lt;code&gt;/L0&lt;/code&gt;: 2/9
+- &lt;code&gt;/L1&lt;/code&gt;: 2/9
+- &lt;code&gt;/L2&lt;/code&gt;: 2/9&lt;/p&gt;
+
+&lt;pre&gt;&lt;code&gt;         /L0                     /L1                    /L2
++-------------------+   +-------------------+  +-------------------+
+|   TS0      TS1    |   |   TS2      TS3    |  |   TS4      TS5    |
+| +------+ +------+ |   | +------+ +------+ |  | +------+ +------+ |
+| | A0.0 | |      | |   | | A0.2 | |      | |  | |      | | A0.1 | |
+| |      | | A1.0 | |   | | A1.1 | |      | |  | | A1.2 | |      | |
+| |      | | A2.0 | |   | | A2.1 | |      | |  | | A2.2 | |      | |
+| |      | | A3.0 | |   | | A3.1 | |      | |  | | A3.2 | |      | |
+| | B0.0 | |      | |   | | B0.2 | | B0.3 | |  | | B0.4 | | B0.1 | |
+| | B1.0 | | B1.1 | |   | |      | | B1.3 | |  | | B1.4 | | B2.2 | |
+| | B2.0 | | B2.1 | |   | | B2.2 | | B2.3 | |  | | B2.4 | |      | |
+| +------+ +------+ |   | +------+ +------+ |  | +------+ +------+ |
++-------------------+   +-------------------+  +-------------------+
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;The third phase of the location-aware rebalancing is about moving tablet
+replicas within each location to make the distribution of replicas even,
+both per-table and per-server.&lt;/p&gt;
+
+&lt;p&gt;See below for a possible replicas’ distribution in the example scenario
+after the third phase of the location-aware rebalancing successfully completes.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code&gt;         /L0                     /L1                    /L2
++-------------------+   +-------------------+  +-------------------+
+|   TS0      TS1    |   |   TS2      TS3    |  |   TS4      TS5    |
+| +------+ +------+ |   | +------+ +------+ |  | +------+ +------+ |
+| | A0.0 | |      | |   | |      | | A0.2 | |  | |      | | A0.1 | |
+| |      | | A1.0 | |   | | A1.1 | |      | |  | | A1.2 | |      | |
+| |      | | A2.0 | |   | | A2.1 | |      | |  | | A2.2 | |      | |
+| |      | | A3.0 | |   | | A3.1 | |      | |  | | A3.2 | |      | |
+| | B0.0 | |      | |   | | B0.2 | | B0.3 | |  | | B0.4 | | B0.1 | |
+| | B1.0 | | B1.1 | |   | |      | | B1.3 | |  | | B1.4 | | B1.2 | |
+| | B2.0 | | B2.1 | |   | | B2.2 | | B2.3 | |  | |      | | B2.4 | |
+| +------+ +------+ |   | +------+ +------+ |  | +------+ +------+ |
++-------------------+   +-------------------+  +-------------------+
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;h1 id=&quot;how-to-make-a-kudu-cluster-location-aware&quot;&gt;How to make a Kudu cluster location-aware&lt;/h1&gt;
+&lt;p&gt;To make a Kudu cluster location-aware, it’s necessary to set the
+&lt;code&gt;--location_mapping_cmd&lt;/code&gt; flag for Kudu master(s) and make the corresponding
+executable (binary or a script) available at the nodes where Kudu masters run.
+In case of multiple masters, it’s important to make sure that the location
+mappings stay the same regardless of the node where the location assignment
+command is running.&lt;/p&gt;
+
+&lt;p&gt;It’s recommended to have at least three locations defined in a Kudu
+cluster so that no location contains a majority of tablet replicas.
+With two locations or less it’s not possible to spread replicas
+of tablets with replication factor of three and higher such that no location
+contains a majority of replicas.&lt;/p&gt;
+
+&lt;p&gt;For example, running a Kudu cluster in a single datacenter &lt;code&gt;dc0&lt;/code&gt;, assign
+location &lt;code&gt;/dc0/rack0&lt;/code&gt; to tablet servers running at machines in the rack &lt;code&gt;rack0&lt;/code&gt;,
+&lt;code&gt;/dc0/rack1&lt;/code&gt; to tablet servers running at machines in the rack &lt;code&gt;rack1&lt;/code&gt;,
+and &lt;code&gt;/dc0/rack2&lt;/code&gt; to tablet servers running at machines in the rack &lt;code&gt;rack2&lt;/code&gt;.
+In a similar way, when running in cloud, assign location &lt;code&gt;/regionA/az0&lt;/code&gt;
+to tablet servers running in availability zone &lt;code&gt;az0&lt;/code&gt; of region &lt;code&gt;regionA&lt;/code&gt;,
+and &lt;code&gt;/regionA/az1&lt;/code&gt; to tablet servers running in zone &lt;code&gt;az1&lt;/code&gt; of the same region.&lt;/p&gt;
+
+&lt;h1 id=&quot;an-example-of-location-assignment-script-for-kudu&quot;&gt;An example of location assignment script for Kudu&lt;/h1&gt;
+&lt;pre&gt;&lt;code&gt;#!/bin/sh
+#
+# It&#39;s assumed a Kudu cluster consists of nodes with IPv4 addresses in the
+# private 192.168.100.0/32 subnet. The nodes are hosted in racks, where
+# each rack can contain at most 32 nodes. This results in 8 locations,
+# one location per rack.
+#
+# This example script maps IP addresses into locations assuming that RPC
+# endpoints of tablet servers are specified via IPv4 addresses. If tablet
+# servers&#39; RPC endpoints are specified using DNS hostnames (and that&#39;s how
+# it&#39;s done by default), the script should consume DNS hostname instead of
+# an IP address as an input parameter. Check the `--rpc_bind_addresses` and
+# `--rpc_advertised_addresses` command line flags of kudu-tserver for details.
+#
+# DISCLAIMER:
+#   This is an example Bourne shell script for Kudu location assignment. Please
+#   note it&#39;s just a toy script created with illustrative-only purpose.
+#   The error handling and the input validation are minimalistic. Also, the
+#   network topology choice, supportability and capacity planning aspects of
+#   this script might be sub-optimal if applied as-is for real-world use cases.
+
+set -e
+
+if [ $# -ne 1 ]; then
+  echo &quot;usage: $0 &amp;lt;ip_address&amp;gt;&quot;
+  exit 1
+fi
+
+ip_address=$1
+shift
+
+suffix=${ip_address##192.168.100.}
+if [ -z &quot;${suffix##*.*}&quot; ]; then
+  # An IP address from a non-controlled subnet: maps into the &#39;other&#39; location.
+  echo &quot;/other&quot;
+  exit 0
+fi
+
+# The mapping of the IP addresses
+if [ -z &quot;$suffix&quot; -o $suffix -lt 0 -o $suffix -gt 255 ]; then
+  echo &quot;ERROR: &#39;$ip_address&#39; is not a valid IPv4 address&quot;
+  exit 2
+fi
+
+if [ $suffix -eq 0 -o $suffix -eq 255 ]; then
+  echo &quot;ERROR: &#39;$ip_address&#39; is a 0xffffff00 IPv4 subnet address&quot;
+  exit 3
+fi
+
+if [ $suffix -lt 32 ]; then
+  echo &quot;/dc0/rack00&quot;
+elif [ $suffix -ge 32 -a $suffix -lt 64 ]; then
+  echo &quot;/dc0/rack01&quot;
+elif [ $suffix -ge 64 -a $suffix -lt 96 ]; then
+  echo &quot;/dc0/rack02&quot;
+elif [ $suffix -ge 96 -a $suffix -lt 128 ]; then
+  echo &quot;/dc0/rack03&quot;
+elif [ $suffix -ge 128 -a $suffix -lt 160 ]; then
+  echo &quot;/dc0/rack04&quot;
+elif [ $suffix -ge 160 -a $suffix -lt 192 ]; then
+  echo &quot;/dc0/rack05&quot;
+elif [ $suffix -ge 192 -a $suffix -lt 224 ]; then
+  echo &quot;/dc0/rack06&quot;
+else
+  echo &quot;/dc0/rack07&quot;
+fi
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;h1 id=&quot;reinstating-the-placement-policy-in-a-location-aware-kudu-cluster&quot;&gt;Reinstating the placement policy in a location-aware Kudu cluster&lt;/h1&gt;
+&lt;p&gt;As explained earlier, even if the initial placement of tablet replicas conforms
+to the placement policy, the cluster might get to a point where there are not
+enough tablet servers to place a new or a replacement replica. Ideally, such
+situations should be handled automatically: once there are enough tablet servers
+in the cluster or the misconfiguration is fixed, the placement policy should
+be reinstated. Currently, it’s possible to reinstate the placement policy using
+the &lt;code&gt;kudu&lt;/code&gt; CLI tool:&lt;/p&gt;
+
+&lt;p&gt;&lt;code&gt;sudo -u kudu kudu cluster rebalance &amp;lt;master_rpc_endpoints&amp;gt;&lt;/code&gt;&lt;/p&gt;
+
+&lt;p&gt;In the first phase, the location-aware rebalancing process tries to
+reestablish the placement policy. If that’s not possible, the tool
+terminates. Use the &lt;code&gt;--disable_policy_fixer&lt;/code&gt; flag to skip this phase and
+continue to the cross-location rebalancing phase.&lt;/p&gt;
+
+&lt;p&gt;The second phase is cross-location rebalancing, i.e. moving tablet replicas
+between different locations in attempt to spread tablet replicas among
+locations evenly, equalizing the loads of locations throughout the cluster.
+If the benefits of spreading the load among locations do not justify the cost
+of the cross-location replica movement, the tool can be instructed to skip the
+second phase of the location-aware rebalancing. Use the
+&lt;code&gt;--disable_cross_location_rebalancing&lt;/code&gt; command line flag for that.&lt;/p&gt;
+
+&lt;p&gt;The third phase is intra-location rebalancing, i.e. balancing the distribution
+of tablet replicas within each location as if each location is a cluster on its
+own. Use the &lt;code&gt;--disable_intra_location_rebalancing&lt;/code&gt; flag to skip this phase.&lt;/p&gt;
+
+&lt;h1 id=&quot;future-work&quot;&gt;Future work&lt;/h1&gt;
+&lt;p&gt;Having a CLI tool to reinstate placement policy is nice, but it would be great
+to run the location-aware rebalancing in background, automatically reinstating
+the placement policy and making tablet replica distribution even
+across a Kudu cluster.&lt;/p&gt;
+
+&lt;p&gt;In addition to that, there is a idea to make it possible to have
+multiple customizable placement policies in the system. As of now, there is
+a request to implement so-called ‘table pinning’, i.e. make it possible
+to specify placement policy where replicas of tablets of particular tables
+are placed only at nodes within the specified locations. The table pinning
+request is tracked by KUDU-2604 in Apache JIRA, see
+&lt;a href=&quot;https://issues.apache.org/jira/browse/KUDU-2604&quot;&gt;KUDU-2604&lt;/a&gt;.&lt;/p&gt;
+
+&lt;h1 id=&quot;references&quot;&gt;References&lt;/h1&gt;
+&lt;p&gt;[1] Location awareness in Kudu: &lt;a href=&quot;https://github.com/apache/kudu/blob/master/docs/design-docs/location-awareness.md&quot;&gt;design document&lt;/a&gt;&lt;/p&gt;
+
+&lt;p&gt;[2] A proposal for Kudu tablet server labeling: &lt;a href=&quot;https://issues.apache.org/jira/browse/KUDU-2604&quot;&gt;KUDU-2604&lt;/a&gt;&lt;/p&gt;
+
+&lt;p&gt;[3] Further improvement: &lt;a href=&quot;https://issues.apache.org/jira/browse/KUDU-2780&quot;&gt;automatic cluster rebalancing&lt;/a&gt;.&lt;/p&gt;</content><author><name>Alexey Serbin</name></author><summary>This post is about location awareness in Kudu. It gives an overview
+of the following:
+- principles of the design
+- restrictions of the current implementation
+- potential future enhancements and extensions</summary></entry><entry><title>Fine-Grained Authorization with Apache Kudu and Impala</title><link href="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html" rel="alternate" type="text/html" title="Fine-Grained Authorization with Apache Kudu and Impala" /><published>2019-04-22T00:00:00-07:00</published><updated>2019-04-22T00:00:00-07:00</updated><id>/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala</id><content type="html" xml:base="/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html">&lt;p&gt;Note: This is a cross-post from the Cloudera Engineering Blog
 &lt;a href=&quot;https://blog.cloudera.com/blog/2019/04/fine-grained-authorization-with-apache-kudu-and-impala/&quot;&gt;Fine-Grained Authorization with Apache Kudu and Impala&lt;/a&gt;&lt;/p&gt;
 
 &lt;p&gt;Apache Impala supports fine-grained authorization via Apache Sentry on all of the tables it
@@ -131,7 +490,7 @@
 authorization which enables blocking all access to Kudu directly except for the impala user and
 an optional whitelist of other trusted users. This post will describe how to use Apache Impala’s
 fine-grained authorization support along with Apache Kudu’s coarse-grained authorization to
-achieve a secure multi-tenant deployment.</summary></entry><entry><title>Testing Apache Kudu Applications on the JVM</title><link href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html" rel="alternate" type="text/html" title="Testing Apache Kudu Applications on the JVM" /><published>2019-03-19T00:00:00-05:00</published><updated>2019-03-19T00:00:00-05:00</updated><id>/2019/03/19/testing-apache-kudu-applications-on-the-jvm</id><content type="html" xml:base="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">&lt;p&gt;Note: This is a cross-post from the Cloudera Engineering Blog
+achieve a secure multi-tenant deployment.</summary></entry><entry><title>Testing Apache Kudu Applications on the JVM</title><link href="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html" rel="alternate" type="text/html" title="Testing Apache Kudu Applications on the JVM" /><published>2019-03-19T00:00:00-07:00</published><updated>2019-03-19T00:00:00-07:00</updated><id>/2019/03/19/testing-apache-kudu-applications-on-the-jvm</id><content type="html" xml:base="/2019/03/19/testing-apache-kudu-applications-on-the-jvm.html">&lt;p&gt;Note: This is a cross-post from the Cloudera Engineering Blog
 &lt;a href=&quot;https://blog.cloudera.com/blog/2019/03/testing-apache-kudu-applications-on-the-jvm/&quot;&gt;Testing Apache Kudu Applications on the JVM&lt;/a&gt;&lt;/p&gt;
 
 &lt;p&gt;Although the Kudu server is written in C++ for performance and efficiency, developers can write
@@ -356,7 +715,7 @@
 using a Kudu cluster without needing to build Kudu yourself, without any knowledge of C++,
 and without any complicated coordination around starting and stopping Kudu clusters for each test.
 This post describes how the new testing utilities work and how you can use them in your application
-tests.</summary></entry><entry><title>Apache Kudu 1.9.0 Released</title><link href="/2019/03/15/apache-kudu-1-9-0-release.html" rel="alternate" type="text/html" title="Apache Kudu 1.9.0 Released" /><published>2019-03-15T00:00:00-05:00</published><updated>2019-03-15T00:00:00-05:00</updated><id>/2019/03/15/apache-kudu-1-9-0-release</id><content type="html" xml:base="/2019/03/15/apache-kudu-1-9-0-release.html">&lt;p&gt;The Apache Kudu team is happy to announce the release of Kudu 1.9.0!&lt;/p&gt;
+tests.</summary></entry><entry><title>Apache Kudu 1.9.0 Released</title><link href="/2019/03/15/apache-kudu-1-9-0-release.html" rel="alternate" type="text/html" title="Apache Kudu 1.9.0 Released" /><published>2019-03-15T00:00:00-07:00</published><updated>2019-03-15T00:00:00-07:00</updated><id>/2019/03/15/apache-kudu-1-9-0-release</id><content type="html" xml:base="/2019/03/15/apache-kudu-1-9-0-release.html">&lt;p&gt;The Apache Kudu team is happy to announce the release of Kudu 1.9.0!&lt;/p&gt;
 
 &lt;p&gt;The new release adds several new features and improvements, including the
 following:&lt;/p&gt;
@@ -397,7 +756,7 @@
 &lt;a href=&quot;https://pypi.org/project/kudu-python/&quot;&gt;PyPI&lt;/a&gt;.&lt;/p&gt;</content><author><name>Andrew Wong</name></author><summary>The Apache Kudu team is happy to announce the release of Kudu 1.9.0!
 
 The new release adds several new features and improvements, including the
-following:</summary></entry><entry><title>Transparent Hierarchical Storage Management with Apache Kudu and Impala</title><link href="/2019/03/05/transparent-hierarchical-storage-management-with-apache-kudu-and-impala.html" rel="alternate" type="text/html" title="Transparent Hierarchical Storage Management with Apache Kudu and Impala" /><published>2019-03-05T00:00:00-06:00</published><updated>2019-03-05T00:00:00-06:00</updated><id>/2019/03/05/transparent-hierarchical-storage-management-with-apache-kudu-and-impala</id><content type="html" xml:base="/2019/03/05/transparent-hierarchical-storage-management-with-apache-kudu-and-impala.html">&lt;p&gt;Note: This is a cross-post from the Cloudera Engineering Blog
+following:</summary></entry><entry><title>Transparent Hierarchical Storage Management with Apache Kudu and Impala</title><link href="/2019/03/05/transparent-hierarchical-storage-management-with-apache-kudu-and-impala.html" rel="alternate" type="text/html" title="Transparent Hierarchical Storage Management with Apache Kudu and Impala" /><published>2019-03-05T00:00:00-08:00</published><updated>2019-03-05T00:00:00-08:00</updated><id>/2019/03/05/transparent-hierarchical-storage-management-with-apache-kudu-and-impala</id><content type="html" xml:base="/2019/03/05/transparent-hierarchical-storage-management-with-apache-kudu-and-impala.html">&lt;p&gt;Note: This is a cross-post from the Cloudera Engineering Blog
 &lt;a href=&quot;https://blog.cloudera.com/blog/2019/03/transparent-hierarchical-storage-management-with-apache-kudu-and-impala/&quot;&gt;Transparent Hierarchical Storage Management with Apache Kudu and Impala&lt;/a&gt;&lt;/p&gt;
 
 &lt;p&gt;When picking a storage option for an application it is common to pick a single
@@ -806,7 +1165,7 @@
 for a solution that allows you to leverage the best features of multiple storage
 options. This post describes the sliding window pattern using Apache Impala with data
 stored in Apache Kudu and Apache HDFS. With this pattern you get all of the benefits
-of multiple storage layers in a way that is transparent to users.</summary></entry><entry><title>Call for Posts</title><link href="/2018/12/11/call-for-posts.html" rel="alternate" type="text/html" title="Call for Posts" /><published>2018-12-11T00:00:00-06:00</published><updated>2018-12-11T00:00:00-06:00</updated><id>/2018/12/11/call-for-posts</id><content type="html" xml:base="/2018/12/11/call-for-posts.html">&lt;p&gt;Most of the posts in the Kudu blog have been written by the project’s
+of multiple storage layers in a way that is transparent to users.</summary></entry><entry><title>Call for Posts</title><link href="/2018/12/11/call-for-posts.html" rel="alternate" type="text/html" title="Call for Posts" /><published>2018-12-11T00:00:00-08:00</published><updated>2018-12-11T00:00:00-08:00</updated><id>/2018/12/11/call-for-posts</id><content type="html" xml:base="/2018/12/11/call-for-posts.html">&lt;p&gt;Most of the posts in the Kudu blog have been written by the project’s
 committers and are either technical or news-like in nature. We’d like to hear
 how you’re using Kudu in production, in testing, or in your hobby project and
 we’d like to share it with the world!&lt;/p&gt;
@@ -823,7 +1182,7 @@
 and post it to the blog for you.&lt;/p&gt;</content><author><name>Attila Bukor</name></author><summary>Most of the posts in the Kudu blog have been written by the project’s
 committers and are either technical or news-like in nature. We’d like to hear
 how you’re using Kudu in production, in testing, or in your hobby project and
-we’d like to share it with the world!</summary></entry><entry><title>Apache Kudu 1.8.0 Released</title><link href="/2018/10/26/apache-kudu-1-8-0-released.html" rel="alternate" type="text/html" title="Apache Kudu 1.8.0 Released" /><published>2018-10-26T00:00:00-05:00</published><updated>2018-10-26T00:00:00-05:00</updated><id>/2018/10/26/apache-kudu-1-8-0-released</id><content type="html" xml:base="/2018/10/26/apache-kudu-1-8-0-released.html">&lt;p&gt;The Apache Kudu team is happy to announce the release of Kudu 1.8.0!&lt;/p&gt;
+we’d like to share it with the world!</summary></entry><entry><title>Apache Kudu 1.8.0 Released</title><link href="/2018/10/26/apache-kudu-1-8-0-released.html" rel="alternate" type="text/html" title="Apache Kudu 1.8.0 Released" /><published>2018-10-26T00:00:00-07:00</published><updated>2018-10-26T00:00:00-07:00</updated><id>/2018/10/26/apache-kudu-1-8-0-released</id><content type="html" xml:base="/2018/10/26/apache-kudu-1-8-0-released.html">&lt;p&gt;The Apache Kudu team is happy to announce the release of Kudu 1.8.0!&lt;/p&gt;
 
 &lt;p&gt;The new release adds several new features and improvements, including the
 following:&lt;/p&gt;
@@ -862,7 +1221,7 @@
 &lt;a href=&quot;https://pypi.org/project/kudu-python/&quot;&gt;PyPI&lt;/a&gt;.&lt;/p&gt;</content><author><name>Attila Bukor</name></author><summary>The Apache Kudu team is happy to announce the release of Kudu 1.8.0!
 
 The new release adds several new features and improvements, including the
-following:</summary></entry><entry><title>Index Skip Scan Optimization in Kudu</title><link href="/2018/09/26/index-skip-scan-optimization-in-kudu.html" rel="alternate" type="text/html" title="Index Skip Scan Optimization in Kudu" /><published>2018-09-26T00:00:00-05:00</published><updated>2018-09-26T00:00:00-05:00</updated><id>/2018/09/26/index-skip-scan-optimization-in-kudu</id><content type="html" xml:base="/2018/09/26/index-skip-scan-optimization-in-kudu.html">&lt;p&gt;This summer I got the opportunity to intern with the Apache Kudu team at Cloudera.
+following:</summary></entry><entry><title>Index Skip Scan Optimization in Kudu</title><link href="/2018/09/26/index-skip-scan-optimization-in-kudu.html" rel="alternate" type="text/html" title="Index Skip Scan Optimization in Kudu" /><published>2018-09-26T00:00:00-07:00</published><updated>2018-09-26T00:00:00-07:00</updated><id>/2018/09/26/index-skip-scan-optimization-in-kudu</id><content type="html" xml:base="/2018/09/26/index-skip-scan-optimization-in-kudu.html">&lt;p&gt;This summer I got the opportunity to intern with the Apache Kudu team at Cloudera.
 My project was to optimize the Kudu scan path by implementing a technique called
 index skip scan (a.k.a. scan-to-seek, see section 4.1 in [1]). I wanted to share
 my experience and the progress we’ve made so far on the approach.&lt;/p&gt;
@@ -965,7 +1324,7 @@
 &lt;p&gt;&lt;a href=&quot;https://www.sqlite.org/optoverview.html#skipscan&quot;&gt;[3]&lt;/a&gt;: Skip Scan - SQLite&lt;/p&gt;</content><author><name>Anupama Gupta</name></author><summary>This summer I got the opportunity to intern with the Apache Kudu team at Cloudera.
 My project was to optimize the Kudu scan path by implementing a technique called
 index skip scan (a.k.a. scan-to-seek, see section 4.1 in [1]). I wanted to share
-my experience and the progress we’ve made so far on the approach.</summary></entry><entry><title>Simplified Data Pipelines with Kudu</title><link href="/2018/09/11/simplified-pipelines-with-kudu.html" rel="alternate" type="text/html" title="Simplified Data Pipelines with Kudu" /><published>2018-09-11T00:00:00-05:00</published><updated>2018-09-11T00:00:00-05:00</updated><id>/2018/09/11/simplified-pipelines-with-kudu</id><content type="html" xml:base="/2018/09/11/simplified-pipelines-with-kudu.html">&lt;p&gt;I’ve been working with Hadoop now for over seven years and fortunately, or unfortunately, have run
+my experience and the progress we’ve made so far on the approach.</summary></entry><entry><title>Simplified Data Pipelines with Kudu</title><link href="/2018/09/11/simplified-pipelines-with-kudu.html" rel="alternate" type="text/html" title="Simplified Data Pipelines with Kudu" /><published>2018-09-11T00:00:00-07:00</published><updated>2018-09-11T00:00:00-07:00</updated><id>/2018/09/11/simplified-pipelines-with-kudu</id><content type="html" xml:base="/2018/09/11/simplified-pipelines-with-kudu.html">&lt;p&gt;I’ve been working with Hadoop now for over seven years and fortunately, or unfortunately, have run
 across a lot of structured data use cases.  What we, at &lt;a href=&quot;https://phdata.io/&quot;&gt;phData&lt;/a&gt;, have found is
 that end users are typically comfortable with tabular data and prefer to access their data in a
 structured manner using tables.
@@ -1005,7 +1364,7 @@
 the backend.&lt;/p&gt;</content><author><name>Mac Noland</name></author><summary>I’ve been working with Hadoop now for over seven years and fortunately, or unfortunately, have run
 across a lot of structured data use cases.  What we, at phData, have found is
 that end users are typically comfortable with tabular data and prefer to access their data in a
-structured manner using tables.</summary></entry><entry><title>Getting Started with Kudu - an O’Reilly Title</title><link href="/2018/08/06/getting-started-with-kudu-an-oreilly-title.html" rel="alternate" type="text/html" title="Getting Started with Kudu - an O&#39;Reilly Title" /><published>2018-08-06T00:00:00-05:00</published><updated>2018-08-06T00:00:00-05:00</updated><id>/2018/08/06/getting-started-with-kudu-an-oreilly-title</id><content type="html" xml:base="/2018/08/06/getting-started-with-kudu-an-oreilly-title.html">&lt;p&gt;The following article by Brock Noland was reposted from the
+structured manner using tables.</summary></entry><entry><title>Getting Started with Kudu - an O’Reilly Title</title><link href="/2018/08/06/getting-started-with-kudu-an-oreilly-title.html" rel="alternate" type="text/html" title="Getting Started with Kudu - an O&#39;Reilly Title" /><published>2018-08-06T00:00:00-07:00</published><updated>2018-08-06T00:00:00-07:00</updated><id>/2018/08/06/getting-started-with-kudu-an-oreilly-title</id><content type="html" xml:base="/2018/08/06/getting-started-with-kudu-an-oreilly-title.html">&lt;p&gt;The following article by Brock Noland was reposted from the
 &lt;a href=&quot;https://www.phdata.io/getting-started-with-kudu/&quot;&gt;phData&lt;/a&gt;
 blog with their permission.&lt;/p&gt;
 
@@ -1068,39 +1427,4 @@
 capabilities to successfully implement complex Lambda architectures or even
 simply implement continuous ingest. Updating or deleting data, were simply a
 nightmare. General Data Protection Regulation (GDPR) would have been an extreme
-challenge at that time.</summary></entry><entry><title>Instrumentation in Apache Kudu</title><link href="/2018/07/10/instrumentation-in-kudu.html" rel="alternate" type="text/html" title="Instrumentation in Apache Kudu" /><published>2018-07-10T00:00:00-05:00</published><updated>2018-07-10T00:00:00-05:00</updated><id>/2018/07/10/instrumentation-in-kudu</id><content type="html" xml:base="/2018/07/10/instrumentation-in-kudu.html">&lt;p&gt;Last week, the &lt;a href=&quot;http://opentracing.io/&quot;&gt;OpenTracing&lt;/a&gt; community invited me to
-their monthly Google Hangout meetup to give an informal talk on tracing and
-instrumentation in Apache Kudu.&lt;/p&gt;
-
-&lt;p&gt;While Kudu doesn’t currently support distributed tracing using OpenTracing,
-it does have quite a lot of other types of instrumentation, metrics, and
-diagnostics logging. The OpenTracing team was interested to hear about some of
-the approaches that Kudu has used, and so I gave a brief introduction to topics
-including:
-&lt;!--more--&gt;
-- The Kudu &lt;a href=&quot;/docs/administration.html#_diagnostics_logging&quot;&gt;diagnostics log&lt;/a&gt;
-  which periodically logs metrics and stack traces.
-- The &lt;a href=&quot;/docs/troubleshooting.html#kudu_tracing&quot;&gt;process-wide tracing&lt;/a&gt;
-  support based on the open source tracing framework implemented by Google Chrome.
-- The &lt;a href=&quot;/docs/troubleshooting.html#kudu_tracing&quot;&gt;stack watchdog&lt;/a&gt;
-  which helps us find various latency outliers and issues in our libraries and
-  the Linux kernel.
-- &lt;a href=&quot;/docs/troubleshooting.html#heap_sampling&quot;&gt;Heap sampling&lt;/a&gt; support
-  which helps us understand unexpected memory usage.&lt;/p&gt;
-
-&lt;p&gt;If you’re interested in learning about these topics and more, check out the video recording
-below. My talk spans the first 34 minutes.&lt;/p&gt;
-
-&lt;iframe width=&quot;800&quot; height=&quot;500&quot; src=&quot;https://www.youtube.com/embed/qBXwKU6Ubjo?end=2058&amp;amp;start=23&quot;&gt;
-&lt;/iframe&gt;
-
-&lt;p&gt;If you have any questions about this content or about Kudu in general,
-&lt;a href=&quot;http://kudu.apache.org/community.html&quot;&gt;join the community&lt;/a&gt;&lt;/p&gt;</content><author><name>Todd Lipcon</name></author><summary>Last week, the OpenTracing community invited me to
-their monthly Google Hangout meetup to give an informal talk on tracing and
-instrumentation in Apache Kudu.
-
-While Kudu doesn’t currently support distributed tracing using OpenTracing,
-it does have quite a lot of other types of instrumentation, metrics, and
-diagnostics logging. The OpenTracing team was interested to hear about some of
-the approaches that Kudu has used, and so I gave a brief introduction to topics
-including:</summary></entry></feed>
+challenge at that time.</summary></entry></feed>
diff --git a/img/media-src/ApacheKudu-logo-2016-07.eps.gz b/img/media-src/ApacheKudu-logo-2016-07.eps.gz
new file mode 100644
index 0000000..f4f8dc0
--- /dev/null
+++ b/img/media-src/ApacheKudu-logo-2016-07.eps.gz
Binary files differ