מדריך Apache Sqoop - ייבוא ​​/ ייצוא נתונים בין HDFS ו- RDBMS



מדריך Apache Sqoop: Sqoop הוא כלי להעברת נתונים בין מסדי Hadoop ומערכות יחסיים. בלוג זה מכסה ייבוא ​​וייצוא של Sooop מ- MySQL.

לפני שמתחילים במדריך זה של Apache Sqoop, הבה ניקח צעד אחורה. האם אתה זוכר את החשיבות של בליעת נתונים, כפי שדנו בכך בבלוג הקודם שלנו פלג אפאצ'י . כעת, כידוע, Apache Flume הוא כלי לביצוע נתונים עבור מקורות לא מובנים, אך ארגונים מאחסנים את הנתונים התפעוליים שלהם במאגרי מידע יחסיים. לכן, היה צורך בכלי שיכול לייבא ולייצא נתונים ממאגרי מידע יחסיים. זו הסיבה שנולד אפאצ'י סקופ. Sqoop יכול להשתלב בקלות עם Hadoop ולזרוק נתונים מובנים ממאגרי מידע יחסיים ב- HDFS, ולהחמיא לכוחו של Hadoop. זו הסיבה לכך, מחייב היכרות טובה עם Apache Sqoop ו- Flume.

בתחילה, Sqoop פותחה ותוחזקה על ידי Cloudera. מאוחר יותר, ב- 23 ביולי 2011, הודגר על ידי אפאצ'י. באפריל 2012, פרויקט Sqoop הועלה כפרויקט ברמה העליונה של אפאצ'י.





בבלוג הדרכה זה של אפאצ'י פלום, נדבר על:



נתחיל את הדרכת Apache Sqoop זו על ידי הצגת Apache Sqoop. ואז נעבור קדימה, נבין את היתרונות של השימוש ב- Apache Sqoop.

כיצד להפוך את מיתרי הפיתון - -

מדריך Apache Sqoop: מבוא ל- Sqoop

Apache Sqoop - מדריך Apache Sqoop - אדוריקהבאופן כללי, יישומים מתקשרים עם מסד הנתונים היחסי באמצעות RDBMS, וכך זה הופך את מאגרי המידע היחסים לאחד המקורות החשובים ביותר שמייצרים ביג דאטה. נתונים כאלה נשמרים בשרתי RDB במבנה ההתייחסותי. כאן, Apache Sqoop ממלא תפקיד חשוב ב , המספק אינטראקציה אפשרית בין שרת מסד הנתונים היחסי ל- HDFS.

אז, Apache Sqoop הוא כלי ב- אשר נועד להעביר נתונים בין HDFS (אחסון Hadoop) ושרתי מסדי נתונים יחסיים כמו MySQL, Oracle RDB, SQLite, Teradata, Netezza, Postgres וכו '. Apache Sqoop מייבא נתונים ממסדי נתונים יחסיים ל- HDFS, ומייצא נתונים מ- HDFS למסדי נתונים יחסיים. זה מעביר ביעילות נתונים בתפזורת בין Hadoop לחנויות נתונים חיצוניות כגון מחסני נתונים ארגוניים, מאגרי מידע יחסיים וכו '.



כך קיבל Sqoop את שמו - “ SQ ל 'לחד לִפְתוֹחַ & Hadoop ל- SQL ”.

בנוסף, Sqoop משמש לייבוא ​​נתונים ממאגרי נתונים חיצוניים לכלי המערכת האקולוגית של Hadoop כמו כוורת & HBase .

עכשיו, כידוע מה זה Apache Sqoop. אז בואו נתקדם בהדרכת Apache Sqoop ונבין מדוע ארגונים משתמשים בהרבה ב- Sqoop.

מדריך Apache Sqoop: מדוע Sqoop?

עבור מפתח Hadoop, המשחק בפועל מתחיל לאחר טעינת הנתונים ב- HDFS. הם משחקים סביב נתונים אלה על מנת לקבל תובנות שונות המסתתרות בנתונים המאוחסנים ב- HDFS.

