пʼятниця, 22 травня 2015 р.

PerfMon for JMeter

Prerequisites:

  1. JRE 1.6 or above

  2. JMeter 2.8 or above
Steps:

Installing Server Agent in Server machine:

Step 1:  Download ServerAgent-2.2.1.zip from http://jmeter-plugins.org/downloads/all/
Step 2:  UnZip the ServerAgent-2.2.1.zip in the Server machine(tomcat machine root directory).
Step 3:  Run the startAgent.sh using sudo.
Step 4:  We can run startAgent.sh with different arguments and settings. For Instance, running server agent using                           different tcp port instead of default port(4444) like below.
sudo ./startAgent.sh --udp-port 0 --tcp-port 4560
Step 5:  Now the Server agent instance is running in the server with tcp port 4444.

понеділок, 18 травня 2015 р.

Hadoop в порівнянні з SQL

Итак, Hadoop - это каркас для обработки данных. Так чем же он лучше стандартных реляционных СУБД, являющихся рабочей лошадкой в современных приложениях для обработки данных? Одна из причин заключается в том, что SQL (структурированный язык запросов) по природе своей ориентирован на работу со структурированными данными. А многие приложения Hadoop имеют дело с неструктурированными данными, например текстовыми. С этой точки зрения, Hadoop предлагает более общую парадигму, чем SQL.

субота, 9 травня 2015 р.

CloudStack

CloudStack —платформа компании Citrix — ключевой компонент портфеля «облачных» продуктов. Она позволяет клиентам легко создавать новые «облака», поддерживает полную изоляцию вычислительных, сетевых и дисковых ресурсов; автоматическое выделение и ограничение ресурсов; содержит инструмент для генерации отчетов и мониторинга в режиме реального времени; упрощает средства для управления инфраструктурой и выполнения ежедневных задач; предоставляет гибкие возможности масштабирования.

Cloud computing

Западное и отечественное IT сообщество последние 2-3 года будоражат многочисленные слухи и сплетни об идее Cloud Computing (в переводе на русский «Облачные Вычисления»), которая призвана решить все существующие проблемы и беды. Так что же представляют собой эти «Облачные Вычисления» и в чем их преимущества?

пʼятниця, 8 травня 2015 р.

Хостинг, хост

Сервер (Оборудование)

При описании сервера следует различать сервер - программное обеспечение (которое служит для генерации страниц – Apache, например) и сервер - оборудование.
Когда мы говорим о сервере - оборудовании, его описывают, обычно, как компьютер, который принимает запросы от иных машин (серверов, компьютеров).
В сравнении сервер напоминает городской телефон, то есть приспособление, с помощью которого идет прием вызова и осуществляется связь с другим человеком.

Порт

Принципы работы интернет-протоколов TCP/IP по своей сути очень просты и сильно напоминают работу нашей советской почты.

Вспомните, как работает наша обычная почта. Сначала вы на листке пишете письмо, затем кладете его в конверт, заклеиваете, на обратной стороне конверта пишете адреса отправителя и получателя, а потом относите в ближайшее почтовое отделение. Далее письмо проходит через цепочку почтовых отделений до ближайшего почтового отделения получателя, откуда оно тетей-почтальоном доставляется до по указанному адресу получателя и опускается в его почтовый ящик (с номером его квартиры) или вручается лично. Все, письмо дошло до получателя. Когда получатель письма захочет вам ответить, то он в своем ответном письме поменяет местами адреса получателя и отправителя, и письмо отправиться к вам по той же цепочке, но в обратном направлении.

Jenkins

