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

Jesse Yates commented on HBASE-5977:
------------------------------------

I'd like to avoid creating a ton of packages (or the tendancy to have lots of 
packages) as I see it more as a rough separation of concerns (like how hadoop 
has dfs, mr, and common) versus the finer grained functionality separation 
(where hadoop-common has 20+ modules) as each module means a new jar. 

In the short to medium term, I would like to see the following packages 
materialize out the existing single package:
* hbase-assemble  - necessary for building
* hbase-common - common functionality used between the client and server
* hbase-client - functionality just for the client. A general hbase client 
would just need hbase-common and hbase-client to run
* hbase-server - all server side functionality, including regionserver and 
master (this could even be separated, but not necessarily)

Other potential things that came up earlier in the process that seemed useful:
* hbase-security - shouldn't be needed if we roll in security, but still an 
option
* hbase-it - for a single place for higher level integration tests (all those 
using the mini-cluster) to avoid the maven test-jar dependency issue discussed 
in HBASE-4336

Any more granularity that these pacakges tends to be a bit of a mess and rarely 
all that useful. Instead, a lot of times its really better to just have a 
config option to specify the right class and load that from the path. The jar 
approach is much more heavy weight and only useful for wholesale replacements 
for which there are multiple (possibly competing) implementations. For 
instance, async-hbase could roll up into a hbase-client.jar and be a drop-in 
replacement in your install, but you wouldn't have a whole log-cleaner jar for 
switching the log cleaner class to use.

                
> Usage of modules 
> -----------------
>
>                 Key: HBASE-5977
>                 URL: https://issues.apache.org/jira/browse/HBASE-5977
>             Project: HBase
>          Issue Type: Brainstorming
>          Components: build
>    Affects Versions: 0.96.0
>            Reporter: Jesse Yates
>   Original Estimate: 336h
>  Remaining Estimate: 336h
>
> With HBASE-4336, HBase will have the ability to add multiple modules for 
> different aspects of the codebase (less tests, see HBASE-4336 for details). 
> We need to set a policy for when modules should be used versus putting the 
> code into a single existing module or dispersed across modules. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to