לכן לצורך ניתוח זה יש להעביר את הנתונים השייכים במערכות ניהול מסדי נתונים יחסיים ל- HDFS. משימת הכתיבה קוד לייבוא ​​וייצוא נתונים ממסד הנתונים היחסי ל- HDFS אינו מעניין ומייגע. כאן בא אפאצ'י סקופ להציל ומסיר את כאבם. הוא מבצע אוטומציה של תהליך הייבוא ​​והייצוא של הנתונים.

Sqoop מקל על חייהם של מפתחים על ידי מתן CLI לייבוא ​​וייצוא נתונים. הם רק צריכים לספק מידע בסיסי כמו אימות מסד נתונים, מקור, יעד, פעולות וכו '. זה דואג לחלק הנותר.

Sqoop ממיר את הפקודה באופן פנימי למשימות MapReduce, שמבוצעות לאחר מכן באמצעות HDFS. היא משתמשת במסגרת YARN כדי לייבא ולייצא את הנתונים, המספקים סובלנות לתקלות בנוסף למקבילות.

להתקדם בבלוג זה של Sqoop Tutorial, נבין את התכונות העיקריות של Sqoop ואז נעבור לארכיטקטורה של Apache Sqoop.

מדריך Apache Sqoop: תכונות עיקריות של Sqoop

Sqoop מספק תכונות בולטות רבות כמו:

  1. טעינה מלאה : Apache Sqoop יכול לטעון את כל הטבלה באמצעות פקודה אחת. ניתן גם לטעון את כל הטבלאות ממסד נתונים באמצעות פקודה אחת.
  2. מצטבר לִטעוֹן : Apache Sqoop מספק גם את המתקן של עומס מצטבר שבו אתה יכול לטעון חלקי טבלה בכל פעם שהיא מתעדכנת.
  3. מַקְבִּיל יבוא ויצוא : Sqoop משתמשת במסגרת YARN כדי לייבא ולייצא את הנתונים, המספקים סובלנות לתקלות בנוסף למקבילות.
  4. יְבוּא תוצאות שֶׁל SQL שאילתא : ניתן גם לייבא את התוצאה שהוחזרה משאילתת SQL ב- HDFS.
  5. דְחִיסָה : באפשרותך לדחוס את הנתונים שלך באמצעות אלגוריתם ניפוח (gzip) עם הארגומנט –קומפרס, או על ידי ציון הארגומנט –compression-codec. ניתן גם לטעון טבלה דחוסה ב כוורת אפאצ'י .
  6. מחברים ל את כל גדול RDBMS מאגרי מידע : Apache Sqoop מספק מחברים למסדי נתונים מרובים של RDBMS, המכסים כמעט את כל ההיקף.
  7. קרברוס בִּטָחוֹן שילוב : Kerberos הוא פרוטוקול אימות רשת מחשבים שעובד על בסיס 'כרטיסים' כדי לאפשר צמתים המתקשרים ברשת לא מאובטחת כדי להוכיח את זהותם זה לזה בצורה מאובטחת. Sqoop תומך באימות Kerberos.
  8. לִטעוֹן נתונים ישירות לְתוֹך HIVE / HBase : אתה יכול לטעון נתונים ישירות לתוכנה כוורת אפאצ'י לניתוח וגם זרוק את הנתונים שלך ב- HBase, שהוא מסד נתונים NoSQL.
  9. תמיכה ל הצטברות : אתה יכול גם להורות ל- Sqoop לייבא את הטבלה ב- Accumulo ולא בספריה ב- HDFS.

הארכיטקטורה היא כזו שמעצימה את Apache Sqoop עם היתרונות הללו. עכשיו, כידוע את התכונות של Apache Sqoop, בואו נתקדם ונבין את הארכיטקטורה והעבודה של Apache Sqoop.

מדריך Apache Sqoop: Sqoop אדריכלות ועבודה

