[jira] [Comment Edited] (HBASE-28216) HDFS erasure coding support for table data dirs

2023-12-20 Thread Nihal Jain (Jira)


[ 
https://issues.apache.org/jira/browse/HBASE-28216?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17799206#comment-17799206
 ] 

Nihal Jain edited comment on HBASE-28216 at 12/20/23 11:34 PM:
---

Ah I deleted the comment thinking I am mistaken and creating noise, as it 
didn't fail when I checked out latest master. Possibly some change in my local 
which brought undefined constant error.

But later found the other test was failing since some time in flaky board and 
looked into it. I have made a fix for the test TestAdmin2, I still think the 
fix should be fine enough as the test is to just verify listing works good for 
decommissioning. But given the new context that RS count increased from 1 to 3, 
 makes me wonder why 3 servers got decommissioned if we are passing 1, see 
sample logs in PR. This could be some issue, will analyze more.

FYR HBASE-28275

 

 


was (Author: nihaljain.cs):
Ah I deleted the comment thinking I am mistaken and creating noise, as it 
didn't fail when I checked out latest master. Possibly some change in my local 
which brought undefined constant error.

But later found the other test was failing since some time in flaky board and 
looked into it. I have made a fix for the test TestAdmin2, I still think the 
fix should be fine enough as the test is to just verify listing works good for 
decommissioning. But given the new context that RS count increased from 3 to 1, 
makes me wonder why 3 servers got decommissioned if we are passing 1, see 
sample logs in PR. This could be some issue, will analyze more.

FYR HBASE-28275

 

 

> HDFS erasure coding support for table data dirs
> ---
>
> Key: HBASE-28216
> URL: https://issues.apache.org/jira/browse/HBASE-28216
> Project: HBase
>  Issue Type: New Feature
>Reporter: Bryan Beaudreault
>Assignee: Bryan Beaudreault
>Priority: Major
>  Labels: patch-available
>
> [Erasure 
> coding|https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSErasureCoding.html]
>  (EC) is a hadoop-3 feature which can drastically reduce storage 
> requirements, at the expense of locality. At my company we have a few hbase 
> clusters which are extremely data dense and take mostly write traffic, fewer 
> reads (cold data). We'd like to reduce the cost of these clusters, and EC is 
> a great way to do that since it can reduce replication related storage costs 
> by 50%.
> It's possible to enable EC policies on sub directories of HDFS. One can 
> manually set this with {{{}hdfs ec -setPolicy -path 
> /hbase/data/default/usertable -policy {}}}. This can work without any 
> hbase support.
> One problem with that is a lack of visibility by operators into which tables 
> might have EC enabled. I think this is where HBase can help. Here's my 
> proposal:
>  * Add a new TableDescriptor and ColumnDescriptor field ERASURE_CODING_POLICY
>  * In ModifyTableProcedure preflightChecks, if ERASURE_CODING_POLICY is set, 
> verify that the requested policy is available and enabled via 
> DistributedFileSystem.
> getErasureCodingPolicies().
>  * During ModifyTableProcedure, add a new state for 
> MODIFY_TABLE_SYNC_ERASURE_CODING_POLICY.
>  ** When adding or changing a policy, use DistributedFileSystem.
> setErasureCodingPolicy to sync it for the data and archive dir of that table 
> (or column in table)
>  ** When removing the property or setting it to empty, use 
> DistributedFileSystem.
> unsetErasureCodingPolicy to remove it from the data and archive dir.
> Since this new API is in hadoop-3 only, we'll need to add a reflection 
> wrapper class for managing the calls and verifying that the API is available. 
> We'll similarly do that API check in preflightChecks.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Comment Edited] (HBASE-28216) HDFS erasure coding support for table data dirs

2023-12-20 Thread Nihal Jain (Jira)


[ 
https://issues.apache.org/jira/browse/HBASE-28216?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17799175#comment-17799175
 ] 

Nihal Jain edited comment on HBASE-28216 at 12/20/23 9:18 PM:
--

Hey [~bbeaudreault] I think there are failures in hbase-shell after this 
commit. I see tests failing locally due to undefined constant. Also checked 
commit build is also failing. Mind having a look?


was (Author: nihaljain.cs):
Hey [~bbeaudreault] I think there are failures in hbase-shell after this 
commit. I see tests failing locally due to undefined constant. Also checked 
commit build os also failing. Mind having a look?

