سؤال

أحتاج إلى كتابة البيانات إلى Hadoop (HDFS) من مصادر خارجية مثل صندوق windows.لقد قمت الآن بنسخ البيانات إلى رمز الاسم واستخدام أمر وضع HDFS لاستيعابها في المجموعة.أثناء تصفحي للكود، لم أر واجهة برمجة التطبيقات (API) للقيام بذلك.آمل أن يُظهر لي شخص ما أنني مخطئ وأن هناك طريقة سهلة لترميز العملاء الخارجيين ضد HDFS.

هل كانت مفيدة؟

المحلول

تثبيت سيغوين، تثبيت Hadoop محليا (كل ما تحتاجه هو ثنائي والتكوينات تلك النقطة في NN - بدون الحاجة إلى تشغيل فعلا الخدمات)، تشغيل hadoop fs -copyFromLocal /path/to/localfile /hdfs/path/

ويمكنك أيضا استخدام سطح المكتب Cloudera جديد لتحميل ملف من خلال واجهة المستخدم على شبكة الإنترنت، على الرغم من أن القوة لا يمكن أن يكون خيارا جيدا للملفات العملاقة.

وهناك أيضا WEBDAV تراكب لHDFS لكني لا أعرف كيف مستقرة / يعتمد عليه وهذا هو.

نصائح أخرى

وهناك API في جاوة. يمكنك استخدامه من قبل بما في ذلك رمز Hadoop في المشروع. وجافادوك مفيد جدا بشكل عام، ولكن بالطبع عليك أن تعرف ما كنت تبحث عن ز * * http://hadoop.apache.org/common/docs/

لمشكلة معينة، إلقاء نظرة على العنوان التالي: HTTP: //hadoop.apache. غزاله / مشترك / مستندات / الحالي / المعهد / المنظمة / اباتشي / hadoop / خ م / FileSystem.html (وهذا ينطبق على الإصدار الأخير، والتشاور JavaDocs أخرى لإصدارات مختلفة!)

ودعوة نموذجية سيكون: Filesystem.get(new JobConf()).create(new Path("however.file")); التي يعود لك دفق يمكنك التعامل مع JavaIO العادية.

لمشكلة تحميل البيانات وكنت بحاجة إلى وضعها موضع HDFS، وأنا اخترت لتحويل مشكلة حولها.

وبدلا من تحميل الملفات إلى HDFS من الملقم حيث يقيمون، كتبت خريطة جافا / خفض ظيفة حيث معين قراءة الملف من ملف الخادم (في هذه الحالة عن طريق HTTPS)، ثم كتابة مباشرة إلى HDFS ( عبر جافا API ) .

وتتم قراءة قائمة الملفات من المدخلات. وبعد ذلك يكون برنامج نصي خارجية بملء ملف مع قائمة الملفات لجلب، بتحميل الملف إلى HDFS (باستخدام hadoop DFS -وضع )، ثم تبدأ خريطة / تقليل فرص العمل مع عدد محترم من المخططون.

وهذا يعطيني أداء نقل ممتازة، حيث يتم قراءة ملفات متعددة / مكتوبة في نفس الوقت.

وربما ليس هو الحل الذي تبحث عنه، ولكن نأمل على أي حال مفيدة: -)

وحوالي 2 سنوات بعد جوابي الماضية، هناك الآن اثنين من بدائل جديدة - هوب / HttpFS، وWebHDFS.

وفيما يتعلق هوب، أعلن لأول مرة في Cloudera ل بلوق ويمكن تحميلها من جيثب مستودع . لقد تمكنت من الحصول على هذا الإصدار للحديث بنجاح على الأقل Hadoop 0.20.1، فإنه يمكن ربما التحدث مع الإصدارات القديمة قليلا أيضا.