הבה נבין כיצד פועל Apache Sqoop באמצעות התרשים שלהלן:

כלי הייבוא ​​מייבא טבלאות בודדות מ- RDBMS ל- HDFS. כל שורה בטבלה מתייחסת לרשומה ב- HDFS.

כאשר אנו מגישים פקודת Sqoop, המשימה העיקרית שלנו מתחלקת למשימות משנה אשר מטופלת על ידי משימת מפה פרטנית באופן פנימי. משימת המפה היא תת המשימה, המייבאת חלק מהנתונים למערכת האקולוגית של Hadoop. באופן קולקטיבי, כל משימות המפה מייבאות את כל הנתונים.

גם ייצוא פועל באופן דומה.

כלי הייצוא מייצא קבוצה של קבצים מ- HDFS חזרה ל- RDBMS. הקבצים הניתנים כקלט ל- Sqoop מכילים רשומות הנקראות כשורות בטבלה.

כאשר אנו מגישים את המשימה שלנו, היא ממופה למשימות מפה שמביאות את נתח הנתונים מ- HDFS. נתחים אלה מיוצאים ליעד נתונים מובנים. בשילוב כל נתחי הנתונים המיוצאים הללו, אנו מקבלים את כל הנתונים ביעד, שברוב המקרים הם RDBMS (MYSQL / Oracle / SQL Server).

שלב צמצום נדרש במקרה של צבירות. אבל, Apache Sqoop פשוט מייבא ומייצא את הנתונים שהוא לא מבצע שום צבירה. עבודת מפה משיקה מספר ממפים בהתאם למספר שהגדיר המשתמש. לייבוא ​​Sqoop, כל משימת מיפוי תוקצה עם חלק מהנתונים המיובאים. Sqoop מפיץ את נתוני הקלט בין המפות באופן שווה כדי להשיג ביצועים גבוהים. ואז כל ממפה יוצר קשר עם מסד הנתונים באמצעות JDBC ומביא את החלק של הנתונים שהוקצה על ידי Sqoop וכותב אותו ל- HDFS או Hive או HBase בהתבסס על הטיעונים המוצגים ב- CLI.

עכשיו, אחרי שאנחנו מבינים את הארכיטקטורה והעבודה של Apache Sqoop, בואו נבין את ההבדל בין Apache Flume ו- Apache Sqoop.

מדריך Apache Sqoop: Flume vs Sqoop

ההבדל העיקרי בין Flume ל- Sqoop הוא:

  • Flume רק בולע נתונים לא מובנים או נתונים מובנים למחצה ל- HDFS.
  • בעוד ש- Sqoop יכול לייבא כמו גם לייצא נתונים מובנים ממחסני נתונים RDBMS או ארגונים ל- HDFS או להיפך.

כעת, בהתקדמות בהדרכת Apache Sqoop שלנו, הגיע הזמן לעבור על פקודות Apache Sqoop.

מדריך Apache Sqoop: פקודות Sqoop

  • Sqoop - פיקוד ייבוא

פקודת הייבוא ​​משמשת לייבוא ​​טבלה ממסדי נתונים יחסיים ל- HDFS. במקרה שלנו, אנו הולכים לייבא טבלאות ממסדי נתונים של MySQL ל- HDFS.

כפי שניתן לראות בתמונה למטה, יש לנו טבלת עובדים במאגר העובדים אותה נייבא ל- HDFS.

הפקודה לייבוא ​​טבלה היא:

יבוא sqoop - חיבור jdbc: mysql: // localhost / עובדים - שם משתמש edureka - עובדי שולחן

כפי שניתן לראות בתמונה למטה, לאחר ביצוע פקודה זו משימות מפה יבוצעו בקצה האחורי.

לאחר ביצוע הקוד, תוכלו לבדוק את ממשק האינטרנט של HDFS כלומר localhost: 50070 לאן מיובאים הנתונים.

  • Sqoop - פקודת IMPORT עם ספריית יעד