Посмотрим на CI методом белого ящика. Нужно понимать, что система непрерывной интеграции состоит из множества подсистем. Во-первых, нам нужно система контроля версий (Git, HG и т.д.) из которой будут забираться исходники. Также нам нужен билд-скрипт, который компилирует код и нужны скрипты для развертывания базы данных. Помимо этого нам нужен сервис по запуску сборки, запуску тестов. В зависимости от желания, необходимости и возможностей инструментария можно прикрутить множество рюшечек, например, статический анализ кода, анализ покрытия кода тестами и другие. Таким образом, базовый процесс интеграции выглядит следующим образом: Триггер. Событие, при котором запускается сборка продукта. Таким событием может быть: изменения в коде (push), определенное время, нажатие на кнопку. После срабатывания триггера стартует сборка проекта из исходников. Развертывание базы данных. Развертывание приложения. Тесты. Авто-тесты не являются обязательными, но их выполнение крайне желательно. Это один из важных пунктов хороших практик CI. К тестам мы еще вернемся. Статус, отчеты, уведомления по результатам сборки. После прогона тестов получаем результат сборки, детальные отчеты по каждому из этапов интеграции

Если на пальцах, то система CI – это некая программа, которая следит за вашим Source Control, и при появлении там изменений автоматически стягивает их, билдит, гоняет тесты (конечно, если их пишут) и возможно делает кое-что ещё.

Предположим, что у нас есть 2 машины, на одной из них (Master) установлен и запущен Jenkins. Задача добавить вторую машину в Master.

Доступ из мастера в слейв будет осуществляться по ssh, поэтому нам надо (хотя это совсем необязательно) сделать так, чтобы вход по ssh из мастера в слейв был без пароля, т.е. добавить ssh-ключ мастера в разрешенные ключи слейва. Если по какойто причине вы не хотите это делать, то при настройке Slave машины можно будет все параметры SSH указать.
Ессно это все будет делаться для пользователя, под которым работает Jenkins, т.е. пользователя jenkins, который создан по умолчанию.

Генерим ключ для мастера, если он еще не сгенерен:

?
1
2
# su jenkins
# ssh-keygen -b 2048 -t rsa

Далее надо скопировать этот ключ (id_rsa.pub) на слейв в пользователя jenkins. Либо копипастом либо можно через ssh-copy-id либо как Вам удобно. Я копирую 2ым способом. Для этого нам надо задать пароль для пользователя jenkins на слейве, поскольку он создается без пароля и мы не сможем зайти на слейв ;)

Ключ скопирован. Теперь надо сказать мастеру, что у него есть слейв. Делается это просто. Заходим в Manage Jenkins -> Manage Nodes, кликаем на New Node и выбираем Dumb Slave

На следующей странице нужно заполнить следующие поля:
  • # of executors: 2 (число одновременных билдов)
  • Remote FS root: /var/lib/jenkins (в моем случае такой путь)
  • Labels: python27 natty
  • Usage: Leave this machine for tied jobs only
  • Launch method: Launch slave agents on Unix machines via SSH. 
  • Также конечно же необходимо заполнить поле Host field, вписав туда адрес Slave-машины.
 Если вы не настраивали на слейве доступ по ssh-ключу, то под этим полем есть кнопочка Advanced, там можно указать логин/пароль.

Нажимаем OK и у нас в списке появляется новосозданный Slave. На разных системах оно себя по разному ведет. В мануале написано, что после этого надо кликнуть на новосозданную машину и нажать Launch. У меня оно просто без вопросов подключилось.

Ну добавляйте сколько угодно компов...



Взято тут
тут

середа, 6 травня 2015 р.

Архитектура HDFS и типичный Hadoop кластер

HDFS подобна другим традиционным файловым системам: файлы хранятся в виде блоков, существует маппинг между блоками и именами файлов, поддерживается древовидная структура, поддерживается модель доступа к файлам основанная на правах и т. п.

Spark

