Thanks for the status update, Mike 

28.08.2019, 16:48, "Michael Miklavcic" <michael.miklav...@gmail.com>:
> Update on current HDP upgrade progress.
>
> A separate DISCUSS thread has been spun up around how we should handle the
> upgrade, backwards compatibility issues, semantic versioning, new release,
> etc. here -
> https://lists.apache.org/thread.html/21e9caf80c0ec4d9db4cb44423befa87cd1e42d327860369a6a13273@%3Cdev.metron.apache.org%3E
>
> A few PRs have recently gone into the FB from Ryan Merriman
>
>    1. https://issues.apache.org/jira/browse/METRON-2169
>    2. https://issues.apache.org/jira/browse/METRON-2225
>    3. https://issues.apache.org/jira/browse/METRON-2224
>
> He's also currently making some progress towards the Hadoop upgrade, but
> will be afk for a bit, so this work is expected to be handed off in a
> branch - https://issues.apache.org/jira/browse/METRON-2232
>
> Nick Allen is currently working on reverting the 3 Hbase FB PRs. Ran into
> some merge conflicts with the Kafka PR, and hit some classpath issues.
>
> I merged master into the HBase PR for changing deprecated interfaces, but
> ran into some classpath trouble with another recent PR change. That's been
> resolved. Ran through a round of testing and all looks good. Looking for
> some help from Anand and Mohan in getting a good multi-node deployment test
> done on this PR before we merge it in. I've also reached out to Dale
> Richardson for some additional testing validation
> https://github.com/apache/metron/pull/1483
>
> We'll be looking to merge the current master branch into the FB in the next
> day or so and get the 3 PRs in the FB reverted. Once we have that settled
> down, we'll have hopefully been able to get PR 1483 into master, which
> should then be merged again into the FB. From there on, there's a bit of
> remaining work to polish off HBase. And then it's getting through the final
> Hadoop version upgrade with some final testing with Kerberos, etc.
>
> Best,
> Mike
>
> On Fri, Aug 23, 2019 at 10:52 AM Michael Miklavcic <
> michael.miklav...@gmail.com> wrote:
>
>>  Hi devs,
>>
>>  We've been at this a while now, and I want to share an update with you.
>>  Here's the current HDP 3.1 upgrade Jira again for reference -
>>  https://issues.apache.org/jira/browse/METRON-2088. Nick, Ryan, and I had
>>  a number of offline conversations in the past week discussing some of what
>>  has been learned during the upgrade as well as how to best address some of
>>  the feedback originating in the recent HBase PR reviews (
>>  https://github.com/apache/metron/pull/1470#issuecomment-521033037).
>>
>>  *Prolog*
>>
>>  As this discuss thread shows, there's little debate from the community
>>  regarding the need to upgrade to HDP 3.1 and our current version of Storm
>>  is being eol'ed (
>>  
>> https://lists.apache.org/thread.html/7dbac4e50159ec899d1965505a9844f503130b1526a0e577c705959c@%3Cdev.metron.apache.org%3E).
>>  Metron has been running on the same version of Hadoop ever since its
>>  graduation to a TLP a few years ago. While there have been numerous
>>  individual component/service upgrades: ElasticSearch, Solr, and Storm, to
>>  name a few, this is our first major platform-wide upgrade.
>>
>>  The biggest challenge we've run into so far has been dealing with the
>>  HBase client APIs that were deprecated in HBase 1.x and now removed in 2.x.
>>  We were previously able to depend on HTableInterface and HTables fully
>>  encapsulating the connection management logic, but this was decoupled in
>>  the new API. It is now left to the user to manage connection lifecycle.
>>  Nick Allen spent time exploring various options for how to move forward
>>  with new abstractions that would accommodate a new connection strategy as
>>  well as work within our existing Storm architecture. Fully extracting logic
>>  for managing HBase connections independent of the Tables proved to have
>>  dramatic ripple effects throughout the architecture (again, refer to
>>  https://github.com/apache/metron/pull/1470#issuecomment-521033037 for
>>  more details). We also encountered major changes in the core classes used
>>  by our MockHTable implementation used in the integration tests. These two
>>  problems resulted in interface changes that affected quite a bit of code.
>>
>>  Reflecting on what we learned from this refactoring push, we explored
>>  other options to reduce the overall surface area impacted by the API
>>  change. The main thrust of our work seems to hinge on how to deal with the
>>  new connection management problem. We looked at options for how to leverage
>>  the existing TableProvider abstraction and decided to try out a compromise
>>  approach that allows us to:
>>
>>     1. Upgrade as much of the API as possible in the current version of
>>     HBase against master
>>     2. Manage connections within the TableProvider abstraction - this
>>     would have an API feel that is similar to what had been encapsulated by 
>> the
>>     HTableInterfaces we rely on currently, and remove a large chunk of the 
>> code
>>     that had been necessary to finish the upgrade.
>>
>>  *Reducing Scope*
>>
>>  We have long-lived connections to HBase that don't need to be
>>  opened/closed and pooled in the traditional request/response lifecycle
>>  sense. We know at the time our application spins up how many processes and
>>  threads there will be - this is static for us. I put together a PR (
>>  https://issues.apache.org/jira/browse/METRON-2217) that migrates HTable
>>  and HTableInterface classes to the new Table API and encapsulates
>>  connection management within the TableProviders. We had some concerns about
>>  risks associated with managing the connections this way, as opposed to
>>  using a more robust connection management approach, so I reached out to the
>>  HBase community to get some guidance. The feedback we received suggests
>>  that managing our connections this way should be sufficient. And the HBase
>>  connection objects are threadsafe, to boot.
>>  
>> https://lists.apache.org/thread.html/6b83cd7548efb8c37899063affc97e4c5ce823a13359a49b477e3c07@%3Cdev.hbase.apache.org%3E
>>
>>  *A Revised Plan*
>>
>>  The alternative HBase client/connection approach is promising, and it
>>  greatly reduces the overall architectural impact we will need to absorb
>>  alongside a major upgrade. The following is my proposal after some coding
>>  experiments and numerous conversations with Nick Allen, Ryan Merriman,
>>  Casey Stella, Otto Fowler, and James Sirota.
>>
>>     1. Do as much refactoring in small chunks as possible in master. e.g.
>>     the first phase of the HBase API changes. Reducing the overall number of
>>     variables changing all at the same time in the same place should reduce 
>> the
>>     overall risk of the upgrade. Prove stability with what we can in master 
>> and
>>     the issues we run into in the FB should be easier to isolate and solve.
>>     2. Target the upgrade feature branch as being a place where we
>>     primarily have to deal with changes due to classpath problems. There will
>>     be some other necessary code changes, e.g. hbase coprocessor, however the
>>     changes should be well-isolated and narrower in scope.
>>     3. Ryan and I have had numerous conversations surrounding the Maven
>>     dependency classpath issues that frequently come up at runtime anytime 
>> even
>>     the smallest change to our dependency tree occurs. I won't go into those
>>     details now, but you can see the discussion and history here (
>>     https://github.com/apache/metron/pull/1436). While there's inherent
>>     risk in making big changes to our dep management, there is also a
>>     substantial upside - this PR makes finding classpath problems and solving
>>     them substantially easier. This PR is ready to go in master and should
>>     greatly speed up our ability to rectify and cp problems we encounter in 
>> the
>>     feature branch.
>>     4. Find an analog for our port of the MockHTable (
>>     
>> https://github.com/apache/metron/blob/master/metron-platform/metron-hbase/metron-hbase-common/src/test/java/org/apache/metron/hbase/mock/MockHTable.java)
>>  in
>>     HBase 2.0.2. Nick has been working on a POC around this alongside my work
>>     on the other API migration and he has been able to get to a point with 
>> the
>>     integration tests passing. We had originally hoped this could be landed 
>> in
>>     master, but the underlying low-level supporting classes have changed and
>>     are not be forwards compatible the way the Table interface
>>     and ConnectionFactory class are. We plan to land this in the feature 
>> branch.
>>     5. Manage component version changes in an HDP 3.1 profile that gets
>>     updated as PRs are submitted. This allows the modules to be upgraded on a
>>     per-component basis, while still compiling and allowing tests to run,
>>     without requiring a big bang all-or-nothing upgrade. We would then do a
>>     final reconciliation and deprecation of the old Hadoop versions and 
>> profile
>>     at the tail of the FB.
>>     https://issues.apache.org/jira/browse/METRON-2223
>>     6. Upgrade Kafka, Storm, Solr, and Zeppelin. PRs from Ryan are up in
>>     the feature branch now.
>>     7. Revert the HBase feature branch PRs that have already gone in. The
>>     new approach removes the need for the HBase client changes that have
>>     already gone in, so we should remove them before polishing off the HBase
>>     upgrade.
>>     8. Merge in master - including the Maven and HTable migration PRs
>>     9. Finish HBase upgrade: coprocessor, integration test changes, data
>>     management
>>     10. Upgrade Hadoop
>>     11. Final dependency reconciliation
>>     https://issues.apache.org/jira/browse/METRON-2223
>>     12. Acceptance testing
>>     13. Beers, Profit
>>
>>  I think I've covered the major tasks, but if I've missed anything please
>>  reach out.
>>
>>  Best,
>>  Mike Miklavcic
>>
>>  On Tue, Apr 23, 2019 at 8:18 AM Nick Allen <n...@nickallen.org> wrote:
>>
>>>  FYI - I opened a ticket to serve as an epic for this work and the feature
>>>  branch.
>>>
>>>  https://issues.apache.org/jira/browse/METRON-2088
>>>
>>>  On Mon, Apr 22, 2019 at 3:32 PM Michael Miklavcic <
>>>  michael.miklav...@gmail.com> wrote:
>>>
>>>  > +1 to starting a feature branch for this.
>>>  > +1 to removing our custom implementations if the newest revs are in fact
>>>  > stable now.
>>>  >
>>>  > Regarding the profile option - if it's possible to keep 2.6.5 for a bit
>>>  and
>>>  > not require separate branches or code trees, this is probably OK.
>>>  > Otherwise, I'm inclined to take the approach we've taken in the past
>>>  with
>>>  > every other upgrade and only support 1 version. I think we should
>>>  prepare
>>>  > users for the likelihood that if/when we cut over, there will be no more
>>>  > updates to 2.6.x.
>>>  >
>>>  > I talked through this a bit with Nick and Ryan Merriman offline. There
>>>  are
>>>  > a number of major version revs of components from HDP 2.6 to 3.x that
>>>  are
>>>  > likely to have backwards compatibility problems. HBase is a big one that
>>>  > comes to mind - I noticed the HTable interface was deprecated while
>>>  working
>>>  > through the coprocessor implementation, and Ryan found that it was
>>>  removed
>>>  > completely in the new version. That affects our integration tests as
>>>  well
>>>  > bc we have a rather large mock implementation of HBase in use that is
>>>  built
>>>  > around the removed API. We will either need to migrate to the new API or
>>>  > find alternative approach to integration testing with HBase.
>>>  >
>>>  > I'll let Nick add more detail in the Epic/Jira and feature branch plan,
>>>  but
>>>  > here is a sampling of some of what we can expect to require some work to
>>>  > upgrade:
>>>  >
>>>  > - Ambari - the current MPack is incompatible with Ambari 2.7.3,
>>>  however
>>>  > there isn't a breaking changes document, so we'll have to work
>>>  through
>>>  > this
>>>  > brute force or hopefully find some help from the Ambari community.
>>>  > - MaaS - YARN major change
>>>  > - PCAP - HDFS, Kafka
>>>  > - Indexing - HDFS, Solr
>>>  > - All topologies - Kafka
>>>  > - Stellar - HDFS, HBase
>>>  > - Enrichment - HBase
>>>  > - Enrichment Coprocessor (the enrichments listing) - HBase
>>>  > - Integration tests - Kafka and HBase have changed considerably.
>>>  > - UI, REST - Solr, HDFS, HBase
>>>  > - Knox
>>>  > - Kerberos (hopefully this is a kick-the-tires effort, though there
>>>  is
>>>  > some possible risk if Ambari and the individual components introduce
>>>  > changes here)
>>>  >
>>>  > Fortunately, Zookeeper appears to have stayed the same across versions.
>>>  It
>>>  > might be worthwhile to get a chart of the versions for each platform
>>>  added
>>>  > to the epic Jira for reference while performing this work.
>>>  >
>>>  > Best,
>>>  > Mike
>>>  >
>>>  >
>>>  > On Mon, Apr 22, 2019, 12:50 PM Nick Allen <n...@nickallen.org> wrote:
>>>  >
>>>  > > We currently support running Metron on an HDP 2.6.5
>>>  > > <
>>>  > >
>>>  >
>>>  
>>> https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.5/bk_release-notes/content/comp_versions.html
>>>  > > >
>>>  > > cluster.
>>>  > > I'd like to get Metron updated to run in an HDP 3.1.0
>>>  > > <
>>>  > >
>>>  >
>>>  
>>> https://docs.hortonworks.com/HDPDocuments/HDP3/HDP-3.1.0/release-notes/content/comp_versions.html
>>>  > > >
>>>  > > cluster.
>>>  > > This provides a number of significant updates to the core platform
>>>  > > components that we depend on like Kafka, HBase, Ambari, etc.
>>>  > >
>>>  > > ### Feature Branch
>>>  > >
>>>  > > I'd like to create a feature branch in which to do this. This will
>>>  take
>>>  > a
>>>  > > good amount of effort and multiple PRs. To avoid any impact to master
>>>  as
>>>  > we
>>>  > > progress through this, a feature branch would make sense.
>>>  > >
>>>  > > If you have concerns or interest in this effort, please speak up.
>>>  Here
>>>  > are
>>>  > > some relevant discussion points based on what I know so far.
>>>  > >
>>>  > > ### CentOS 7
>>>  > >
>>>  > > CentOS 6 RPMs are no longer distributed for HDP 3.1.0, only CentOS 7
>>>  > RPMs.
>>>  > > Because of this we will likely need to transition Full Dev over to
>>>  CentOS
>>>  > > 7. I don't see a downside to doing this since 6 is rather old and I
>>>  > assume
>>>  > > that most users run variants of 7 already anyways.
>>>  > >
>>>  > > ### HDP 2.6.5
>>>  > >
>>>  > > I'd like to try and make these changes backwards compatible with HDP
>>>  > 2.6.5
>>>  > > if possible, but only as long as that does not increase our ongoing
>>>  > > development burden.
>>>  > >
>>>  > > For example, if I can simply define a separate build profile for 3.1.0
>>>  > and
>>>  > > things are generally backwards compatible, then I'm all for
>>>  maintaining
>>>  > > support for 2.6.5. On the other hand, I would not want to go as far
>>>  as
>>>  > > maintaining separate master branches for each. In my mind the ongoing
>>>  > cost
>>>  > > there is too high.
>>>  > >
>>>  > > ### HDP 2.5.6
>>>  > >
>>>  > > There are some workaround in the code base that were introduced to
>>>  > support
>>>  > > HDP
>>>  > > 2.5.6
>>>  > > <
>>>  > >
>>>  >
>>>  
>>> https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.5.6/bk_release-notes/content/comp_versions.html
>>>  > > >
>>>  > > when
>>>  > > we moved to HDP 2.6.5. There are some workarounds specifically for
>>>  older
>>>  > > versions of Storm like 1.0.x. Rather than maintaining this going
>>>  forward,
>>>  > > I'd prefer we remove this technical debt and not support anything
>>>  older
>>>  > > than HDP 2.6.5.
>>>  > >
>>>  > >
>>>  > >
>>>  > >
>>>  > > Best,
>>>  > > Nick
>>>  > >
>>>  >

------------------- 
Thank you,

James Sirota
PMC- Apache Metron
jsirota AT apache DOT org

Reply via email to