Mesos & related codes from 100% sources:

I understand your sentiment. However, I disagree, strongly. I have
been using gentoo for a long time. It has THE solution to 'dependency hell' built into how how ebuilds are constructed. [1]

I have mesos working and spark (mostly). These other codes that
are necessary just take a bit of effort. It's a cultural approach
rather than accumulating binaries. As (mesos) clustering matures
it's going to be increasingly difficult to debug problems, without
building from sources, imho. A little pain now, great rewards later.
Keeping projects on the open source track does not prevent anyone
(vendors included) from packaging up for quick evaluational types
of installs, or formal usage.

But, if that is all the community develops, then after a while it does
become too much of an effort. At that point, it is no longer an open source project, but a binary offering. That may bode well for the
short term business interests of some, but long term, it will kill
the project. ymmv.


For example, the ability to diagnose deep problems with resource utilization will necessitate kernel level debugging with such tools
as ftrace, trace-cmd and Kernelshark, as discussed in these REDhat
documents: [2]


I'd be most interested in associating with folks that have a desire to
build from 100% sources. Afterall, openstack, slurm and many other packages do this and they are quite easy to support (as there are ebuilds for them) in gentoo. Often other groups use gentoo ebuilds as a guide to source compilations on other distros. Gentoo was forked to create ChromeOS, which was forked again to create CoreOS. Some other linux distros employ this semantic of building from sources, but, gentoo
linux is the most robust, imho. This source build approach also will
tremendously facilitate porting of mesos and related codes to different and newer architectures, such as Arm64.


So shall we start with an ansible playbook for building mesos from sources? WE can add other codes from there and let folks pick and choose to build as they like. Surely this is not even a difficult task if organized at the developer level with some miniscule level of support/encouragement by the developers of mesos. Perhaps a ticket is needed for comment? This sort of organization will attract more coders and still encourage a basis for vendors to package up binaries for more focused needs, including targeted platform support. After all this is exactly what CoreOS is doing: [3,4,5]

Comments are most welcome!

James



[1] https://devmanual.gentoo.org/

[2] https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-Realtime_Specific_Tuning-Latency_Tracing_Using_trace_cmd.html

[3] https://coreos.com/docs/sdk-distributors/sdk/building-development-images/

[4] https://chromium.googlesource.com/chromiumos/overlays/portage/

[5] https://en.wikipedia.org/wiki/CoreOS





On 02/22/2015 03:38 PM, Alexander Gallego wrote:
James,

It is incredibly challenging to build everything from scratch.

To build mesos from 100% sources as you propose you'll need to find
**all** transitive dependencies first. Each in turn will have transitive
deps.

In fact, if you look at the build system the reason leveldb.patch exist
is to attempt and reduce that complexity.

```
+# Removed tests for TCMALLOC and SNAPPY to prevent additional dependencies.
```

Most linux packages exist **exactly** for that reason. It is not easy to
build native dependencies and have it work for your operating system.
That's what apt-* is for ubuntu for exapmle.


Now building **just mesos** from sources is quite trivial.


Here is my entire ansible build for my local dev box

```


- name: configure mesos
   shell: "LIBS=-lglog LDFLAGS=-L/usr/local/lib
     {{bolt_cache_dir}}/{{mesos_dir}}/configure
     --with-glog=/usr/local
     --disable-python
     --disable-java"

   args:
     creates: '{{bolt_cache_dir}}/{{mesos_dir}}/build/Makefile'
     chdir: '{{bolt_cache_dir}}/{{mesos_dir}}/build'

- name: Make mesos
   sudo: True
   shell:
     "ldconfig && make -j{{ansible_processor_vcpus}}"
   args:
     chdir: '{{bolt_cache_dir}}/{{mesos_dir}}/build'
     creates: '{{bolt_cache_dir}}/{{mesos_dir}}/build/src/libmesos.la
<http://libmesos.la>'



```


If you ever participated in large scale native builds, you might know
that compiler flags and linker flags have a huge effect on whether the
software will work at runtime (i.e: symbols stripped away, extern
functions not being exported for weird reasons, ABI incompatibility, etc).

To be honest, building everything from source sounds impractical unless
you have a team of developers optimizing it for your platform. Your
dependencies would be an explosion of build system system deps - CMAKE,
autoconf, Scons, at the top of my head for transitive deps.

As I said, that is exactly my ansible task for building mesos locally.
Hope it helps.

-ag






Sincerely,
Alexander Gallego


On Sun, Feb 22, 2015 at 3:11 PM, CCAAT <[email protected]
<mailto:[email protected]>> wrote:

    On 02/22/2015 06:35 AM, [email protected] <mailto:[email protected]> wrote:

        Last friday i put some Ansible scripts on github for provisoning
        a multi
        AZ cluster on AWS.
        You could have a look at it
        https://github.com/roybos/aws-__mesos-marathon-cluster
        <https://github.com/roybos/aws-mesos-marathon-cluster> and maybe
        it helps you.

        It basically creates a VPC within an AWS region and setups 1
        node in 3 AZ's.
        All nodes are currently equal(mesos master and slave are on the same
        machine) which is fine for smaller clusters for let's say 3 to
        30 nodes.

        Roy Bos


    Very cool. I'm new to ansible, but I like what I've learns so far.
    What would be cool is if some thing like this ansible example was for
    just 3 (generic linux ) system that are installed  from sources. No
    binaries, no distro specific packages, just pure, raw sources. That
    way it would provide a baseline for installation on all sorts of linux
    (embedded, vm, container, uncommon_distro, different architectures
    like arm64 etc etc) based systems.


    Any ansible guides for generic mesos installs from sources would be
    of keen interests to many folks.

    After that in-house from sources methodology is viable, I'm quite
    certain companies will want to augment their local (in-house)
    cluster resources, with resources from vendors, particularly in a
    dynamic mode of utilization. Therefore, within the  in-house
    resources mixed (supplemented) with vendor resources is the future
    of cluster computing. ymmv.

    Sadly, I see little progress on this open systems approach, and that
    concerns me greatly for the viability of the mesos cluster. Is it
    indeed going to be limited to large corporations trying to sell
    something nobody wants; or are there going to be open source
    methodologies developed that streamline the installation of mesos
    inside of a medium size company with modest resources.

    Ansible is the key technology here combined with building up a mesos
    cluster FROM 100% SOURCES.


    Put that in your presentation at mesos con(artists?)


    James






Reply via email to