Когда исследователи университета Беркли начинали разрабатывать Spark, они держали в голове уже сложившуюся к тому времени картину мира больших данных – принцип параллельных вычислений на кластере компьютеров, способном к расширению в ширину, позволял работать с большими объемами информации, но жертвовал скоростью работы в пользу горизонтальной масштабируемости и способности к быстрому восстановлению после системных ошибок. Здесь стоит вспомнить о нашумевшей (и до сих пор популярной) технологии MapReduce, которая примерно до февраля этого года была основной движущей силой экосистемы Apache Hadoop. Действительно эффективная для пакетной обработки данных, эта модель, однако, обладает существенными недостатками.

Cloudera

Поставщики Hadoop: Apache, Cloudera, Hortonworks, MapR

Cloudera. Ключевой продукт — CDH (Cloudera Distribution including Apache Hadoop) — связка наиболее популярных инструментов из инфраструктуры Hadoop под управлением Cloudera Manager. Менеджер берёт на себя ответсвенность за развёртывание кластера, установку всех компонентов и их дальнейший мониторинг. Кроме CDH компания развивает и другие свои продукты, например, Impala (об этом ниже). Отличительной чертой Cloudera также является стремление первыми предоставлять на рынке новые фичи, пусть даже и в ущерб стабильности. Ну и да, создатель Hadoop — Doug Cutting — работает в Cloudera.

Hadoop

 Hadoop - a software framework for storing, processing and analyzing "big data".
- is open source
- is a large ecosystem: Hue, Solr, Flume

вівторок, 5 травня 2015 р.

MapReduce

Это подход, алгоритм, ну или паттерн, тут уж как кто назовет, параллельной обработки больших объемов сырых данных, например результатов работы краулеров или логов веб запросов, вообще по статистике до 80% задач могут маппится на MapReduce, и именно MapReduce драйвит NoSQL. Существуют разные имплементации MapReduce. Достаточно известна и запатентована реализация этого алгоритма и подхода Google. Или как пример MySpace Qizmt — MySpace’s Open Source Mapreduce Framework, также используется в Hadoop, MongoDb и еще много разных примеров можно привести.

Hadoop: Pig

Pig - єто расширение Hadoop, призваное упростить програмирование за счет високоуровневого язика обработки данних.
Pig состоит из двух основних компонентов:
- язик обработки данних  Pig Latin
- компилятор

Oozie – диспетчер потоков работ для платформы Hadoop

Большие данные в необработанном виде редко соответствуют требованиям Hadoop-разработчика к данным, соблюдение которых необходимо для успешного выполнения задач обработки данных. Обычно перед выполнением любых реальных заданий по обработке данных необходимо применять различные ETL-операции (extract/transform/load - извлечение/преобразование/загрузка) и операции предварительной обработки. Oozie— это инфраструктура, которая помогает автоматизировать этот процесс. Она представляет эту работу в виде воспроизводимых единиц или потоков работ, которые впоследствии можно многократно использовать без написания какого-либо нового кода или новых процедур. В статье описывается применение Oozie при создании различных типов потоков работ.

More info is here

понеділок, 4 травня 2015 р.

JMeter Functions

1. Referenced as ${__functionName(properties)}
    - Like variables, can use in JMeter properties
2. Use Options > Function Helper Dialog
    - Choose a function
    - Enter parameter values
    - Click "Generate", then copy/paste function
3. Helpful functions
    - ${__javaScript(expression to evaluate)}
    - ${__threadNum()}
    - ${__Random(min, max, varname)}
    -  ${__regexFunction(regEx, template, match, ...)}

Was taken from here

JMeter Variables

1. Define global variables
    - Test Plan (root element)
    - Config Element > User Defined Variables
2. Define virtual user variables
    - Pre processors > User Parameters
    - Config Element > CSV Data Set Config
3. Reference as ${variableName}
    - Can be used in nearly any property
    - Scope determined by location in hierarchy

Variables from a CSV file
1. Create a CSV file with the data you want to use    
     - No label row; save in same folder as .jmx file
2. Add "Config Element > CSV Data Set Config"
     - Add under the Thread Group that will use it
     - Set Filename = filename.csv
     - Set Variable names = username,password (e.g.)
 3. Set variables in HTTP Request "Send Params"
     - Name = username, Value = ${username}
     - Name = password, Value = ${password}
 4. Will read in data with each new thread, or with loops