إذا كنت تقوم بتشغيل Hadoop 0.23.1 التي كانت في وقت كتابة لا يزال لا يتم تحرير، هوب هو بدلا من ذلك جزءا من Hadoop كمكون الخاصة به، وHttpFS. وقد تم هذا العمل كجزء من HDFS-2178 . هوب / HttpFS يمكن أن يكون وكيل ليس فقط لHDFS، ولكن أيضا لأنظمة الملفات الأخرى Hadoop المتوافقة مثل الأمازون S3.

وهوب / HttpFS يعمل على خدمة بذاتها الخاصة بها.

وهناك أيضا WebHDFS حيث يعمل كجزء من الخدمات NameNode وDataNode. كما يوفر API REST التي إذا فهمت بشكل صحيح، وهو متوافق مع HttpFS API. WebHDFS هو جزء من Hadoop 1.0 واحدة من السمات الأساسية هو أنه يوفر محلة البيانات - عندما كنت تقديم طلب قراءة، سيتم توجيهك إلى مكون WebHDFS على datanode حيث يوجد بيانات

وأي عنصر لاختيار يعتمد قليلا على الإعداد الحالي وما يجب أن يكون لديك. إذا كنت في حاجة الى واجهة HTTP REST لHDFS الآن وكنت تقوم بتشغيل الإصدار الذي لا يشمل WebHDFS، بدءا هوب من مستودع جيثب يبدو الخيار الأسهل. إذا كنت تقوم بتشغيل الإصدار الذي يتضمن WebHDFS، واود ان اذهب لذلك إلا إذا كنت بحاجة إلى بعض من ملامح هوب له أن WebHDFS يفتقر (الحصول على أنظمة الملفات الأخرى والحد من عرض النطاق الترددي، الخ.)

ويبدو أن هناك صفحة مخصصة الآن لهذا في http://wiki.apache.org/hadoop/MountableHDFS:

تسمح هذه المشاريع (المُعداد أدناه) بتركيب HDFs (على معظم نكهات UNIX) كنظام ملفات قياسي باستخدام أمر MOUNT.بمجرد تركيبه ، يمكن للمستخدم أن يعمل على مثيل من HDFs باستخدام أدوات UNIX القياسية مثل "LS" أو "CD" أو "CP" أو "MKDIR" أو "Find" أو "Grep" أو استخدام مكتبات Posix القياسية مثل Open ، اكتب ، اقرأ ، أغلق من C ، C ++ ، Python ، Ruby ، ​​Perl ، Java ، Bash ، إلخ.

في وقت لاحق يصف هذه المشاريع

  • تم بناء contrib/fuse-dfs على الصمامات وبعض الغراء C وlibhdfs وhadoop-dev.jar
  • تم بناء fuse-j-hdfs على fuse وfuse for java وhadoop-dev.jar
  • hdfs-fuse - مشروع كود Google يشبه إلى حد كبير contrib/fuse-dfs
  • WebDAV - HDFS المكشوفة كمورد WebDAV MAPR - يحتوي على نظام ملفات متوافق مع مصدر HDFS مغلق يدعم الوصول إلى NFS
  • HDFS NFS Proxy - يقوم بتصدير HDFS كـ NFS دون استخدام المصهر.يدعم kerberos و reorers يكتب حتى يتم كتابتها إلى HDFS بالتسلسل.

لم أجرب أيًا من هذه الأشياء، لكنني سأقوم بتحديث الإجابة قريبًا لأن لدي نفس حاجة OP

ويمكنك الآن أيضا محاولة استخدام Talend، التي تضم مكونات للتكامل Hadoop.

ويمكنك أن تجرب تصاعد HDFS على الجهاز الخاص بك (الذي يطلق عليه machine_X) حيث يتم تنفيذ التعليمات البرمجية وmachine_X يجب أن يكون لديك اتصال بتقنية InfiniBand مع HDFS التحقق من ذلك، <وأ href = "https://wiki.apache.org/ hadoop / MountableHDFS "يختلط =" نوفولو "> https://wiki.apache.org/hadoop/MountableHDFS

ويمكنك أيضا استخدام HadoopDrive ( http://hadoopdrive.effisoft.eu ). انها امتداد ويندوز قذيفة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top