10 דרכים לשאילתת Hadoop עם SQL

SQL: ישן וחזה. Hadoop: חם חדש. זו החוכמה המקובלת, אך המספר העצום של פרויקטים שמציב חזית SQL נוחה בחנויות הנתונים של Hadoop מראה שיש צורך אמיתי במוצרים שמריצים שאילתות SQL מול נתונים שחיים בתוך Hadoop בניגוד לשימוש רק בדיווח המקורי של Hadoop או בייצוא נתוני Hadoop ל מאגר מידע קונבנציונאלי.

MapR מייצרת הפצה משלה של Hadoop, והמהדורה החדשה ביותר (4.0.1) מצרפת אותה לארבעה מנועים נפרדים לשאילתת בקבוקון SQL של ​​Hadoop. הארבע הן מערכות שאילתת SQL משמעותיות עבור Hadoop, אך טכנולוגיית SQL-for-Hadoop הרבה יותר קיימת שם, והן בנויות לספק צרכים שונים ומקרי שימוש, מהאזוטרי לאוניברסלי.

ראשית, ארבעת מנועי ה- SQL שמגיעים עם MapR:

Apache Hive: זהו הפיתרון המקורי של SQL-on-Hadoop, שמנסה לחקות את ההתנהגות, התחביר והממשק (ים) של MySQL, כולל לקוח שורת פקודה. הוא כולל גם ממשק API של Java ו- JDBC עבור בעלי השקעה קיימת ביישומי Java שעושים שאילתות בסגנון MySQL. למרות הפשטות היחסית וקלות השימוש בה, Hive הייתה איטית וקריאה בלבד, מה שעורר מספר יוזמות לשיפור בה.

סטינגר: Hortonworks, מפיקת הפצת Hadoop משלה, החלה את פרויקט סטינגר כדרך לקדם את פיתוח Apache Hive ולשפר את ביצועיה. הגלגול האחרון של הפרויקט, Stinger.next, מכיל "זמני תגובה לשאילתת משנה שנייה" כאחת ממטרות התכנון שלו, לצד תמיכה בהתנהגויות עסקאות (הוספות, עדכונים ומחיקות). שינויים אלה אמורים להופיע לראשונה במהלך 18 החודשים הקרובים, ועם תכונות אחרות כמו ניתוח SQL לעקוב.

מקדחת אפאצ'י: יישום קוד פתוח של Dremel של גוגל (aka BigQuery), Drill תוכנן לבצע שאילתות בעלות אחזור נמוך במספר סוגים של מאגרי נתונים בו זמנית עם ממשקי שאילתה שונים (כגון Hadoop ו- NoSQL) ולהיות מדרגיים מאוד. Drill's נועדה גם להריץ שאילתות בטווח רחב של זמני ביצוע, שנמשכו כמה אלפיות השנייה בלבד לרוץ במשך דקות ארוכות. MapR טוענת ש- Drill צופה פני עתיד, ולא תואם רק לאחור, אחת הסיבות לכך שהוא בחר לשים מאמצי פיתוח משלו מאחורי הפרויקט ההוא.

Spark SQL: פרויקט ה- Spark של אפאצ'י מיועד לעיבוד נתונים אמת של זמן Hadoop בזמן אמת בזיכרון. ניצוץ SQL מבוסס על זה כדי לאפשר לכתוב שאילתות SQL כנגד נתונים. דרך טובה יותר לחשוב על זה עשויה להיות כמו Apache Hive עבור Apache Spark, מכיוון שהיא עושה שימוש חוזר בחלקים מרכזיים של טכנולוגיית Hive. במובן הזה, זה תוספת למי שכבר עובד עם Spark. (פרויקט קודם, כריש, הוכנס לפרויקט זה.)

מעבר לארבעה אלה, בולטים שישה אחרים:

אפאצ'י פיניקס: המפתחים שלה מכנים אותו "סקין סקין עבור HBase" - דרך לשאול על HBase עם פקודות דמויי SQL באמצעות מנהל התקן JDBC מוטמע הבנוי לפעולות גבוהות ולקריאת / כתיבה. שקול שזה כמעט לא פשוט עבור המשתמשים ב- HBase, בזכות היותו קוד פתוח, מפותח בצורה אגרסיבית ומצויד בתכונות שימושיות כמו טעינת נתונים בכמות גדולה.

Cloudera אימפלה: במובנים מסוימים, אימפלה היא יישום נוסף של Dremel / Apache Drill, שנועד להרחיב את Hive כך שמשתמשי Hive היוצאים יוכלו להפיק את המרב ממנה. ניתן לשאול נתונים המאוחסנים ב- HDFS או ב- HBase, ותחביר SQL זה, כצפוי, זהה ל- Apache Hive. אך ההבדל העיקרי של אימפלה מ- Drill הוא שהוא לא אמור להיות מקור-אגנוסטי; זה שואל את Hadoop באופן בלעדי.

HAWQ עבור Pivotal HD: Pivotal מספקת הפצת Hadoop משלה (Pivotal HD), ו- HAWQ הוא רכיב קנייני לביצוע שאילתות SQL ב- HDFS. כתוצאה מכך, זהו מוצר Pivotal בלבד, אם כי Pivotal צומח עבור עיבוד SQL מקביל שלו ועמידה גבוהה בתקני SQL.

פרסטו: מנוע שאילתות קוד פתוח זה נבנה על ידי מהנדסי פייסבוק ומשמש באופן פנימי בחברה זו, ומזכיר את אפאצ'י קידוח בכך שהוא אגנוסטי למקור. היא יכולה לשאול הן את כוורת והן את קסנדרה באמצעות פקודות ANSI SQL, ומפתחים יכולים להרחיב את המערכת על ידי כתיבת מחברים עבורה באמצעות ממשק ספקי השירות שלה. יש פונקציות להחדרת נתונים הנתמכות, אך הן עדיין בסיסיות מאוד: אינך יכול לבצע עדכונים, רק הוספות.

SQL של ​​אורקל ביג דאטה: זה היה רק ​​עניין של זמן עד שאורקל תשחרר חזית משלה לשאילתת SQL עבור Hadoop. כמו Drill, זה יכול לשאול הן Hadoop והן חנויות NoSQL אחרות. אך בניגוד ל- Drill, זהו המוצר של אורקל עצמו, והוא משתלב רק עם Oracle Database 12c ומעלה, מה שמגביל את השוק עבורו ברצינות.

IBM BigSQL: זה היה רק ​​עניין של זמן עד ש- IBM תבצע את אותו הדבר, למרות שהודיעה על התצוגה המקדימה הטכנולוגית הראשונה של BigSQL בתחילת 2013. למרבה הצער, כמו בהיצע של אורקל, היא קשורה למוצר ספציפי של IBM בקצה האחורי - במקרה זה, Hadoop של IBM, InfoSphere BigInsights. עם זאת, הקצה הקדמי יכול להיות לקוח JDBC / ODBC רגיל, ושאילתות יכולות לכלול נתונים ממערכות IBM DB2, Teradata או PureData עבור מקרים של Analytics.