Fork me on GitHub
#onyx
<
2016-06-15
>
lucasbradstreet03:06:29

Oh that's awesome. So medium memory is basically shm?

gardnervickers03:06:45

Yea itโ€™s stored in /dev/shm on the host

jeroenvandijk08:06:24

@devth I found this code useful to manage development jobs https://gist.github.com/jeroenvandijk/95a7d09b3c8cb7904547c95c3b4a3360#file-user-clj-L32-L47. Maybe a (simple) variation would be useful for managing remote jobs

emil0r11:06:03

Would it make sense to use Onyx as a microservices architecture?

emil0r11:06:54

and hi everyone ๐Ÿ™‚

devth12:06:00

jeroenvandijk: thanks! that helps.

gardnervickers14:06:20

@emil0r: possibly, depends on exactly what your trying to do

devth14:06:39

So https://github.com/onyx-platform/lib-onyx/blob/master/doc/server-api.md doesn't include an endpoint to kill or restart a job?

Drew Verlee14:06:34

my company just asked them to figure out how to chain Map reduce jobs together. ๐Ÿ˜ข

michaeldrogalis15:06:45

@drewverlee: Time to go job hunting. ๐Ÿ™‚

michaeldrogalis15:06:06

@devth: Not yet it doesn't! ๐Ÿ™‚

devth15:06:28

Ok. Eagerly awaiting endpoints ๐Ÿ™‚

devth15:06:43

Or are you hoping for PRs?

gardnervickers15:06:38

PR's always welcome, this is definitely on our radar. My approach was going to be allowing lookups by job metadata

devth15:06:10

Btw, Onyx dashboard is so cool! Watching it react in realtime to submitting and killing jobs ๐Ÿ’ฏ

gardnervickers15:06:45

Yea it's pretty slick

devth15:06:23

However, I still don't understand why a newly submitted job isn't getting any host allocation

devth15:06:51

I set NPEERS to 6 and created 3 replicas (Onyx peers)

devth15:06:17

Hm, it looks like 1 job is consuming all my peers

devth15:06:38

Can I tell it to share? These are streaming / indefinite jobs that never complete.

devth15:06:59

Nevermind let me just read up on this some more ๐Ÿ™‚

gardnervickers15:06:39

Your cluster needs at least 1 peer for every task in each of its jobs

devth15:06:16

Yeah I think I need to be using the balanced scheduler

gardnervickers15:06:43

So if you have 2 jobs that each have 5 tasks, you will need your host machines to run JVM's that spawn a total of 10 peers

gardnervickers15:06:09

More than a 1 for 1 peer to task ratio means more concurrency

devth15:06:17

Got it. Thanks

devth15:06:53

And NPEERS should be roughly set to number of CPUs?

gardnervickers15:06:39

From a performance standpoint it does not make sense to be running more peers than cores on a box. However it's fine to have many more peers than cores.

gardnervickers15:06:24

I recommend getting your jobs setup and tuning for that stuff last, while developing give yourself enough peers to run your jobs

gardnervickers15:06:22

Also if your jobs might be idle for some time, like when handling a streaming workload, it's reasonable to over-allocate peers on a box.

devth15:06:35

Ah, cool. That makes sense.

gardnervickers15:06:25

Yea the peers terminology is a bit tricky, most immediately think of physical nodes or hosts. It's more akin to a thread pool

devth15:06:08

What do you call a machine that runs Onyx? A node?

devth15:06:18

Are all peers "virtual peers"?

gardnervickers15:06:01

Yea nodes are the machines/hosts that are running a JVM

devth15:06:17

Ok. I was confusing nodes with Peers before.

gardnervickers15:06:32

Yea a diagram would be helpful

devth15:06:42

I also have Datomic peers, so it's extra confusing ๐Ÿ™‚

michaeldrogalis15:06:43

@devth: A PR would be great if you add any new endpoints. I don't actively work on that project.

devth15:06:25

Ok. I'd like contribute. I'll see if I can find the time

michaeldrogalis15:06:11

Cool, yeah if anything comes up as needed, just send it in. Thanks!

michaeldrogalis15:06:28

This stuff generally turns out better if people contribute directly from the project's they work on

gardnervickers17:06:44

@devth: I was able to get going with the official java alpine image. Thanks for your PR.

devth17:06:46

gardnervickers: great! sorry I didn't get around to figuring out the issue. glad you found it.

devth17:06:31

it'd be nice if s6 could surface the actual error

gardnervickers18:06:45

It was in a sense, there was no /bin/bash so file not found was appropriate

gardnervickers18:06:56

But yea I get what you mean

emil0r19:06:42

@gardnervickers: i wish to build a modular financial system with a set of core modules and the ability to extend the system by adding more modules. a module would be an area of interest for the system such as accounting, accounts, etc

michaeldrogalis19:06:41

@emil0r: If your system is flowing information unidirectionally and asynchronously, it would be a good fit.

emil0r19:06:26

ok. is it possible to change flow on the fly?

andrewhr19:06:21

As far I understand onyx model, the whole cluster needs to have the same code available. If that's true, the above idea is feasible if designed around shared primitives (running on Onyx). Right Mike?

emil0r19:06:11

So you wouldnโ€™t be able to have a job called foo.bar running in the cluster and then add another called foo.baz which would have a completely different code base but still use Onyx?

michaeldrogalis19:06:16

You can technically have different code running on each node so long as the interfaces match up, but the only time you'd want to do that is during a rolling deployment.

michaeldrogalis19:06:07

@emil0r: Think of it like this. You have a jar running on each node in your cluster with some Clojure functions on it. You can submit as many jobs, which are all data, as needed to the cluster for concurrent execution that uses those functions in different configurations.

emil0r19:06:33

By interface you mean?

emil0r19:06:59

OK thanks. Iโ€™ll play around a bit with some code ๐Ÿ™‚

michaeldrogalis19:06:12

@andrewhr: Yeah, definitely the right idea with shared primitives.