> HDFS erasure coding support for table data dirs
> ---
>
> Key: HBASE-28216
> URL: https://issues.apache.org/jira/browse/HBASE-28216
> Project: HBase
>  Issue Type: New Feature
>Reporter: Bryan Beaudreault
>Assignee: Bryan Beaudreault
>Priority: Major
>  Labels: patch-available
>
> [Erasure 
> coding|https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSErasureCoding.html]
>  (EC) is a hadoop-3 feature which can drastically reduce storage 
> requirements, at the expense of locality. At my company we have a few hbase 
> clusters which are extremely data dense and take mostly write traffic, fewer 
> reads (cold data). We'd like to reduce the cost of these clusters, and EC is 
> a great way to do that since it can reduce replication related storage costs 
> by 50%.
> It's possible to enable EC policies on sub directories of HDFS. One can 
> manually set this with {{{}hdfs ec -setPolicy -path 
> /hbase/data/default/usertable -policy {}}}. This can work without any 
> hbase support.
> One problem with that is a lack of visibility by operators into which tables 
> might have EC enabled. I think this is where HBase can help. Here's my 
> proposal:
>  * Add a new TableDescriptor and ColumnDescriptor field ERASURE_CODING_POLICY
>  * In ModifyTableProcedure preflightChecks, if ERASURE_CODING_POLICY is set, 
> verify that the requested policy is available and enabled via 
> DistributedFileSystem.
> getErasureCodingPolicies().
>  * During ModifyTableProcedure, add a new state for 
> MODIFY_TABLE_SYNC_ERASURE_CODING_POLICY.
>  ** When adding or changing a policy, use DistributedFileSystem.
> setErasureCodingPolicy to sync it for the data and archive dir of that table 
> (or column in table)
>  ** When removing the property or setting it to empty, use 
> DistributedFileSystem.
> unsetErasureCodingPolicy to remove it from the data and archive dir.
> Since this new API is in hadoop-3 only, we'll need to add a reflection 
> wrapper class for managing the calls and verifying that the API is available. 
> We'll similarly do that API check in preflightChecks.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Comment Edited] (HBASE-28216) HDFS erasure coding support for table data dirs

2023-11-22 Thread Wei-Chiu Chuang (Jira)


[ 
https://issues.apache.org/jira/browse/HBASE-28216?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17788857#comment-17788857
 ] 

Wei-Chiu Chuang edited comment on HBASE-28216 at 11/22/23 6:35 PM:
---

No that's fine. We're pursuing that in a separate branch HBASE-27740.
(reminder to myself: finish review HBASE-27769 today)

I was under the impression that setErasureCodingPolicy requires HDFS admin user 
privilege. But checking the code again looks like it requires just the write 
privilege of that directory.


We recently added EC support in Apache Impala (check out Cloudera doc 
https://docs.cloudera.com/cdw-runtime/1.5.1/impala-reference/topics/impala-ec-policies.html
 the doc talks about Ozone EC but it works the same way for HDFS EC) 
IMPALA-11476 but we did not add the support for Impala to update table EC 
properties. It would be interesting to start thinking about giving applications 
more control over EC policies.


was (Author: jojochuang):
No that's fine. We're pursuing that in a separate branch HBASE-27740.
(reminder to myself: finish review HBASE-27769 today)

I was under the impression that setErasureCodingPolicy requires HDFS admin user 
privilege. But checking the code again looks like it requires just the write 
privilege of that directory.


We recently added EC support in Apache Impala (check out Cloudera doc 
https://docs.cloudera.com/cdw-runtime/1.5.1/impala-reference/topics/impala-ec-policies.html
 the doc talks about Ozone EC but it works the same way for HDFS EC) but we did 
not add the support for Impala to update table EC properties.

> HDFS erasure coding support for table data dirs
> ---
>
> Key: HBASE-28216
> URL: https://issues.apache.org/jira/browse/HBASE-28216
> Project: HBase
>  Issue Type: New Feature
>Reporter: Bryan Beaudreault
>Priority: Major
>
> [Erasure 
> coding|https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSErasureCoding.html]
>  (EC) is a hadoop-3 feature which can drastically reduce storage 
> requirements, at the expense of locality. At my company we have a few hbase 
> clusters which are extremely data dense and take mostly write traffic, fewer 
> reads (cold data). We'd like to reduce the cost of these clusters, and EC is 
> a great way to do that since it can reduce replication related storage costs 
> by 50%.
> It's possible to enable EC policies on sub directories of HDFS. One can 
> manually set this with {{{}hdfs ec -setPolicy -path 
> /hbase/data/default/usertable -policy {}}}. This can work without any 
> hbase support.
> One problem with that is a lack of visibility by operators into which tables 
> might have EC enabled. I think this is where HBase can help. Here's my 
> proposal:
>  * Add a new TableDescriptor and ColumnDescriptor field ERASURE_CODING_POLICY
>  * In ModifyTableProcedure preflightChecks, if ERASURE_CODING_POLICY is set, 
> verify that the requested policy is available and enabled via 
> DistributedFileSystem.
> getErasureCodingPolicies().
>  * During ModifyTableProcedure, add a new state for 
> MODIFY_TABLE_SYNC_ERASURE_CODING_POLICY.
>  ** When adding or changing a policy, use DistributedFileSystem.
> setErasureCodingPolicy to sync it for the data and archive dir of that table 
> (or column in table)
>  ** When removing the property or setting it to empty, use 
> DistributedFileSystem.
> unsetErasureCodingPolicy to remove it from the data and archive dir.
> Since this new API is in hadoop-3 only, we'll need to add a reflection 
> wrapper class for managing the calls and verifying that the API is available. 
> We'll similarly do that API check in preflightChecks.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)