ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
16 июля
563659
Evgeny_CD, Архитектор (02.12.2014 20:45, просмотров: 8000)
Персональная Big Data. Персональный кластер. Начальная размышлизма. Похоже, Java таки победит. Пусть у меня есть некий набор пЫсюков. Разных или одинаковых. Скорее разных. И хочу я собрать их в стройную систему. Чтобы чего-нибудь повычислять, data mining замутить и все такое прочее. Пусть эти машины живут под тремя разными ОСями. Т.е. вообще говоря, это не только чисто независимые серверные машины, но и рабочие компы сотрудников "по ночам". И какие-то арендованные при необходимости внешние облачные ресурсы - если бюджет есть, а смысла покупать себе в собственность ресурсы нет. В целом, нужно две самые фундаментальные вещи: 1) сервис удаленного управления машиной 2) некий "язык всего", на котором можно было бы писать приложения, которые будут крутиться на любой машине (если у нее достаточно ресурсов). Разумеется, лучше, если приложения уже готовые. :) Сервис удаленного управления есть в каждой операционке, однако он разный. Linux shell (имя им - легион), Power Shell для M$, у макоси тоже что-то есть наверняка. Но хочется, чтобы "командные задания" писались единообразно, и не нужно было бы париться о нюансах платформы (если не нужна жесткая оптимизация). По сути, нужен скриптовый троян, :), который написан на принятом в рамках проекта "языке всего", который запускается как системный процесс, и который готов принять на исполнение командные файлы, написанные на нем же. Java|Tcl|Perl|Python|Lua|JS и еще много чего созданы для этого :) С "языком всего" сложнее. С++ как основной язык отметаем сразу нахер (но с исключениями), ибо скорость написания проги и удобство запуска кучи копий на куче нод превыше эфемерной эффективности. Но! Если мы говорим о специализированой либе, которая (например, в паре с GPU) дает аццкий перфоманс, то в таком случае С++ зело кошерен. Соответственно, язык всего - это выбор из Java|Tcl|Perl|Python|Lua|JS JS пока медленнее в реализации и посему идет нахер. Lua - хороша, нет нет штатного очень быстрого JIT, да и готовых прог и либ не так уж и много. Python - хм.... все хорошо, но боюсь оптимизирующему JIT от Oracle он точно сольет в перфомансе. Perl - хорош, но по скорости исполнения его уже давно никто не оптимизировал. Думаю, проиграет всем современным средам. Tcl - серьезная заявка на победу, прежде всего, за счет отличной кросс-платформенности и легкости интеграции с С|C++ "в обе стороны", но по скорости java проиграет, и репутация у языка, к сожалению, не шибко хорошая (хотя совершенно незаслуженно) Java - как бы без вариантов. Потому что: -- Java 8 - хороший рывок в части эффективности языка. Java 8 как среда еще и JS поддерживает "в одном флаконе", что ваще верх кошерности. -- Java 8 JIT, говорят, всех рвет в части перфоманса. -- На java написано дофига всякого разного системного софта для кластеризации Web: In memory data base, кешеры, всякие подобные приблуды. Java можно выбрать за один только Hadoop https://ru.wikipedia.org/wiki/Hadoop Java перспективна и по другим причинам -- совершенно очевидно, что рост единичной мощи процов вышел на очень пологий рост. Можно сказать, что существенного роста в ближайшие 10 лет не будет, а будет рост энергоэффективности. -- как следствие, кластеризация - "наше фсе". Процы дешевые, ноды тоже, ноды жрут мало - собрать себе кластерок из нескольких десятков нод - вполне доступно. -- Идея гетерогенных кластеров богатая. Т.е. вот БД, оптимизированная под такие-то данные (одна или несколько нод), вот - под другие, вот тут SQL, вот тут - NoSQL (это соврешено разные методологии, их глупо противопоставлять, у каждой есть своя область определения), вот тут - документная БД. А вот тут у нас ноды приложений для лялиха, тут - для венды и т.д. -- а управляем мы всем этим хоть с планшета, из любой точки мира. -- для embedded мира всякие варианты embedded java по мере роста набортной памяти становятся все интереснее. Собственно, сейчас топовые MCU имеют 2M FLASH 512 SRAM (или даже 10M SRAM, но без FLASH), еще через пару поколений можно ожидать 8M FLASH 2M SRAM, а тут уже Java развернется по полной, даже с JIT. -- прогресс в технологиях статической компиляции тоже внушает. Смотрим Excelsior JET http://www.excelsior.ru/products/jet Android Runtime (ART) http://en.wikipedi …g/wiki/Android_Runtime http://habrahabr.ru/post/201346/ Собственно, вопросы: -- кто какие проекты по кластиеризации на Java знает -- аналогично ресурсы -- умные мысли приветствуются -- моя благодарность за критику не будет знать границ!