I have been experimenting with local reads. For me, enabling did not help
improve read performance at all, I get the same performance either way. I can
see in the data node logs it is passing back the local path, so it is enabled
properly.
Perhaps the benefits of local reads are dependent on the type of data and the
workload? In my test I'm scanning through the entire table via a map reduce
job. It's a wide table with maybe 20k columns per row on average. I have
scanner caching set to 10.
My read performance is about 10% of the disk max read throughput, i.e. my disks
can get 100 mb/sec tested with hdparm and scan performance is about 10 mb/sec.
Not too bad I suppose.
On Jan 8, 2012, at 6:35 PM, Zizon Qiu wrote:
> It should be the same as hbase daemon user.
>
> the check perform by datanode are implement as follow, inside a RPC call.
> the "current user" refer to the remote user,in this case, should the same
> as your hbase user
>
> private void checkBlockLocalPathAccess() throws IOException {
> checkKerberosAuthMethod("getBlockLocalPathInfo()");
> *String currentUser =
> UserGroupInformation.getCurrentUser().getShortUserName();*
> if (!*currentUser*.equals(this.userWithLocalPathAccess)) {
> throw new AccessControlException(
> "Can't continue with getBlockLocalPathInfo() "
> + "authorization. The user " + currentUser
> + " is not allowed to call getBlockLocalPathInfo");
> }
> }
>