ניתן גם לייבא את הטבלה בספרייה ספציפית ב- HDFS באמצעות הפקודה הבאה:

יבוא sqoop - חיבור jdbc: mysql: // localhost / עובדים - שם משתמש edureka - עובדי שולחן - m 1 - target-dir / עובדים

Sqoop מייבא נתונים במקביל מרוב מקורות בסיס הנתונים. -M המאפיין משמש כדי לציין את מספר המפות שיש לבצע.

Sqoop מייבא נתונים במקביל מרוב מקורות בסיס הנתונים. באפשרותך לציין את מספר משימות המפה (תהליכים מקבילים) שישמשו לביצוע הייבוא ​​באמצעות -M אוֹ - מספר ממפות טַעֲנָה. כל אחד מהטיעונים הללו לוקח ערך שלם המתאים למידת ההקבלה שיש להשתמש בו.

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

ניתן לראות בתמונה למטה שמספר משימת המפות הוא 1.

מספר הקבצים שנוצרים בעת ייבוא ​​טבלאות MySQL שווה למספר המפות שנוצר.

  • Sqoop - פקודת יבוא עם סעיף איפה

באפשרותך לייבא תת-קבוצה של טבלה באמצעות סעיף 'לאן' בכלי הייבוא ​​של Sqoop. היא מבצעת את שאילתת ה- SQL המתאימה בשרת מסד הנתונים המתאים ומאחסנת את התוצאה בספריית יעד ב- HDFS. אתה יכול להשתמש בפקודה הבאה כדי לייבא נתונים עם ' איפה סעיף:

ייבוא ​​sqoop - חיבור jdbc: mysql: // localhost / עובדים - שם משתמש edureka - עובדים עובדים - m 3 - איפה 'emp_no & gt 49000' - target-dir / אחרון_עובדים

לקרוא ולכתוב קובץ Excel ב- Java

  • Sqoop - ייבוא ​​מצטבר

Sqoop מספק מצב ייבוא ​​מצטבר שניתן להשתמש בו כדי לאחזר רק שורות חדשות יותר מקבוצת שורות שיובאה בעבר. Sqoop תומך בשני סוגים של יבוא מצטבר: לְצַרֵף ו שונה לאחרונה . באפשרותך להשתמש בארגומנט –התוספת כדי לציין את סוג הייבוא ​​המצטבר שיש לבצע.

עליך לציין לְצַרֵף במצב בעת ייבוא ​​טבלה שבה מתווספות ללא הרף שורות חדשות עם ערכי מזהה שורה גדלים. אתה מציין את העמודה שמכילה את מזהה השורה עם –בדוק טור . Sqoop מייבא שורות שבהן עמודת הסימון כוללת ערך גדול יותר מזה שצוין –ערך אחרון .

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

בעת הפעלת ייבוא ​​עוקב, עליך לציין –ערך אחרון בדרך זו כדי להבטיח שתייבא רק את הנתונים החדשים או המעודכנים. זה מטופל באופן אוטומטי על ידי יצירת ייבוא ​​מצטבר כעבודה שמורה, שהוא המנגנון המועדף לביצוע יבוא מצטבר חוזר.

ראשית, אנו מכניסים שורה חדשה שתתעדכן ב- HDFS שלנו.

הפקודה לייבוא ​​מצטבר היא:

יבוא sqoop - חיבור jdbc: mysql: // localhost / עובדים - שם משתמש edureka - עובדים עובדים - target-dir / אחרון_עובדים - נספח נוסף - check-column emp_no - last-value 499999

אתה יכול לראות בתמונה למטה, נוצר קובץ חדש עם הנתונים המעודכנים.

  • Sqoop - ייבא את כל הטבלאות

ניתן לייבא את כל הטבלאות משרת מסדי הנתונים RDBMS ל- HDFS. כל נתוני טבלה מאוחסנים בספריה נפרדת ושם הספריה זהה לשם הטבלה. חובה כי כל טבלה במסד נתונים זה חייבת לכלול שדה מפתח ראשי. הפקודה לייבוא ​​כל הטבלה ממסד נתונים היא:

