עולם ה- Big Data ופתרון ה- Hadoop – מאמר מתוך Oracle Newsletter
לאחרונה פורסם מאמר שכתבתי ל-Oracle Newsletter בנושא Big Data ו-Hadoop. המאמר התחלק לשני חלקים: החלק הראשון הוא תאור כללי של Big Data ו-Hadoop והחלק השני הוא תיאור הפתרון של אורקל לנושא.
מצורף המאמר להנאתכם:
עולם ה-Big Data ופתרון ה- Hadoop
כמויות המידע שנוצרות מדי יום הן בלתי נתפסות. לאור הדרישות שהולכות ומתגברות, אנחנו נתקלים בעולם חדש עם המון buzzwords. מבין כל המונחים החדשים אנחנו שומעים שוב ושוב על Big Data ו-Hadoop ונראה שהטכנולוגיות הללו ייקחו חלק חשוב בעתיד הנראה לעין.
הבעיה עם טכנולוגיות חדשות היא שלוקח זמן להבין את היכולות שלהן ולהפנים היכן הן יכולות לעזור לנו במציאות היומיומית שלנו. במאמר זה אנסה לתת מבוא לעולם ה- Big Data ו- Hadoop. המבוא יהיה כללי יחסית, אבל יתאר את העקרונות הבסיסיים ואת ההבדלים מהתפיסה הקלאסית של עולם בסיסי הנתונים של ימינו.
ראוי לומר כבר בהתחלה שהטיפול במערכות Big Data חורג, לעיתים קרובות, מהגבולות המסורתיים של ניהול בסיסי נתונים – הן בצורת הטיפול בנתונים והן בצורה שבה הנתונים מאוחזרים. דברים שבעבר דרשו כתיבה של קוד פשוט בשפת SQL הפכו לעיתים לכתיבה של קוד בשפת Java ושפות אחרות.
מה זה Big Data?
מערכת מוגדרת כמערכת Big Data היא לרוב מערכת אנאליטית – לעיתים קרובות מדובר במערכות BI המנתחות מידע פנים וחוץ אירגוני (לדוגמה – מידע מרשתות חברתיות), אך לפעמים מדובר במערכות המכילות מידע גולמי רב אותו יש לעבד במהירות וביעילות (לדוגמה במערכות לאיתור הונאות או במערכת למחקרים גנטיים). אף על פי שלעיתים קרובות נטען שמה שמגדיר Big Data זה רק הכמות הגדולה של המידע, אין הדבר מדויק כלל. מערכת מאופיינת כמערכת Big Data על פי חלוקה לשלושה ממדים עיקריים, שהוגדרו עוד בשנת 2001, המכונים שלושת ה-V-ים:
- ה-V הראשון הוא ה-Volume – נפח או כמות המידע. זהו ה-V האינטואיטיבי ביותר בעולם ה- Big Data: מערכת המתמודדת עם אתגרי הBig Data היא לרוב מערכת המטפלת בכמות גדולה מאוד של מידע. לפעמים מדובר בכמה טרה-בייטים, אבל לעיתים קרובות מדובר בכמויות גדולות בהרבה של מאות טרות או פטה-בייט.
- ה-V השני הוא ה-Velocity, כלומר המהירות שבה מידע חדש נוצר ונכנס או יוצא מהמערכת. בעולם שבו בכל שנייה יש עשרות אלפי ציוצים בטוויטר או פייסבוק, היכולת להתמודד עם שטף המידע היא אתגר קשה מאוד לפיצוח.
- ה-V השלישי והאחרון הוא ה-Variety – כלומר כמות סוגי המידע הנאספים, הסוג שלהם, כמות המקורות וכדומה. כאן ראוי להבין שלמרות שבסיסי הנתונים הרלציוניים היו מסודרים בצורה של טבלאות – המידע החדש שעל מערכות הBig Data לנהל אינו תמיד מגיע בצורה של שורות ועמודות (מידע מובנה), ולכן קשה יותר לטפל במידע הזה בצורה מסורתית.
מתוך שלושת הממדים האלה עולים שני אתגרים משמעותיים: האחד, כיצד מאחסנים את הכמויות האדירות של המידע, איך שומרים אותו ואיך ניגשים אליו מאוחר יותר. האתגר השני הוא כיצד מעבדים את כל המידע הזה: איך טוענים אותו במהירות, איך מחפשים בתוכו פריט מסוים בזמן סביר ואיך מנתחים מידע זה למידע שימושי?
שאלות אלה שאלה את עצמה חברת גוגל, ששמה לעצמה מטרה ליצור מנוע חיפוש של כל הדפים באינטרנט, ועל כן התמודדה עם הצורך לטפל בכמויות אדירות של מידע – מידע שמשתנה כל הזמן ואינו מובנה בשום צורה. חברת גוגל בחרה להשתמש בפתרון של Scale Out – כלומר ליצור clusters-ים של אלפי שרתים חלשים יחסית וביזור המידע עליהם. בשנת 2004 פרסמה גוגל סט של מאמרים מדעיים המפרטים את טכנולוגית ביזור השרתים, בה השתמשה באותה תקופה, ואת הטכנולוגיות שהיא הייתה מעוניינת לראות בעתיד כדי להתמודד עם כמויות המידע האדירות שהיא צריכה לטפל בהם. את המאמרים האלה קרא בחור בשם דאג קאטינג שהחליט לממש חלק מהטכנולוגיה של גוגל לצורך פרויקט אינדוקס מסמכים עליו עבד באותה תקופה. לטכנולוגיה שיצר הוא קרא Hadoop על שם פיל הצעצוע הצהוב של בנו (ומכאן גם הסבר ללוגו של הפרויקט).
אז מה זה בעצם Hadoop?
Hadoop זהו שם הקוד של פרויקט-על של תוכנות קוד פתוח, וטכנולוגיות שנועדו ליצור פלטפורמה שתסייע לבזר עיבודים על מספר מחשבים במקביל. באמצעות שימוש בכלים ובטכנולוגיות שפלטפורמה זו מספקת, ניתן לקחת פעולה "כבדה" (הן מבחינת זמן מעבד והן מבחינת כמות ה-I/O הנדרשת) ולפזר אותה על כמות גדולה של מחשבים חלשים יחסית כדי להשיג את התוצאה במהירות.
פרויקט Hadoop המרוכז על ידי ארגון Apache מציג שני פרוייקטי ליבה שבאים לתת מענה לשני האתגרים הגדולים של הBig Data. הפרויקט הראשון הוא פרויקט אחסון מבוזר בשם HDFS (Hadoop Distributed File System). באמצעות שימוש ב-HDFS אנחנו מקבלים חלוקה של קבצים ענקיים לקבצים קטנים יותר המפוזרים בין השרתים השונים לטובת קריאה מקבילית של המידע בין השרתים. הקבצים נשמרים על השרתים בצורה מקומית, ולרוב אינם משותפים בין כלל השרתים מעבר לדרישות השרידות. פרויקט ה-HDFS הוא התשתית לפרויקטים של בסיסי נתונים מסוג NoSQL, ומהווה את התחליף של בסיס הנתונים המסורתי בפתרון ה-Hadoop.
הפרויקט השני הוא פרויקט המציג מודל חדש של תכנות בשם MapReduce ומספק, בין היתר, את תשתית התוכנה (Framework) הנדרשת לעיבוד מקבילי של כמויות גדולות של מידע על גבי מספר שרתים בו זמנית. על פי המודל של MapReduce המתכנת צריך לממש בסך הכול שתי פונקציות: Map (מיפוי המידע) ו-Reduce (צמצום התוצאה) המטפלות באלמנט בודד של קלט – לדוגמה דף HTML או עץ XML בודד. התשתית של MapReduce מחלקת את המשימות על כלל האלמנטים של הקלט על ידי שימוש ב-HDFS ומבזרת את הפעילות על גבי כלל השרתים. התשתית יודעת גם להתמודד עם שגיאות בזמן הריצה כמו נפילת שרתים או בעיות רשת.
לאורך השנים הוסיפו גורמים שונים (בעיקר חברות כמו Yahoo! ו-Facebook), שכבות וכלים נוספים שבאו לפשט את השימוש בשני פרוייקטי הליבה ולהוסיף יכולות נוספות למנגנונים הללו. חלק מהכלים הפכו לחלקים בלתי נפרדים של Hadoop והם מרוכזים על ידי Apache. בין הדוגמאות לכלים האלה ניתן למצוא כלים כמו HBase המהווה שכבה של NoSQL מסוג Key-Pair Values לטבלאות גדולות במיוחד. ה-HBase גם מאפשר שימוש מלא ב-MapReduce על ידי API והוא למעשה בסיס הנתונים שפייסבוק משתמשת בו לשירות ההודעות שלה. מאחר והשימוש ב-HBase אינו אינטואיטיבי, פיתחו בפייסבוק ממשק בשם Hive מעל ה-HBase ובו שפה דמויית SQL אשר מתורגמת בזמן הריצה לתוכניות שונות של MapReduce. בסיס נתונים אחר המבוסס על HDFS שפותח על ידי פייסבוק הוא ה-Cassandra. בסיס נתונים זה הוא בסיס נתונים מסוג multi-master database והוא מתאפיין בשרידות ו-Scalability גבוהים. בסיס נתונים זה אינו משתמש בשפת SQL כלל לצורך גישה לנתונים.
כלי שימושי אחר שפותח על ידי חברת Yahoo! הוא כלי בשם Pig. כלי זה בא לפשט את הפיתוח של תכניות MapReduce ומספק שפה עילית המכונה Pig Latin, החוסכת את הצורך בפיתוח של קוד ב-Java כדי לבצע פעילויות שונות. באמצעות שימוש ב-Pig ניתן לצמצם תוכניות MapReduce של מאות שורות קוד לתוכניות בעלות שורות קוד בודדות. הכלי האחרון שנזכיר הוא ה-ZooKeeper שפותח במקור כתת פרויקט של Hadoop, אך הפך לפרויקט העומד בפני עצמו. כלי זה מאפשר ניהול של משימות מבוזרות וסנכרון משימות בסביבה מבוזרת. הכלי משמש בדרך כלל לניהול קונפיגורציה של בין שרתי ה-Cluster על ידי שירות ההודעות שהוא מספק.
חשוב להבין שקיימים כלים רבים נוספים – הן בפרויקטים המנוהלים על ידי ארגון Apache והן בפרויקטים עצמאיים שאינם חלק מהתשתית המקורית של Hadoop. במידה מסוימת, ניתן להשוות את Hadoop למערכת ההפעלה Linux: ישנם כלים וטכנולוגיות שהן חלק מהבסיס וישנם כלים נוספים שניתן להוסיף על התשתית לאחר הקמת התצורה. את התצורה ניתן לבנות באופן עצמאי על ידי בחירת הכלים באופן ידני ויזום, או על ידי שימוש בהפצה מסחרית בדומה ל-Linux. הפצה כזו היא, למשל, ההפצה של Cloudera המספקת סט של כלים מוכן מראש ומכוונן מראש לעבודה משותפת.
מה יש לאורקל להציע?
לחברת אורקל ישנם כמה פתרונות הקשורים ל-Big Data ו-Hadoop. חלקם פתרונות לניהול Big Data וחלקם פתרונות לשילוב תוצרים של Big Data עם פתרונות מסורתיים יותר.
הפתרון הראשון לניהול Big Data הוא בסיס הנתונים Oracle NoSQL Database המבוסס על בסיס הנתונים BerkeleyDB (בסיס נתונים NoSQL מסוג Key-Pair Value) ו-InnoDB (המנוע המקורי של MySQL). בסיס הנתונים זה אינו עובד ב-SQL, אלא מספק ממשק Java לשימוש בבסיס הנתונים. בסיס נתונים זה בא לתת מענה לניהול של מידע לא מובנה (unstructured data). על פתרונות NoSQL, היכולות והמשמעויות שלהם נדבר במאמר נפרד.
הפתרון השני והמקיף יותר לניהול המידע הוא ה-Oracle Big Data Appliance. אורקל יצרה חיבור בין חומרה ותוכנה כדי לתת פתרון לאתגרים של ה-Big Data ומספקת פתרון מקונפג מראש – Big Data in a box.
ה-Appliance המלא מורכב cluster של 18 שרתי לינוקס כאשר כל אחד מהם מכיל 2 מעבדים בעלי 6 ליבות, 48 גיגה של זיכרון RAM ו-36 טרה של שטח אחסון (בסך הכול כ-216 ליבות, 864 גיגה זיכרון וכ-650 טרה של שטח אחסון). מצד התוכנה חברה אורקל לחברת Cloudera ומשתמשת בהפצת ה-Hadoop שלה ב-Appliance, וזאת ביחד עם כלים נוספים מבית Cloudera לניהול ה-cluster. בנוסף מספקת אורקל את בסיס הנתונים ה-NoSQL שלה (בגרסת ה-Community) וסט של Open Source Distribution of R. הכוונה ב-R לסט של כלים היוצרים שפה חדשה לניתוח סטטיסטי של מידע ומבוססים על MapReduce.
בנוסף לכלים לניהול המידע ב-Big Data, מספקת אורקל כלים נוספים (Connectors) כדי לטפל ולהשתמש במידע שנמצא במערכות ה-Big Data (בין אם ב-Appliance ובין אם מדובר בהפצה אחרת או אפילו במערכת שנבנתה ידנית):
- Oracle Loader for Hadoop – כלי לטעינת המידע מ-HDFS לתוך טבלאות ב-Oracle Database 11g על ידי שימוש ב-MapReduce ותשתיות Hadoop השונות. כלי זה מאפשר לקחת מידע מה-HDFS ולהפוך אותו למידע טבלאי לטובת טעינתו בבסיס הנתונים הרגיל.
- Oracle Direct Connector for HDFS – כלי המאפשר לגשת למידע ב-HDFS ישירות מבסיס הנתונים ללא טעינתו באופן מקומי.
- Oracle Data Integrator Application Adapter for Hadoop – כלי המאפשר לשלב מידע מבסיס הנתונים הרלציוני ומה-HDFS על ידי שימוש בממשק נוח.
לסיכום, Big Data הוא כבר אינו מונח ערטילאי. הדרישות הקיימות בארגונים גדולים כיום מחייבות אותם לצאת מניהול המידע הנוכחי ולעבור לטכנולוגיות חדשות המאפשרות את הגמישות והמהירות בהם הארגון צריך לעמוד. עושה רושם שהמחשוב המקבילי והתשתית המבוזרת הם הבסיס לניהול המידע העתידי. כעת, עם כניסת חברות התוכנה הגדולות לעולם הזה והבאת ה-Big Data לעולם ה-enterprise, אין ספק שעולם ה-IT כולו עומד בפני שינוי, וכל שנותר לנו הוא ללמוד את העולם החדש ולדעת להוציא ממנו את מה שיוכל לתת לנו.
למידע נוסף על מיפוי עולם ה-Big Data, ניתן לקרוא במאמר הבא.
מאמר מצוין וממצה של נושא ה-Big Data.
נהניתי מאוד לקרוא!
תודה רבה, אני שמח שנהנית – אתה מוזמן להרשם לבלוג ולשתף את המאמר.. 🙂
HBase הוא Columns DB מבוסס על פרסום של Google ב 2006 BigTable ו Map-Reduce הוא חלק מתשתית של Hadoop (ראה http://hadoop.apache.org/).
הכי חשוב, נהניתי לקרוא את המאמר הגדרה מעולה ל – BigData, תודה.