{"id":21465,"date":"2016-02-29T13:40:51","date_gmt":"2016-02-29T12:40:51","guid":{"rendered":"http:\/\/blog.sotrender.com\/?p=21465"},"modified":"2016-03-01T10:02:05","modified_gmt":"2016-03-01T09:02:05","slug":"kulisy-sotrendera-oswajanie-slonia-hadoopa","status":"publish","type":"post","link":"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/","title":{"rendered":"Kulisy Sotrendera: oswajanie s\u0142onia Hadoopa."},"content":{"rendered":"<p style=\"text-align: justify;\">Opowiemy Wam dzi\u015b o tym,  jak oswoi\u0107 S\u0142onia,  czyli\u00a0<strong><a href=\"http:\/\/hadoop.apache.org\/\" target=\"_blank\">Apache Hadoop<\/a><\/strong>,  dlaczego si\u0119 na niego zdecydowali\u015bmy,  co zyskali\u015bmy i jakie napotkali\u015bmy problemy.\u00a0Zapewniam,  \u017ce b\u0119dzie to pigu\u0142ka wiedzy przyswajalna <strong>tak\u017ce dla tych,  kt\u00f3rzy nie maj\u0105 nic wsp\u00f3lnego z IT<\/strong>. Dowiecie si\u0119 m.in. dlaczego warto zatrudni\u0107 s\u0142onia w komisji wyborczej,  a tak\u017ce <strong>jak powstaj\u0105 nasze raporty Trends<\/strong>.<!--more--><\/p>\n<h2 style=\"text-align: justify;\">Sk\u0105d Sotrender ma \u015bwie\u017ce dane?<\/h2>\n<p style=\"text-align: justify;\">Jak wiecie w naszym narz\u0119dziu mo\u017cecie monitorowa\u0107 profile z <a title=\"Kliknij,  aby za\u0142o\u017cy\u0107 konto testowe\" href=\"https:\/\/app.sotrender.com\/auth\/signup\/trial\/pln\/gold?_ga=1.131207503.1791689737.1450703722\" target=\"_blank\">Facebooka,  Twittera,  YouTube&#8217;a oraz Instagrama<\/a>. Oczywi\u015bcie w naszym idealnym \u015bwiecie ju\u017c teraz to robisz. Pomy\u015blcie wi\u0119c,  dla ilu profili sprawdzacie dane? Dla jednego? Dla pi\u0119ciu?\u00a0Dwunastu?<\/p>\n<p style=\"text-align: justify;\">Teraz pomy\u015blcie,  \u017ce <strong>w ca\u0142ej naszej bazie jest obecnie ok. 30.000 profili<\/strong>. Wszystkie aktywnie monitorujemy,  czyli\u00a0informacje o nich aktualizujemy mniej wi\u0119cej co godzin\u0119. Robimy to wysy\u0142aj\u0105c <strong>zapytania do API\u00a0&#8211; tzw. API calls<\/strong>. Takich zapyta\u0144 wysy\u0142amy <strong>7.000.000<\/strong>\u00a0dziennie.<\/p>\n<p style=\"text-align: justify;\">Jak widzicie na ilustracji poni\u017cej,  poprzez <strong>API calls<\/strong> zbieramy dane,  kt\u00f3re gromadzimy (<strong>Storage<\/strong>) i nast\u0119pnie trafiaj\u0105 one z jednej strony prosto do narz\u0119dzia (<strong>Web<\/strong>),  a z drugiej strony do zespo\u0142u analityk\u00f3w u\u017cywaj\u0105cych <a href=\"https:\/\/www.r-project.org\/\" target=\"_blank\">j\u0119zyka R<\/a>\u00a0(<strong>R<\/strong>).<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-10.37.10.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-21469\" src=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-10.37.10.png\" alt=\"Zrzut ekranu 2016-02-26 o 10.37.10\" width=\"784\" height=\"413\" srcset=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-10.37.10.png 784w, https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-10.37.10-475x250.png 475w, https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-10.37.10-768x405.png 768w\" sizes=\"(max-width: 784px) 100vw, 784px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Co robi \u00f3w\u00a0 zesp\u00f3\u0142 analityk\u00f3w? Ich g\u0142\u00f3wne zadanie to realizacja nowych,  niestandardowych pomys\u0142\u00f3w analitycznych i funkcjonalno\u015bci,  ale te\u017c to w\u0142a\u015bnie dzi\u0119ki ich pracy otrzymujecie od nas <strong><a href=\"https:\/\/www.sotrender.com\/blog\/pl\/category\/raporty\/\" target=\"_blank\">raporty,  w tym comiesi\u0119czne zestawienia Trends<\/a><\/strong>. Do tego potrzebny jest nam tytu\u0142owy S\u0142o\u0144 &#8211; Apache Hadoop.<\/p>\n<h2 style=\"text-align: justify;\">Czym jest Hadoop?<\/h2>\n<p style=\"text-align: justify;\">Przez niekt\u00f3rych nazywany jest\u00a0\u015awi\u0119tym Graalem Big Data. To platforma programistyczna\u00a0do rozproszonego przechowywania i przetwarzania danych. Zrobi\u0142o si\u0119 powa\u017cnie,  wi\u0119c czas na <strong>fun fact<\/strong>: nazwa Hadoop pochodzi od imienia pluszowego s\u0142onika,  kt\u00f3rym bawi\u0142 si\u0119 syn Douga Cuttinga,  tw\u00f3rcy systemu. Wszystkim szukaj\u0105cym nazwy dla swojego startupu polecam ten klucz.<\/p>\n<p style=\"text-align: justify;\">Nad Hadoopem pracowa\u0142o od 2005 roku\u00a0Yahoo (do tej pory ta firma ma najwi\u0119kszy wk\u0142ad w platform\u0119),  jednak,  gdy Google zdecydowa\u0142 si\u0119 podzieli\u0107 pomys\u0142ami na przechowywanie i przetwarzanie du\u017cych ilo\u015bci danych,  Yahoo szybko je zaimplementowa\u0142o. W 2008 roku Hadoopa przej\u0119\u0142a fundacja Apache,  ale kod tworz\u0105\u00a0g\u0142\u00f3wnie przez prywatne firmy.<\/p>\n<h3 style=\"text-align: justify;\">Dlaczego warto si\u0119 przesi\u0105\u015b\u0107 na Hadoopa?<\/h3>\n<p style=\"text-align: justify;\">Hadoop powsta\u0142 w oparciu o kilka za\u0142o\u017ce\u0144. Mia\u0142 przetwarza\u0107 du\u017ce ilo\u015bciach danych (m\u00f3wi\u0105c &#8220;du\u017ce ilo\u015bci&#8221; mamy na my\u015bli petabajty i eksabajty,  czyli kolejno 10<sup>15\u00a0<\/sup>i 10<sup>18<\/sup>\u00a0bajt\u00f3w. To naprawd\u0119 sporo,  uwierzcie.),  r\u00f3wnolegle,  bezstratnie,  w spos\u00f3b skalowalny (z regu\u0142y us\u0142ugi maj\u0105 wyk\u0142adnicze wzrosty i z roku na rok mog\u0105 rosn\u0105\u0107 np. kilkunastokrotnie) oraz (co wa\u017cne z perspektywy biznesu) przy u\u017cyciu\u00a0wzgl\u0119dnie tanich komponent\u00f3w.<\/p>\n<p style=\"text-align: justify;\"><strong>Gar\u015b\u0107 zalet,  kt\u00f3ra przekona\u0142a nas do przesiadki z MySQL na Hadoopa: <\/strong><\/p>\n<ul style=\"text-align: justify;\">\n<li>Elastyczne formaty danych. Mo\u017cemy pracowa\u0107 i na r\u00f3\u017cnorodnych plikach,  i na bazach danych. Zdecydowana wi\u0119kszo\u015b\u0107 dostawc\u00f3w hurtowni danych dostarcza adekwatne wsp\u00f3\u0142pracuj\u0105ce z Hadoopem wtyczki.<\/li>\n<li>Dzi\u0119ki temu,  \u017ce mo\u017cemy &#8220;wrzuci\u0107&#8221; nieograniczon\u0105 ilo\u015b\u0107 danych,  nie musimy dokonywa\u0107 agregacji (dane nie trac\u0105 na jako\u015bci,  nawet je\u015bli zmieni nam si\u0119 koncepcja ich wykorzystania).<\/li>\n<li>Nie musimy pr\u00f3bkowa\u0107 danych. Analizujemy ca\u0142y zestaw danych.<\/li>\n<li>Nie musimy kasowa\u0107 danych. W naszym klastrze s\u0105 dane sprzed 5 lat.<\/li>\n<li>Mo\u017cemy \u0142atwo skalowa\u0107.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><strong>Nie byli\u015bmy w tej decyzji odosobnieni,  obecnie 26% du\u017cych firm ju\u017c u\u017cywa Hadoopa.\u00a0<\/strong>Zapewne znacie kilka z nich:<\/p>\n<div id=\"attachment_21471\" style=\"width: 952px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-10.50.56.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-21471\" class=\"wp-image-21471 size-full\" title=\"\u0179r\u00f3d\u0142o: https:\/\/wiki.apache.org\/hadoop\/PoweredBy\" src=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-10.50.56.png\" alt=\"Zrzut ekranu 2016-02-26 o 10.50.56\" width=\"942\" height=\"394\" srcset=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-10.50.56.png 942w, https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-10.50.56-475x199.png 475w, https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-10.50.56-768x321.png 768w\" sizes=\"(max-width: 942px) 100vw, 942px\" \/><\/a><p id=\"caption-attachment-21471\" class=\"wp-caption-text\">Kto korzysta z Hadoopa?<\/p><\/div>\n<p style=\"text-align: justify;\">Fun fact rekrutacyjny:\u00a0<strong>zapotrzebowanie na specjalist\u00f3w Hadoopa wzros\u0142o o 1000%<\/strong> wzgl\u0119dem poprzedniego roku.<\/p>\n<h2 style=\"text-align: justify;\">Czym Hadoop r\u00f3\u017cni si\u0119 od relacyjnych baz danych?<\/h2>\n<p style=\"text-align: justify;\">Najpro\u015bciej rzecz ujmuj\u0105c:<strong> zamiast przesy\u0142a\u0107 dane do programu,  przesy\u0142amy program do danych<\/strong>. Wygl\u0105da to tak:<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-13.43.55.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-21475\" src=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-13.43.55.png\" alt=\"Zrzut ekranu 2016-02-26 o 13.43.55\" width=\"830\" height=\"385\" srcset=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-13.43.55.png 830w, https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-13.43.55-475x220.png 475w, https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-13.43.55-768x356.png 768w\" sizes=\"(max-width: 830px) 100vw, 830px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">W przeciwie\u0144stwie do\u00a0tradycyjnego systemu,  kt\u00f3ry wyci\u0105ga dane i przetwarza je w innym miejscu,  tu wysy\u0142amy kod do ka\u017cdego w\u0119z\u0142a (ka\u017cdy element <strong>Data<\/strong> dostaje sw\u00f3j kawa\u0142ek kodu). Potem nast\u0119puj\u0105 obliczenia (element <strong>Map<\/strong>),  a nast\u0119pnie wyniki s\u0105 scalane,  czyli otrzymujemy efekty naszego dzia\u0142ania (element <strong>Reduce<\/strong>). P\u00f3\u017aniej dane wracaj\u0105 z powrotem do w\u0119z\u0142\u00f3w,  gdzie s\u0105 zapisywane.<\/p>\n<h2 style=\"text-align: justify;\">Jak Hadoop to robi?<\/h2>\n<p style=\"text-align: justify;\">Mamy dwa g\u0142\u00f3wne komponenty Hadoopa: <strong>HDFS<\/strong> oraz <strong>MapReduce<\/strong>.<\/p>\n<h3 style=\"text-align: justify;\">HDFS &#8211; rozproszony system plik\u00f3w (Hadoop Distributed File System).<\/h3>\n<p style=\"text-align: justify;\"><strong>HDFS<\/strong> powsta\u0142 na identycznych za\u0142o\u017ceniach,  jak Hadoop,  czyli mia\u0142 by\u0107 skalowalny (radzi\u0107 sobie z gwa\u0142townymi wzrostami),  odporny na awarie,  oparty na zwyk\u0142ym tanim sprz\u0119cie,  obs\u0142uguj\u0105cy du\u017c\u0105 ilo\u015b\u0107 danych w du\u017cych klastrach.<\/p>\n<p style=\"text-align: justify;\">Aby to osi\u0105gn\u0105\u0107,  system podzielono na dwa elementy. Cz\u0119\u015b\u0107 zarz\u0105dcz\u0105 <strong>Namenode<\/strong>,  kt\u00f3ra &#8211; niczym smutny kierownik &#8211; nie bierze udzia\u0142u w przetwarzaniu danych,  ale wie\u00a0np. na jakim serwerze s\u0105 poszczeg\u00f3lne pliki oraz <strong>Datanode<\/strong>,  prosty kod s\u0142u\u017c\u0105cy do zapisu i odczytu danych z dysk\u00f3w. W procesie rozwoju pojawi\u0142y si\u0119 te\u017c <strong>JournalNode<\/strong> (ma na celu\u00a0zwi\u0119kszenie wydajno\u015bci <strong>Namenode&#8217;a<\/strong>,  by\u0142by to wi\u0119c swoisty asystent naszego smutnego kierownika) oraz <strong>Zookeeper<\/strong>,  prosta platforma do konfiguracji i synchronizacji rozproszonych proces\u00f3w.<\/p>\n<h4 style=\"text-align: justify;\">Jakie mo\u017cliwo\u015bci daje taki system?<\/h4>\n<ol style=\"text-align: justify;\">\n<li><strong>Replikacja blok\u00f3w<\/strong>. Nasz plik podzielony jest na bloki,  z kt\u00f3rych ka\u017cdy jest zapisany w kilku\u00a0kopiach. Ilo\u015b\u0107 kopii mo\u017cemy ustawi\u0107 samodzielnie (wyj\u015bciowo s\u0105 3). Oznacza to,  \u017ce nasze dane zostan\u0105 powielone w klastrze tyle razy,  ile chcemy.<\/li>\n<li><strong>\u015awiadomo\u015b\u0107 struktury sieci<\/strong>.\u00a0Hadoop zna struktur\u0119 naszej sieci,  wi\u0119c opisane powy\u017cej kopie plik\u00f3w b\u0119d\u0105 rozmieszczone tak,  aby jak najbardziej zwi\u0119kszy\u0107 dost\u0119pno\u015b\u0107 do danych i ograniczy\u0107 transfer po sieci.<\/li>\n<li><strong>Samonaprawianie<\/strong>. Je\u015bli nasz serwer lub dysk zostanie uszkodzony,  Hadoop wykryje spadek liczby kopii i automatycznie j\u0105 przywr\u00f3ci z pozosta\u0142ych kopii na innych w\u0119z\u0142ach.<\/li>\n<\/ol>\n<h4 style=\"text-align: justify;\">Czego potrzebujemy,  by\u00a0taki w\u0119ze\u0142 skonfigurowa\u0107?<\/h4>\n<ul style=\"text-align: justify;\">\n<li>Wed\u0142ug teorii &#8220;niski i \u015bredniej klasy sprz\u0119t&#8221;,  wystarczy\u00a0lepszej klasy komputer domowy,  ale z naszego do\u015bwiadczenia lepiej si\u0119 skupi\u0107 na rozwi\u0105zaniach serwerowych.<\/li>\n<li>Podstawowa wersja poradzi sobie w 8-16 GB.<\/li>\n<li>Du\u017co dysk\u00f3w. Oko\u0142o 12-16,  im wi\u0119cej tym lepiej.<\/li>\n<li>Szybkie karty sieciowe &#8211; najlepsza opcja to oddzielne sieci do wymiany danych i oddzielne sieci do pozosta\u0142ych us\u0142ug,  aby dane mo\u017cna by\u0142o wymienia\u0107 szybko.<\/li>\n<li>Je\u015bli\u00a0przechowujemy dane w chmurze\u00a0to dyski sieciowe zast\u0119puje <strong>storage<\/strong>,  kt\u00f3ry jest pod\u0142\u0105czany do naszych w\u0119z\u0142\u00f3w.<\/li>\n<\/ul>\n<h3 style=\"text-align: justify;\">MapReduce &#8211; \u00a0&#8220;biblioteka&#8221;\u00a0do przeprowadzania rozproszonych oblicze\u0144.<\/h3>\n<p style=\"text-align: justify;\">Poprzez <strong>MapReduce<\/strong> Hadoop umo\u017cliwia przeprowadzanie rozproszonych oblicze\u0144 w trzech podstawowych krokach:<\/p>\n<ol style=\"text-align: justify;\">\n<li><strong>Map<\/strong>. Krok polega na wykonaniu operacji lokalnie,  na pojedynczym rekordzie w spos\u00f3b niezale\u017cny. Przyk\u0142adem mapowania b\u0119dzie np. podzielenie zdania na pojedyncze s\u0142owa.<\/li>\n<li><strong>Shuffle<\/strong>. Krok polega na rozdystrybuowaniu\u00a0pojedynczych wynik\u00f3w do pogrupowania. Czyli np. poszczeg\u00f3lne s\u0142owa ze zdania zostan\u0105 przeanalizowane wed\u0142ug wybranego klucza.<\/li>\n<li><strong>Reduce<\/strong>. Krok polega na pogrupowaniu wynik\u00f3w. Czyli poszczeg\u00f3lne s\u0142owa z pierwotnego zdania otrzymamy jako grupy &#8211; zgodnie z wybranym kluczem.<\/li>\n<\/ol>\n<p style=\"text-align: justify;\"><strong>Jak wygl\u0105da to w praktyce? Sp\u00f3jrzmy na poni\u017cszy przyk\u0142ad:<\/strong><\/p>\n<div id=\"attachment_21477\" style=\"width: 948px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-14.24.45.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-21477\" class=\"wp-image-21477 size-full\" title=\"\u0179r\u00f3d\u0142o: http:\/\/www.r-bloggers.com\/an-example-of-mapreduce-with-rmr2\/\" src=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-14.24.45.png\" alt=\"Zrzut ekranu 2016-02-26 o 14.24.45\" width=\"938\" height=\"401\" srcset=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-14.24.45.png 938w, https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-14.24.45-475x203.png 475w, https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-14.24.45-768x328.png 768w\" sizes=\"(max-width: 938px) 100vw, 938px\" \/><\/a><p id=\"caption-attachment-21477\" class=\"wp-caption-text\">\u0179r\u00f3d\u0142o: http:\/\/www.r-bloggers.com\/an-example-of-mapreduce-with-rmr2\/<\/p><\/div>\n<p style=\"text-align: justify;\">Naszym celem jest zweryfikowanie,  ile razy w naszych danych (<strong>Input<\/strong>) pojawiaj\u0105 si\u0119 poszczeg\u00f3lne s\u0142owa. Na samym pocz\u0105tku system podzieli dane wej\u015bciowe na\u00a0mniejsze elementy (<strong>Splitting<\/strong>),  aby przej\u015b\u0107 do pierwszego z g\u0142\u00f3wnych krok\u00f3w &#8211; <strong>Mappingu<\/strong>:<\/p>\n<ol>\n<li style=\"text-align: justify;\"><strong>Mapping<\/strong>: w tym kroku ka\u017cda z linii zostanie sprawdzone pod k\u0105tem tego,  ile razy wyst\u0119puje w niej pojedyncze s\u0142owo.<\/li>\n<li style=\"text-align: justify;\"><strong>Shuffling<\/strong>: takie same s\u0142owa zostaj\u0105 rozdystrybuowane do pogrupowania.<\/li>\n<li style=\"text-align: justify;\"><strong>Reducing<\/strong>: zostaj\u0105 utworzone grupy z\u0142o\u017cone z takich samych s\u0142\u00f3w.<\/li>\n<\/ol>\n<p>W ramach<strong>\u00a0Final result<\/strong> otrzymujemy podsumowanie ilo\u015bci wyst\u0105pie\u0144 poszczeg\u00f3lnych s\u0142\u00f3w. Dok\u0142adnie to samo w podobnym tempie sta\u0142oby si\u0119,  gdyby nasz <strong>Input<\/strong> zawiera\u0142 miliard wierszy.<\/p>\n<h3 style=\"text-align: justify;\">S\u0142o\u0144 w komisji wyborczej.<\/h3>\n<p style=\"text-align: justify;\">Przyk\u0142ady takiego podej\u015bcia znajdziemy w naszym codziennym \u017cyciu. Dobrym jego zobrazowaniem s\u0105 wybory i spos\u00f3b zliczania g\u0142os\u00f3w,  gdzie r\u00f3wnie\u017c stosowane jest podej\u015bcie MapReduce.<\/p>\n<ol>\n<li style=\"text-align: justify;\"><strong>Mapping<\/strong>: jednostki wykonawcze &#8211; cz\u0142onkowie komisji wyborczych,  zliczaj\u0105 pojedyncze g\u0142osy.<\/li>\n<li style=\"text-align: justify;\"><strong>Shuffling<\/strong>: nast\u0119puje redystrybucja g\u0142os\u00f3w oddanych na poszczeg\u00f3lne partie.<\/li>\n<li style=\"text-align: justify;\"><strong>Reducing<\/strong>:\u00a0zostaj\u0105 utworzone grupy z\u0142o\u017cone z g\u0142os\u00f3w oddanych na te same partie.<\/li>\n<\/ol>\n<p style=\"text-align: justify;\">Pa\u0144stwowa Komisja Wyborcza mo\u017ce pracowa\u0107 sprawnie dlatego,  \u017ce otrzymuje pogrupowane informacje o wynikach z mniejszych jednostek,  a nie zostaje zalana dwudziestoma milionami g\u0142os\u00f3w.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-14.33.56.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-21479\" src=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-14.33.56.png\" alt=\"Zrzut ekranu 2016-02-26 o 14.33.56\" width=\"953\" height=\"556\" srcset=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-14.33.56.png 953w, https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-14.33.56-475x277.png 475w, https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-14.33.56-768x448.png 768w, https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-14.33.56-950x554.png 950w\" sizes=\"(max-width: 953px) 100vw, 953px\" \/><\/a><\/p>\n<h2 style=\"text-align: justify;\">Hadoop w Sotrenderze<\/h2>\n<h3 style=\"text-align: justify;\">Pocz\u0105tki &#8211; MySQL.<\/h3>\n<p style=\"text-align: justify;\">Nasze dzia\u0142ania zaczynali\u015bmy na MySQL,  od jednego serwera. Dodaj\u0105c co kilka miesi\u0119cy kolejne i coraz mocniejsze,  doszli\u015bmy do 6 maszyn. Jednak by\u0142a to droga nieefektywna,  nieskalowalna,  wymagaj\u0105ca coraz to wi\u0119kszej ilo\u015bci maszyn,  co prze\u0142o\u017cy\u0142oby si\u0119 na problemy z migracj\u0105 danych. Ponadto przy awariach MySQLa naprawy by\u0142y czasoch\u0142onne,  nie wspominaj\u0105c o przera\u017caj\u0105cej liczbie zmiennych konfiguracyjnych.<\/p>\n<p style=\"text-align: justify;\">Hadoop okaza\u0142 si\u0119 dla nas rozwi\u0105zaniem problemu sk\u0142adowania i przechowywania danych. Obecnie aktywnie korzystamy z <strong>HBase<\/strong> i <strong>Hive<\/strong>\u00a0do zbierania i przetwarzania naszych zbior\u00f3w danych. Wykorzystujemy te\u017c innne rozwi\u0105zania z rodziny Hadoop takie jak Spark czy Solr.<\/p>\n<h3 style=\"text-align: justify;\">Gdzie znajdziecie wykorzystanie Hadoopa w Sotrenderze<\/h3>\n<p style=\"text-align: justify;\">Zesp\u00f3\u0142 analityk\u00f3w pracuj\u0105cy w R wykorzystuje Hadoopa przede wszystkim do niestandardowych raport\u00f3w realizowanych na \u017cyczenie klient\u00f3w. Ale ka\u017cdy z Was mia\u0142 na pewno okazj\u0119 zetkn\u0105\u0107 si\u0119 z <a href=\"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/fanpage-trends-styczen-2016\/\" target=\"_blank\">Trendsami<\/a>. One tak\u017ce powsta\u0142y &#8220;dzi\u0119ki&#8221; tej platformie!<\/p>\n<p><a href=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-15.04.08.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-21481 aligncenter\" src=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2016\/02\/Zrzut-ekranu-2016-02-26-o-15.04.08.png\" alt=\"Zrzut ekranu 2016-02-26 o 15.04.08\" width=\"305\" height=\"433\" \/><\/a><\/p>\n<p style=\"text-align: justify;\"><em>Materia\u0142 zosta\u0142 przedstawiony przez <a href=\"https:\/\/pl.linkedin.com\/in\/pawelkucharski\" target=\"_blank\">Paw\u0142a Kucharskiego<\/a>,  wsp\u00f3\u0142za\u0142o\u017cyciela i CTO Sotrendera podczas\u00a0<a href=\"http:\/\/analyticsconf.pl\/\" target=\"_blank\">AnalyticsConf 2015<\/a>. Ca\u0142o\u015b\u0107 prezentacji znajdziecie tutaj: <a href=\"http:\/\/kenis.pl\/pawel-kucharski-oswajamy-slonia-czyli-po-co-nam-hadoop-czesc-i, 103471\" target=\"_blank\">cz\u0119\u015b\u0107 1<\/a> i <a href=\"http:\/\/kenis.pl\/pawel-kucharski-oswajamy-slonia-czyli-po-co-nam-hadoop-czesc-ii, 103472, 2\" target=\"_blank\">cz\u0119\u015b\u0107 2<\/a>.\u00a0<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Opowiemy Wam dzi\u015b o tym, jak oswoi\u0107 S\u0142onia, czyli\u00a0Apache Hadoop, dlaczego si\u0119 na niego zdecydowali\u015bmy, co zyskali\u015bmy i jakie napotkali\u015bmy problemy.\u00a0Zapewniam, \u017ce b\u0119dzie to pigu\u0142ka wiedzy przyswajalna tak\u017ce dla tych, kt\u00f3rzy nie maj\u0105 nic wsp\u00f3lnego z IT. Dowiecie si\u0119 m.in. dlaczego warto zatrudni\u0107 s\u0142onia w komisji wyborczej, a tak\u017ce jak powstaj\u0105 nasze raporty Trends.<\/p>\n","protected":false},"author":11,"featured_media":19537,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1795],"tags":[1939],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kulisy Sotrendera: wprowadzenie do Apache Hadoop<\/title>\n<meta name=\"description\" content=\"Czym jest Hadoop i czym r\u00f3\u017cni si\u0119 od relacyjnych baz danych, dlaczego zdecydowali\u015bmy si\u0119 na Hadoopa, co zyskali\u015bmy i jakie problemy napotkali\u015bmy.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kulisy Sotrendera: wprowadzenie do Apache Hadoop\" \/>\n<meta property=\"og:description\" content=\"Czym jest Hadoop i czym r\u00f3\u017cni si\u0119 od relacyjnych baz danych, dlaczego zdecydowali\u015bmy si\u0119 na Hadoopa, co zyskali\u015bmy i jakie problemy napotkali\u015bmy.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/\" \/>\n<meta property=\"og:site_name\" content=\"Sotrender Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Sotrender\" \/>\n<meta property=\"article:published_time\" content=\"2016-02-29T12:40:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-03-01T09:02:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2013\/11\/start-advertising-950x689.png\" \/>\n\t<meta property=\"og:image:width\" content=\"950\" \/>\n\t<meta property=\"og:image:height\" content=\"689\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Pawe\u0142 Kucharski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Sotrender\" \/>\n<meta name=\"twitter:site\" content=\"@Sotrender\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Pawe\u0142 Kucharski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/\",\"url\":\"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/\",\"name\":\"Kulisy Sotrendera: wprowadzenie do Apache Hadoop\",\"isPartOf\":{\"@id\":\"https:\/\/www.sotrender.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2013\/11\/start-advertising.png\",\"datePublished\":\"2016-02-29T12:40:51+00:00\",\"dateModified\":\"2016-03-01T09:02:05+00:00\",\"author\":{\"@id\":\"https:\/\/www.sotrender.com\/blog\/#\/schema\/person\/90205d37ef35d99d0045c74a867fe24e\"},\"description\":\"Czym jest Hadoop i czym r\u00f3\u017cni si\u0119 od relacyjnych baz danych, dlaczego zdecydowali\u015bmy si\u0119 na Hadoopa, co zyskali\u015bmy i jakie problemy napotkali\u015bmy.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/#primaryimage\",\"url\":\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2013\/11\/start-advertising.png\",\"contentUrl\":\"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2013\/11\/start-advertising.png\",\"width\":3926,\"height\":2848},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sotrender.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kulisy Sotrendera: oswajanie s\u0142onia Hadoopa.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sotrender.com\/blog\/#website\",\"url\":\"https:\/\/www.sotrender.com\/blog\/\",\"name\":\"Sotrender Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sotrender.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sotrender.com\/blog\/#\/schema\/person\/90205d37ef35d99d0045c74a867fe24e\",\"name\":\"Pawe\u0142 Kucharski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/www.sotrender.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/62e97ad8547d4a9471eeaccc26cb8d28?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/62e97ad8547d4a9471eeaccc26cb8d28?s=96&d=mm&r=g\",\"caption\":\"Pawe\u0142 Kucharski\"},\"description\":\"Coder with 10 years of experience in big data, who built a yacht &amp; a space craft, and developed software solutions for MVNO, IM &amp; VoIP operators, TV shows, &amp; governments.\",\"sameAs\":[\"https:\/\/pl.linkedin.com\/in\/pawelkucharski\"],\"url\":\"https:\/\/www.sotrender.com\/blog\/pl\/author\/kucharski_pawe\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kulisy Sotrendera: wprowadzenie do Apache Hadoop","description":"Czym jest Hadoop i czym r\u00f3\u017cni si\u0119 od relacyjnych baz danych, dlaczego zdecydowali\u015bmy si\u0119 na Hadoopa, co zyskali\u015bmy i jakie problemy napotkali\u015bmy.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/","og_locale":"pl_PL","og_type":"article","og_title":"Kulisy Sotrendera: wprowadzenie do Apache Hadoop","og_description":"Czym jest Hadoop i czym r\u00f3\u017cni si\u0119 od relacyjnych baz danych, dlaczego zdecydowali\u015bmy si\u0119 na Hadoopa, co zyskali\u015bmy i jakie problemy napotkali\u015bmy.","og_url":"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/","og_site_name":"Sotrender Blog","article_publisher":"https:\/\/www.facebook.com\/Sotrender","article_published_time":"2016-02-29T12:40:51+00:00","article_modified_time":"2016-03-01T09:02:05+00:00","og_image":[{"width":950,"height":689,"url":"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2013\/11\/start-advertising-950x689.png","type":"image\/png"}],"author":"Pawe\u0142 Kucharski","twitter_card":"summary_large_image","twitter_creator":"@Sotrender","twitter_site":"@Sotrender","twitter_misc":{"Written by":"Pawe\u0142 Kucharski","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/","url":"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/","name":"Kulisy Sotrendera: wprowadzenie do Apache Hadoop","isPartOf":{"@id":"https:\/\/www.sotrender.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/#primaryimage"},"image":{"@id":"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/#primaryimage"},"thumbnailUrl":"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2013\/11\/start-advertising.png","datePublished":"2016-02-29T12:40:51+00:00","dateModified":"2016-03-01T09:02:05+00:00","author":{"@id":"https:\/\/www.sotrender.com\/blog\/#\/schema\/person\/90205d37ef35d99d0045c74a867fe24e"},"description":"Czym jest Hadoop i czym r\u00f3\u017cni si\u0119 od relacyjnych baz danych, dlaczego zdecydowali\u015bmy si\u0119 na Hadoopa, co zyskali\u015bmy i jakie problemy napotkali\u015bmy.","breadcrumb":{"@id":"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/#primaryimage","url":"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2013\/11\/start-advertising.png","contentUrl":"https:\/\/www.sotrender.com\/blog\/wp-content\/uploads\/2013\/11\/start-advertising.png","width":3926,"height":2848},{"@type":"BreadcrumbList","@id":"https:\/\/www.sotrender.com\/blog\/pl\/2016\/02\/kulisy-sotrendera-oswajanie-slonia-hadoopa\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sotrender.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Kulisy Sotrendera: oswajanie s\u0142onia Hadoopa."}]},{"@type":"WebSite","@id":"https:\/\/www.sotrender.com\/blog\/#website","url":"https:\/\/www.sotrender.com\/blog\/","name":"Sotrender Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sotrender.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pl-PL"},{"@type":"Person","@id":"https:\/\/www.sotrender.com\/blog\/#\/schema\/person\/90205d37ef35d99d0045c74a867fe24e","name":"Pawe\u0142 Kucharski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.sotrender.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/62e97ad8547d4a9471eeaccc26cb8d28?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/62e97ad8547d4a9471eeaccc26cb8d28?s=96&d=mm&r=g","caption":"Pawe\u0142 Kucharski"},"description":"Coder with 10 years of experience in big data, who built a yacht &amp; a space craft, and developed software solutions for MVNO, IM &amp; VoIP operators, TV shows, &amp; governments.","sameAs":["https:\/\/pl.linkedin.com\/in\/pawelkucharski"],"url":"https:\/\/www.sotrender.com\/blog\/pl\/author\/kucharski_pawe\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sotrender.com\/blog\/pl\/wp-json\/wp\/v2\/posts\/21465"}],"collection":[{"href":"https:\/\/www.sotrender.com\/blog\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sotrender.com\/blog\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sotrender.com\/blog\/pl\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sotrender.com\/blog\/pl\/wp-json\/wp\/v2\/comments?post=21465"}],"version-history":[{"count":16,"href":"https:\/\/www.sotrender.com\/blog\/pl\/wp-json\/wp\/v2\/posts\/21465\/revisions"}],"predecessor-version":[{"id":21519,"href":"https:\/\/www.sotrender.com\/blog\/pl\/wp-json\/wp\/v2\/posts\/21465\/revisions\/21519"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sotrender.com\/blog\/pl\/wp-json\/wp\/v2\/media\/19537"}],"wp:attachment":[{"href":"https:\/\/www.sotrender.com\/blog\/pl\/wp-json\/wp\/v2\/media?parent=21465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sotrender.com\/blog\/pl\/wp-json\/wp\/v2\/categories?post=21465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sotrender.com\/blog\/pl\/wp-json\/wp\/v2\/tags?post=21465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}