sqoop ייבוא-כל-טבלאות - חיבור jdbc: mysql: // localhost / עובדים - שם edureka

  • Sqoop - מאגרי רשימה

באפשרותך לרשום את מסדי הנתונים הקיימים במסד הנתונים הקשור באמצעות Sqoop. כלי Sqoop רשימת מסדי נתונים מנתח ומבצע את שאילתת 'SHOW DATABASES' כנגד שרת מסד הנתונים. הפקודה לרישום מסדי נתונים היא:

מסדי נתונים של רשימת sqoop - חיבור jdbc: mysql: // localhost / - שם משתמש edureka

  • Sqoop - טבלאות רשימה

תוכל גם לרשום את הטבלאות של מסד נתונים מסוים בשרת מסד הנתונים MySQL באמצעות Sqoop. Sqoop רשימת טבלאות כלי מנתח ומבצע את שאילתת 'SHOW TABLES'. הפקודה לרישום טבלאות היא מסד נתונים היא:

טבלאות רשימת sqoop - חיבור jdbc: mysql: // localhost / עובדים - שם משתמש edureka

  • Sqoop - ייצוא

כפי שדנו לעיל, ניתן גם לייצא נתונים מה- HDFS למסד הנתונים RDBMS. טבלת היעד חייבת להתקיים במסד היעד.הנתונים נשמרים כרשומות ב- HDFS. רשומות אלו נקראות ומנותחות ומופרדות עם תיחום שצוין על ידי המשתמש.פעולת ברירת המחדל היא הכנסת כל הרשומה מקבצי הקלט לטבלת מסד הנתונים באמצעות משפט INSERT. במצב עדכון, Sqoop מייצר את משפט UPDATE המחליף את הרשומה הקיימת למסד הנתונים.

אז ראשית אנו יוצרים טבלה ריקה, אליה נצא את הנתונים שלנו.

הפקודה לייצא נתונים מ- HDFS למסד הנתונים היחסי היא:

ייצוא sqoop - חיבור jdbc: mysql: // localhost / עובדים - שם משתמש edureka - טבלה emp --export-dir / user / edureka / עובדים

  • סקוופ - קודגן

ביישום מונחה עצמים, לכל טבלת מסדי נתונים יש מחלקה אחת של אובייקט Access Access המכילה שיטות 'getter' ו- 'setter' לאתחול אובייקטים. קודגן מייצר את מחלקת DAO באופן אוטומטי. הוא מייצר מחלקת DAO בג'אווה, בהתבסס על מבנה Schema Table.

הפקודה ליצירת קוד Java היא:

sqoop codegen - connect jdbc: mysql: // localhost / עובדים - שם משתמש edureka - עובדי שולחן

להעביר קבצים למופע לינוקס ec2

אתה יכול לראות את הנתיב בתמונה לעיל היכן נוצר הקוד. בואו נלך בשביל לבדוק את הקבצים שנוצרו.

אני מקווה שהבלוג הזה אינפורמטיבי וערך מוסף עבורך. אם אתה מעוניין ללמוד עוד, תוכל לעבור על כך המספר על Big Data וכיצד Hadoop פותר אתגרים הקשורים ל- Big Data.

עכשיו אחרי שהבנת את Apache Sqoop, בדוק את מאת אדוריקה, חברת למידה מקוונת מהימנה עם רשת של יותר מ -250,000 לומדים מרוצים הפרוסים ברחבי העולם. קורס הכשרת ההסמכה של אדוריקה ביג דאטה Hadoop עוזר ללומדים להיות מומחים בתחום HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume ו- Sqoop תוך שימוש במקרי שימוש בזמן אמת בתחום הקמעונאות, מדיה חברתית, תעופה, תיירות, פיננסים.

יש לך שאלה עבורנו? אנא הזכיר זאת בסעיף ההערות ונחזור אליך.