Apache Hop 2.0
hop.apache.org
hop.apache.org
Here too, I understood Hop's purpose only after seeing the screenshots on secondary pages like https://hop.apache.org/manual/latest/getting-started/hop-gui.... Abstract statements like "aims to facilitate all aspects of data and metadata orchestration" in the front page, or even in the "What is Hop?" doc, didn't help.
Now at least I know a bit more.
"Apache Hop, short for Hop Orchestration Platform, is a data orchestration and data engineering platform that aims to facillitate all aspects of data and metadata orchestration. Hop lets you focus on the problem you’re trying to solve without technology getting in the way"
What is 'data orchestration'? Ditto 'data engineering platform'?
'facillitate all aspects of data and metadata orchestration' What the hell does this even mean.
'Hop lets you focus on the problem you’re trying to solve' so what problem do you think I'm trying to solve?
It's just so bizarre, it's like language meaning has separated from language itself like layers of plywood left in the rain. And there is no wikipedia page to help out.
> Apache Hop, short for Hop Orchestration Platform, is a data orchestration and data engineering platform that aims to facillitate all aspects of data and metadata orchestration. Hop lets you focus on the problem you’re trying to solve without technology getting in the way. Simple tasks should be easy, complex tasks need to be possible.
> Hop allows data professionals to work visually, using metadata to describe how data should be processed. Visual design enables data developers to focus on what they want to do instead of how that task needs to be done. This focus on the task at hand lets Hop developers be more productive than they would be when writing code."
Are these really often useful?
From looking at the Apache HOP docs, it doesn't look like they have changed the UI much (if at all). I wonder if they at least made it less buggy.
I'd assume Airflow is the most prevalent, but there's also Argo getting quite a bit of momentum lately.
See my comment about it here: https://news.ycombinator.com/item?id=28803117
(disclaimer: I work for Temporal on the Go SDK and upcoming Python SDK)
tldr; a GUI for Argo
"My team already knows Airflow and/or I want to pay Astronomer a lot of money" -> Airflow
"I love YAML and everything is on k8s anyway" -> Argo
"I just want something that works out of the box and don't want to host my own compute" -> Shipyard, maybe Orchest
"I want a more flexible, generic workflow engine and don't care about writing orchestration in Python" -> Temporal/Cadence
"I am very nostalgic" -> Azkaban, Oozie, Luigi
"I love clunky Java solutions to data problems" -> Nifi et al
"I like to pay for half-managed solutions and late upgrades to a first-generation technology" -> AWS/GCP hosted Airflow options
"I am on AWS and it doesn't need to be complicated" -> AWS Step Functions
I know there's a degree of oversimplification going on here, but there's something to be said for having a simple bullet-list breakdown of all the use-cases - alongside the best tool for each use-case.
It is servers as a practical starting point in terms of narrowing down the list of tools (of which there are so many), before one proceeds with a deeper dive into the best fitting tool.
Would be great if there were a site that did this sort of thing for all the common architectural needs.
I havent used Airflow, but my impression is this fits a similar role. That itcs built atop good tech like Apache Beam & can use things like Flink is, in my book, a nice win.
This system was built with Microsoft's Biztalk around 2006. It performed very well in production, but Biztalk had quite a few gotchas that needed to be creatively worked around in development.
E.g. a drag’n drop web GUI workflow library like pictured below?
https://customer.io/wp-content/uploads/2021/06/use-case-onbo...
Anyone know of others?
Java has a history in big systems for soon 30 years.
Rust, Python and Go are just not there yet. Rust is too low level, Python is not statically typed and will always suffer performance wise and Go ... I is a youngster :). And .NET is always not everyone's free choice.
And Apache, well they just liked Java for their applications. They started with some C/C++ code but then quickly aggregated a lot of Java tech.
Hey, sometimes it really is!!
You have to deal with the 13m JVM config options?
You have to deal with the confusion and complexity that is “java dependencies”
Everything is OOP-abstraction-heavy API’s?
I’ve spent too much of my time and effort recently debugging Scala/Spark/JVM resource issues/dependency issues and the more I have to deal with it, the less I want anything to do with JVM-based solutions. The closest I want to get to another awful JVM application is a docker container.
I will rejoice the day that spark-alternatives progress enough for our team to replace our workloads and I can throw our spark stuff into the literal bin.
Once you have gotten the hang of running Spark (and working knowledge of JVM itself) then you have paid the cost and it's done. Adding a whole bunch of new stuff just means more costs to pay, less integration, more fragmentation of knowledge.
Doesn't seem like a net win on any front to me.
> "the new stuff" which could either all be on the same platform or much more likely spread across a number of platforms.
Yes. I’d like to see more variety in approaches, more variety in specialisations, and for interop between “platforms” to occur at a slightly “higher” level (I.e. maybe common sql dialect, common set of messaging/interop protocols).
I think rather than pouring all of our effort into a singular platform, we should put our effort towards improving our tooling and languages so that it is more straightforward and viable to build these platforms.
Everyone language has got their own web-server framework(s), I see Spark et al as the web-server framework of the data space.
I get your point on tuning Spark, been there, suffered the frustration where a job fails 4 hours in, but yeah, that's Spark for you.
It seems to be more of a hassle to do this kind of thing over IPC with native binaries, and if ARM starts displacing a lot of x86-64 in datacenters it gets more complicated.
1 Corinthians 13: "Faith, Hop and Charity, and the greatest of these is Hop."
Does that sound about right?