Hi Team, I agree with Thomas. The main focus of this proposal was to provide a UI layer using existing REST APIs. I think we should first focus on providing a meaningful UI served by AM to user using the same existing REST APIs.
If in general, there is a agreement for the proposal, I can proceed with creating a JIRA and feature branch for the same. Thanks, Chinmay. On Wed, Jun 13, 2018 at 12:21 AM Thomas Weise <t...@apache.org> wrote: > Looks like there is some disconnect in this thread, a few replies express > concerns that the proposal IMO doesn't imply. > > There is already a REST API that backs all of the CLI functionality. Modern > UIs run in the browser, and so what was proposed (unless I misunderstood) > would be based on the same REST API and nothing extra. The only additional > thing the AM has to do is serve static files. And AFAIK it would actually > simplify the UI implementation when files and REST API have the same > origin. > > To me where files are coming from is actually a smaller piece and something > that can be augmented. But before proposing solutions outside of Apex or > additional deployment requirements, please consider the user experience. It > should be really simple to setup and use the UI. > > I would expect that a large part of the discussion evolves around the UI > functionality that helps the target persona. > > Thanks, > Thomas > > On Tue, Jun 12, 2018, 8:05 PM Shubhrajyoti Mohapatra < > sjmohapat...@gmail.com> > wrote: > > > Hi Community, > > > > I would like to propose a slightly different approach on having an UI for > > Apex. > > > > The details are below: > > > > 1. This involves having an external web-server installed along side of > > apexCli. We will basically mimic all the functionalities that apexCli > > currently provides. > > 2. We will develop the necessary REST APIs for fetch/update operations > > which apexCli currently supports. > > 3. Because most of the information and operations needed by a typical > > user are already there in apexCli, it will of great help to end users > > and > > which may increase the adoption rate. > > > > About Chinmay's proposal of having the STRAM hosting the apps, please > find > > my comments below: > > > > 1. It may increase load on STRAM if we were to provide real time > display > > of information. I am aware that apexCli fetches info from STRAM apis > but > > continuous polling can cause extra over-head. > > 2. The UI will have limited scope for the particular application. > Users > > would definitely love to have a comprehensive UI for the management of > > Apex > > Apps as a whole. > > 3. UI might be able to affect the whole application through STRAM > hence > > giving direct access to STRAM APIs might not be good idea. > > 4. Because STRAM can't have a comprehensive UI hosted inside, anyways > we > > will have to develop an external one. > > > > So I would like propose the plan on action like this. > > > > 1. We develop the wrapper UI for apexCli in the first phase and give > > user all the management options as REST APIs. > > 2. If some of information we require are not in the current apexCli > > implementation, we can add those feature to apexCli and if required to > > STRAM APIs in subsequent phases. > > 3. In future we can even remove the REST server from STRAM if we could > > provide something like MetricsStore functionality which was there in > > DataTorrent RTS. > > > > -- > > Thanks and Regards, > > Shubhrajyoti Mohapatra > > > > > > > > > > On Tue, Jun 12, 2018 at 2:49 AM Vlad Rozov <vro...@apache.org> wrote: > > > > > IMO it will be hard to provide UI that meets everyone expectation. An > > > external webUI can serve two goals > > > > > > 1. provide reference UI implementation > > > 2. ensure that REST API have all necessary entry points > > > > > > by embedding webUI directly into stram it will be tempting to shortcut > > > some calls to use stram classes directly. > > > > > > Thank you, > > > > > > Vlad > > > > > > On 6/11/18 12:18, Pramod Immaneni wrote: > > > > I too think that a comprehensive UI works better standalone but given > > > that > > > > stram already runs a webapp server, provides web services and RM > > > provides a > > > > proxy with mapped url space for it, we can extend stram to provide > > better > > > > visual output. Overall I am +1 on the idea. > > > > > > > > On Mon, Jun 11, 2018 at 8:59 AM Vlad Rozov <vro...@apache.org> > wrote: > > > > > > > >> Clarification: I am -0 on making UI part of the stram. I am +1 on > > > >> providing reference webUI application outside of the stram. > > > >> > > > >> Thank you, > > > >> > > > >> Vlad > > > >> > > > >> On 6/9/18 07:05, Vlad Rozov wrote: > > > >>> -0: stram provides REST API to query runtime information and IMO > this > > > >>> is sufficient to build an external webUI application(s). > > > >>> > > > >>> Thank you, > > > >>> > > > >>> Vlad > > > >>> > > > >>> On 6/6/18 11:17, Ambarish Pande wrote: > > > >>>> +1 For this feature. It would be really helpfull for users to > > > >>>> visualize all > > > >>>> this information and the DAG. > > > >>>> > > > >>>> +1 for ReactJS + MaterialUI > > > >>>> A great choice, given its flexibility and performance. > > > >>>> > > > >>>> I would like to contribute to this effort. > > > >>>> > > > >>>> On Wed, 6 Jun 2018 at 8:13 PM, Chinmay Kolhatkar < > > chin...@apache.org> > > > >>>> wrote: > > > >>>> > > > >>>>> Hi Community, > > > >>>>> > > > >>>>> I want to propose a feature in apex-core to have a UI component > in > > > >>>>> stram. > > > >>>>> This is influenced by how basic runtime information is shown on > UI > > by > > > >>>>> spark. > > > >>>>> > > > >>>>> This includes following features: > > > >>>>> 1. Webpage will be hosted by stram and will be available for user > > to > > > >>>>> view > > > >>>>> in one of the two ways (I'll prefer approach b): > > > >>>>> a. Hosted on a static port in which case we'll need to add a > > new > > > >>>>> servlet > > > >>>>> to stram > > > >>>>> b. The webpage will be hosted on the same port as that of > > stram > > > >>>>> webservice but at a different path. Say, http:// > > > >>>>> <stram_host>:<webservice_port>/ui > > > >>>>> > > > >>>>> 2. The webpage will be a static page and depending on the > framework > > > we > > > >>>>> chose, it can show the realtime metric data from stram. > > > >>>>> > > > >>>>> 3. There will be a categories of readonly information (maybe > > > >>>>> dynamically > > > >>>>> changing) that will be shown on the UI: > > > >>>>> a. Application level information > > > >>>>> i. Status > > > >>>>> ii. Number of tuples processed/emitted > > > >>>>> iii. Start time/ Running span > > > >>>>> iv. Stram events > > > >>>>> v. Total memory used/available > > > >>>>> vi. Number of container allocated/deployed > > > >>>>> v. Other information which is available in stram > > > >>>>> b. Logical Operator level information > > > >>>>> i. Status > > > >>>>> ii. Number of tuples processed/emitted > > > >>>>> iii. Important events related to logical operator > > > >>>>> iv. Container list in which the operator is deployed > > > >>>>> v. Any other information available in stram > > > >>>>> vi. Logical DAG View > > > >>>>> c. Container level information > > > >>>>> i. Status > > > >>>>> ii. Number of tuples processed/emitted > > > >>>>> iii. Important events related to logical operator > > > >>>>> iv. Any other information available in stram > > > >>>>> v. Physical DAG View > > > >>>>> > > > >>>>> 4. In second phase, there will be control related operations > > allowed > > > >>>>> from > > > >>>>> the UI, as follows: > > > >>>>> a. Stop/Kill application > > > >>>>> b. Stop/Kill containers > > > >>>>> c. Stack trace dump of containers > > > >>>>> d. Logs related? > > > >>>>> d. etc...?? > > > >>>>> > > > >>>>> The above implementation can be done in phases as follows: > > > >>>>> 1. Have webpage display application level information only > > > (read-only). > > > >>>>> Static display first (i.e. page needs to refresh to see latest > > > >>>>> data), next > > > >>>>> dynamically changing data. > > > >>>>> 2. Have jenkins build tools updated as needed by UI framework. > > > >>>>> 3. Update the backend (stram) to serve the UI pages > > > >>>>> 3. Extend the webage to display logical operator information. > > > >>>>> 4. Extend the webage to display physical operator information > > > >>>>> 5. Implement control operations on UI. > > > >>>>> > > > >>>>> > > > >>>>> To implement above functionality, I propose ReactJS as UI > framework > > > and > > > >>>>> MaterialUI (based on Google's material design) for > > theme/controls/CSS > > > >>>>> support. > > > >>>>> > > > >>>>> Please let me know what you think about the same. > > > >>>>> > > > >>>>> Also, please let know if anyone is interested in contributing to > > this > > > >>>>> feature. > > > >>>>> > > > >>>>> Thanks, > > > >>>>> Chinmay. > > > >>>>> > > > >> > > > > > > > > >