JMeter: parallel test execution

1. To start, add 3 thread groups under Test Plan
2. Add HTTP Request to each, with appropriate URLs
3. Add Listener under Test Plan
4. Move the 3 requests under one Thread Group
5. Choose all 3, right click, choose "Insert Parent...". Choose Controller > Random Controller (Simple Controller, If Controller)


JMeter and regular expression

http://jmeter.apache.org/usermanual/regular_expressions.html

Regular expression: help


JMeter: knowledge link

http://qalearning.com.ua/theory/soft/priklad-testu-navantazhennya-z-apache-jmeter/
http://www.softwareqatest.com/qatweb1.html
http://qapl.net/faq-%D0%BF%D0%BE-%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BE%D1%87%D0%BD%D0%BE%D0%BC%D1%83-%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E-%D1%81-jmeter/#q7
http://habrahabr.ru/post/88714/
http://hashabc.com/post/140310/
http://www.scribd.com/doc/7499267/Load-Testing-With-JMeter
https://www.youtube.com/watch?v=cv7KqxaLZd8

пʼятниця, 1 травня 2015 р.

Understanding performance, capacity, endurance (soak), load and stress testing

Performance testing creating the load and measure the response

Both performance and load/stress tests help determine the capacity of a system

JMeter:search

JMeter: recording user script with a browser

1. click on File and check Templates
2. check Recording

JMeter: simple test - how to creat test with checking if request is ok


  1. create thread (add the number of users, rump up period, loop count - how much the script will be run)
  2. add HTTP Cache Manager (you can check clear cach)
  3. add HTTP Cookie Manager
  4. add HTTP Request Default

JMeter: interface

Ключевое понятие Jmeter — план тестирования (обратите внимание на рис. 1, что дерево элементов изначально состоит из двух пунктов: Test Plan и Workbench). Workbench — это… что-то похожее на временную папку. Дело в том, что интерфейс Jmeter построен на перетаскивании с места на место элементов дерева сценария (настоящее дерево плана, выполняемое — это как раз Test Plan). Вы конструируете дерево плана, а затем можете его части перемещать на "верстак" (Workbench) и обратно. Выполняется в ходе тестирования только содержимое Test Plan, а содержимое Workbench даже не сохраняется на диск. Для наполнения Test Plan элементами сценария используйте либо через контекстное меню на элементе Test Plan, либо главное меню приложения Edit -> Add -> Элемент, помещаемый в сценарий. Все добавляемые элементы делятся на категории:
  1. Test Plan (JMeter script)
  2. Thread Group (thread=user)
  3. Timer (add delay) служат для генерации пауз (а бывают они не только простыми — например, всегда одинаковая пауза в 0,5 секунды, — но может быть и распределение Гаусса или равномерное) между отдельными шагами (Samplers) внутри Thread Group (о ней чуть позже). Если вы не укажете величину паузы, в этом случае шаги сценария будут выполняться друг за другом без задержек, а значит, генерируемая одним потоком (Thread) на сайт нагрузка будет превышать нагрузку, которую мог бы создать обычный посетитель (не робот)
  4. Listener (reporting, logging, debugging) — анализ выполнения сценария — например, построение графика или таблицы с результатами тестов.
  5. Sampler (makes a request) служит для выполнения собственно запросов (http, ftp, обращения к базам данных и т.д.).
  6. Assertions (error checking) служит для проверок того, что сформированная сервером страница соответствует некоторому критерию "правильности" (например, наличие в тексте страницы определенных фраз или html-элементов)
  7. Pre processors (modify the request)
  8. Post processor (parse the response)
  9. Logic Controller (служит для управления ходом выполнения сценария, содержит аналоги циклов, условных операторов).
  10. WorkBench
Взято тут