دوال الجداول S3
s3 قراءة الملفات وكتابتها من وإلى وحدات تخزين متوافقة مع S3. والصيغة العامة لهذا التركيب هي:
- path — Bucket URL يتضمّن مسار الملف. يدعم هذا محارف البدل التالية في وضع القراءة فقط:
*،?،{abc,def}و{N..M}، حيث إنNوMأرقام، و'abc'و'def'سلاسل نصية. لمزيد من المعلومات، راجع الوثائق حول استخدام محارف البدل في المسار. - format — التنسيق الخاص بالملف.
- structure — بنية الجدول. التنسيق:
'column1_name column1_type, column2_name column2_type, ...'. - compression — هذه المعلمة اختيارية. القيم المدعومة:
none,gzip/gz,brotli/br,xz/LZMA,zstd/zst. بشكل افتراضي، يُكتشف الضغط تلقائيًا من امتداد الملف.
التحضير
DESCRIBE:
DESCRIBE TABLE كيف يستنتج ClickHouse هذه البيانات تلقائيًا كما تظهر في حاوية S3. لاحظ أنه يتعرّف أيضًا تلقائيًا على تنسيق الضغط gzip ويفك ضغطه:
MergeTree قياسيًا ليكون وجهتنا. تُنشئ التعليمة أدناه جدولًا باسم trips في قاعدة البيانات default. لاحظ أننا اخترنا تعديل بعض أنواع البيانات هذه كما استُنتج أعلاه، ولا سيما عدم استخدام مُعدِّل نوع البيانات Nullable()، إذ قد يؤدي ذلك إلى تخزين بعض البيانات الإضافية غير الضرورية وإلى بعض العبء الإضافي على الأداء:
pickup_date. عادةً ما يُستخدم مفتاح التقسيم لإدارة البيانات، لكننا سنستخدم هذا المفتاح لاحقًا لموازاة عمليات الكتابة إلى S3.
يمثل كل سجل في مجموعة بيانات سيارات الأجرة لدينا رحلةَ سيارة أجرة. وهذه البيانات منزوعة الهوية، وتتكون من 20 مليون سجل مخزّنًا بشكل مضغوط في حاوية S3 https://datasets-documentation.s3.eu-west-3.amazonaws.com/ ضمن المجلد nyc-taxi. البيانات بتنسيق TSV، وبمعدل يقارب مليون صف لكل ملف.
قراءة البيانات من S3
TabSeparatedWithNames يتضمن أسماء الأعمدة في الصف الأول. أما التنسيقات الأخرى، مثل CSV أو TSV، فستُرجع لهذا الاستعلام أعمدة مُنشأة تلقائيًا، مثل c1 وc2 وc3 وما إلى ذلك.
كما تدعم الاستعلامات الأعمدة الافتراضية، مثل _path و_file، والتي توفّر معلومات عن مسار الحاوية واسم الملف، على التوالي. على سبيل المثال:
MergeTree في ClickHouse.
استخدام clickhouse-local
clickhouse-local إجراء معالجة سريعة للملفات المحلية دون الحاجة إلى نشر ClickHouse server وتهيئته. ويمكن تنفيذ أي استعلامات تستخدم دالة الجدول s3 باستخدام هذه الأداة. على سبيل المثال:
إدراج البيانات من S3
s3 مع تعليمة INSERT بسيطة لتحقيق ذلك. لاحظ أنه لا يلزمنا سرد الأعمدة، لأن الجدول المستهدف يوفّر البنية المطلوبة. ويتطلب ذلك أن تظهر الأعمدة بالترتيب المحدد في عبارة DDL الخاصة بالجدول، إذ تُطابَق الأعمدة وفقًا لمواضعها في عبارة SELECT. وقد يستغرق إدراج جميع الصفوف البالغ عددها 10m بضع دقائق، وذلك بحسب مثيل ClickHouse. في ما يلي، نُدرج 1M صف لضمان استجابة سريعة. عدّل عبارة LIMIT أو اختيار الأعمدة لاستيراد مجموعات فرعية حسب الحاجة:
الإدراج عن بُعد باستخدام ClickHouse Local
clickhouse-local. في المثال أدناه، نقرأ من حاوية S3 ونُدرج البيانات في ClickHouse باستخدام الدالة remote:
لتنفيذ ذلك عبر اتصال SSL آمن، استخدم الدالة
remoteSecure.تصدير البيانات
s3. ويتطلب ذلك الأذونات المناسبة. نمرّر بيانات الاعتماد اللازمة مع الطلب، ولكن راجع صفحة إدارة بيانات الاعتماد للاطلاع على مزيد من الخيارات.
في المثال البسيط أدناه، نستخدم دالة الجدول كوجهة بدلًا من مصدر. هنا نرسل 10,000 صفًا من جدول trips إلى حاوية، مع تحديد ضغط lz4 ونوع الإخراج CSV:
s3، إذ يمكن استنتاجها من SELECT.
تقسيم الملفات الكبيرة
INSERT عدة مرات مع استهداف مجموعة فرعية من البيانات. ويوفّر ClickHouse طريقة لتقسيم الملفات تلقائيًا باستخدام مفتاح PARTITION.
في المثال أدناه، ننشئ عشرة ملفات باستخدام باقي القسمة للدالة rand(). لاحظ كيف يُشار إلى partition ID الناتج في اسم الملف. وينتج عن ذلك عشرة ملفات ذات لاحقة رقمية، مثل trips_0.csv.lz4 وtrips_1.csv.lz4 وما إلى ذلك…:
payment_type مفتاح تقسيم طبيعيًا بكاردينالية قدرها 5.
استخدام العناقيد
INSERT INTO SELECT، فإن هذا يترك عقدةً واحدةً فقط تتولى قراءة البيانات وتحليلها ومعالجتها. ولمواجهة هذا التحدي وإتاحة توسيع عمليات القراءة أفقيًا، لدينا الدالة s3Cluster.
تنشئ العقدة التي تستقبل الاستعلام، والمعروفة باسم العقدة البادئة، اتصالًا بكل عقدة في العنقود. ويُحلَّل نمط glob الذي يحدد الملفات المطلوب قراءتها إلى مجموعة من الملفات. ثم توزع العقدة البادئة الملفات على عقد العنقود، التي تعمل بوصفها عُقدًا عاملة. وتطلب هذه العقد العاملة بدورها ملفات لمعالجتها كلما انتهت من عمليات القراءة. وتضمن هذه العملية قدرتنا على توسيع عمليات القراءة أفقيًا.
تأخذ الدالة s3Cluster الصيغة نفسها الخاصة بمتغيرات العقدة الواحدة، باستثناء أنه يلزم تحديد عنقود مستهدف للإشارة إلى العقد العاملة:
cluster_name— اسم عنقود يُستخدم لبناء مجموعة من العناوين ومعلمات الاتصال بالخوادم البعيدة والمحلية.source— عنوان URL لملف أو لمجموعة من الملفات. يدعم محارف البدل التالية في وضع القراءة فقط:*,?,{'abc','def'}و{N..M}، حيث إن N و M — أرقام، و abc و def — سلاسل نصية. لمزيد من المعلومات، راجع Wildcards In Path.access_key_idوsecret_access_key— مفاتيح تحدد بيانات الاعتماد المطلوب استخدامها مع نقطة النهاية المحددة. اختيارية.format— التنسيق الخاص بالملف.structure— بنية الجدول. بالتنسيق ‘column1_name column1_type, column2_name column2_type, …’.
s3، تكون بيانات الاعتماد اختيارية إذا كانت الـ حاوية غير آمنة أو إذا كنت تُعرّف الأمان عبر البيئة، مثل IAM roles. لكن بخلاف دالة s3، يجب تحديد البنية في الطلب اعتبارًا من الإصدار 22.3.1، أي إن المخطط لا يُستنتج.
في معظم الحالات، ستُستخدم هذه الدالة كجزء من INSERT INTO SELECT. وفي هذه الحالة، غالبًا ما ستُدرج البيانات في جدول موزّع. نوضح أدناه مثالًا بسيطًا تكون فيه trips_all جدولًا موزّعًا. ومع أن هذا الجدول يستخدم عنقود events، فإن اتساق العُقد المستخدمة في عمليات القراءة والكتابة ليس شرطًا:
s3cluster.
محركات جداول S3
s3 إجراء استعلامات مخصّصة على البيانات المخزّنة في S3، فإن صياغتها مطوّلة. ويجنّبك محرك جداول S3 الحاجة إلى تحديد URL الخاصة بـ الحاوية وبيانات الاعتماد مرارًا وتكرارًا. ولمعالجة ذلك، يوفّر ClickHouse محرك جداول S3.
path— حاوية URL مع مسار للملف. يدعم محارف البدل التالية في وضع القراءة فقط:*و?و{abc,def}و{N..M}، حيث إن N و M — أرقام، و ‘abc’ و ‘def’ — سلاسل نصية. لمزيد من المعلومات، راجع هنا.format— تنسيق الملف.aws_access_key_id,aws_secret_access_key- بيانات اعتماد طويلة الأمد لمستخدم حساب AWS. يمكنك استخدامها لمصادقة طلباتك. هذه المعلمة اختيارية. إذا لم تُحدَّد بيانات الاعتماد، فستُستخدم قيم ملف الإعدادات. لمزيد من المعلومات، راجع إدارة بيانات الاعتماد.compression— نوع الضغط. القيم المدعومة: none, gzip/gz, brotli/br, xz/LZMA, zstd/zst. هذه المعلمة اختيارية. وبشكل افتراضي، سيُكتشَف نوع الضغط تلقائيًا استنادًا إلى امتداد الملف.
قراءة البيانات
trips_raw باستخدام أول عشرة ملفات TSV الموجودة في الحاوية https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/. يحتوي كل ملف منها على مليون صف:
{0..9} لقصره على الملفات العشرة الأولى. وبمجرد إنشائه، يمكننا الاستعلام عن هذا الجدول مثل أي جدول آخر:
إدراج البيانات
S3 عمليات القراءة المتوازية. ولا تُدعَم عمليات الكتابة إلا إذا كان تعريف الجدول لا يحتوي على أنماط glob. لذلك، لن يسمح الجدول أعلاه بعمليات الكتابة.
لتوضيح الكتابة، أنشئ جدولًا يشير إلى حاوية S3 قابلة للكتابة:
- حدّد الإعداد
s3_create_new_file_on_insert=1. سيؤدي ذلك إلى إنشاء ملفات جديدة مع كل عملية insert. ستُضاف لاحقة رقمية إلى نهاية كل ملف، وستزداد تدريجيًا مع كل insert operation. بالنسبة إلى المثال أعلاه، ستؤدي عملية insert لاحقة إلى إنشاء ملف trips_1.bin. - حدّد الإعداد
s3_truncate_on_insert=1. سيؤدي ذلك إلى truncate الملف، أي إنه بعد اكتمال العملية لن يحتوي إلا على الصفوف المُدرجة حديثًا.
s3_truncate_on_insert أولوية إذا جرى تعيين كليهما.
بعض الملاحظات حول محرك الجدول S3:
- بخلاف جدول تقليدي من عائلة
MergeTree، فإن dropping جدولS3لن يحذف البيانات الأساسية. - يمكن العثور على الإعدادات الكاملة لهذا النوع من الجداول هنا.
- انتبه إلى القيود التالية عند استخدام هذا المحرك:
- استعلامات ALTER غير مدعومة
- عمليات SAMPLE غير مدعومة
- لا يوجد مفهوم للفهارس، مثل primary أو skip.
إدارة بيانات الاعتماد
s3 أو في تعريف جدول S3. ومع أن هذا قد يكون مقبولًا للاستخدام العرضي، فإن المستخدمين في بيئات production يحتاجون إلى آليات authentication أقل صراحة. ولمعالجة ذلك، يوفّر ClickHouse عدة خيارات:
-
حدِّد تفاصيل الاتصال في config.xml أو في ملف تهيئة مكافئ ضمن conf.d. ويظهر أدناه محتوى ملف Example، بافتراض التثبيت باستخدام حزمة debian.
ستُستخدم بيانات الاعتماد هذه لأي طلبات يكون فيها endpoint أعلاه مطابقًا تمامًا كبادئة لـ URL المطلوب. ولاحظ أيضًا في هذا المثال إمكانية تعريف header للتفويض كبديل عن مفتاح الوصول والمفتاح السري. ويمكن العثور على قائمة كاملة بالإعدادات المدعومة هنا.
-
يوضّح المثال أعلاه توفّر مُعامِل التهيئة
use_environment_credentials. ويمكن أيضًا ضبط مُعامِل التهيئة هذا على المستوى العام ضمنs3:يفعّل هذا الإعداد محاولة استرداد بيانات اعتماد S3 من البيئة، مما يتيح الوصول عبر IAM roles. وعلى وجه التحديد، يُتَّبع ترتيب الاسترداد التالي:- البحث عن متغيرات البيئة
AWS_ACCESS_KEY_IDوAWS_SECRET_ACCESS_KEYوAWS_SESSION_TOKEN - إجراء تحقق في $HOME/.aws
- بيانات اعتماد مؤقتة يتم الحصول عليها عبر خدمة AWS Security Token Service، أي عبر واجهة برمجة تطبيقات
AssumeRole - التحقق من بيانات الاعتماد في متغيرات بيئة ECS:
AWS_CONTAINER_CREDENTIALS_RELATIVE_URIأوAWS_CONTAINER_CREDENTIALS_FULL_URIوAWS_ECS_CONTAINER_AUTHORIZATION_TOKEN. - الحصول على بيانات الاعتماد عبر بيانات metadata الخاصة بمثيل Amazon EC2، ما لم تكن القيمة AWS_EC2_METADATA_DISABLED مضبوطة على true.
- يمكن أيضًا ضبط هذه الإعدادات نفسها لنقطة endpoint محددة، باستخدام قاعدة مطابقة البادئة نفسها.
- البحث عن متغيرات البيئة
تحسين الأداء
ضبط تخزين S3
Wide and Compact. وبينما يستخدم التنفيذ الحالي السلوك الافتراضي في ClickHouse (ويُتحكَّم فيه عبر الإعدادات min_bytes_for_wide_part وmin_rows_for_wide_part)، نتوقع أن يختلف هذا السلوك مع S3 في الإصدارات المستقبلية، مثل اعتماد قيمة افتراضية أكبر لـ min_bytes_for_wide_part بما يشجع أكثر على استخدام التنسيق Compact، وبالتالي تقليل عدد الملفات. وقد ترغب الآن في ضبط هذه الإعدادات عند استخدام تخزين S3 فقط.
MergeTree المعتمد على S3
s3 ومحرك الجدول المرتبط بها الاستعلام عن البيانات في S3 باستخدام صياغة ClickHouse المألوفة. ومع ذلك، فهي محدودة من حيث ميزات إدارة البيانات وأداء الاستعلامات. فلا يوجد دعم للفهارس الأساسية أو no-cache، كما يجب على المستخدم إدارة عمليات إدراج الملفات.
يدرك ClickHouse أن S3 يمثّل حل تخزين جذابًا، خاصةً عندما تكون سرعة الاستعلام على البيانات “الأبرد” أقل أهمية، وعندما يسعى المستخدمون إلى فصل التخزين عن الحوسبة. وللمساعدة في تحقيق ذلك، يتوفر دعم لاستخدام S3 كوحدة تخزين لمحرك MergeTree. ويتيح لك هذا الاستفادة من مزايا قابلية التوسع والتكلفة التي يوفرها S3، إلى جانب أداء الإدراج والاستعلام الذي يقدمه محرك MergeTree.
طبقات التخزين
إنشاء قرص
config.xml أو، وهو الخيار المفضّل، إنشاء ملف جديد ضمن conf.d. يرد أدناه مثال على تعريف قرص S3:
إنشاء سياسة تخزين
إنشاء جدول
تعديل جدول
s3_tiered الجديدة، ونضيف وحدة تخزين ساخنة جديدة. ويستخدم ذلك القرص الافتراضي، الذي يتألف من قرص واحد فقط مُهيّأ عبر المعلَمة <path>. لاحظ أن أسماء وحدات التخزين والأقراص لا تتغير. ستبقى عمليات الإدراج الجديدة في جدولنا على القرص الافتراضي حتى يصل إلى القيمة move_factor * disk_size، وعندها ستُنقل البيانات إلى S3.
التعامل مع النسخ المتماثل
ReplicatedMergeTree. راجع دليل نسخ شظية واحدة عبر منطقتين من AWS باستخدام تخزين الكائنات في S3 للاطّلاع على التفاصيل.
القراءة والكتابة
- افتراضيًا، يساوي الحد الأقصى لعدد خيوط معالجة الاستعلام التي يمكن لأي مرحلة من مراحل مسار معالجة الاستعلام استخدامها عددَ الأنوية. بعض المراحل أكثر قابليةً للتوازي من غيرها، لذا تمثل هذه القيمة حدًا أعلى. وقد تُنفَّذ عدة مراحل من الاستعلام في الوقت نفسه لأن البيانات تُبث من القرص. لذلك قد يتجاوز العدد الفعلي للخيوط المستخدمة في الاستعلام هذا الحد. يمكن تعديل ذلك عبر الإعداد max_threads.
- تكون عمليات القراءة من S3 غير متزامنة افتراضيًا. ويُحدَّد هذا السلوك بواسطة الإعداد
remote_filesystem_read_method، المضبوط افتراضيًا على القيمةthreadpool. عند خدمة طلب ما، يقرأ ClickHouse الحبيبات ضمن شرائط. وقد يحتوي كل شريط على العديد من الأعمدة. ويقرأ أحد الخيوط الأعمدة الخاصة بحبيباته واحدًا تلو الآخر. وبدلًا من تنفيذ ذلك بشكل متزامن، يُجرى جلب مسبق لجميع الأعمدة قبل انتظار البيانات. ويوفر ذلك تحسينات كبيرة في الأداء مقارنةً بالانتظار المتزامن لكل عمود. لن تحتاج إلى تغيير هذا الإعداد في معظم الحالات - راجع تحسين الأداء. - تُنفَّذ عمليات الكتابة بالتوازي، بحد أقصى يبلغ 100 خيط متزامن لكتابة الملفات. يتحكم
max_insert_delayed_streams_for_parallel_write، الذي تبلغ قيمته الافتراضية 1000، في عدد كائنات S3 المكتوبة بالتوازي. وبما أن كل ملف تتم كتابته يتطلب مخزنًا مؤقتًا (~1MB)، فإن ذلك يحد فعليًا من استهلاك الذاكرة لعملية INSERT. وقد يكون من المناسب خفض هذه القيمة عندما تكون ذاكرة الخادم محدودة.
استخدم تخزين الكائنات في S3 كقرص لـ ClickHouse
اضبط ClickHouse لاستخدام حاوية S3 كقرص
- أنشئ ملفًا جديدًا في دليل
config.dالخاص بـ ClickHouse لتخزين تهيئة التخزين.
- أضِف ما يلي ضمن تهيئة التخزين، مع استبدال مسار الـ حاوية ومفتاح الوصول والمفاتيح السرية المذكورة في الخطوات السابقة
إن الوسمين
s3_disk وs3_cache داخل الوسم <disks> هما مُسميان اختياريان. يمكن تعيينهما إلى قيم أخرى، ولكن يجب استخدام المُسمّى نفسه في علامة التبويب <disk> ضمن علامة التبويب <policies> للإشارة إلى القرص.
كما أن الوسم <S3_main> اختياري أيضًا، وهو اسم السياسة التي ستُستخدم كمُعرّف لوجهة التخزين عند إنشاء الموارد في ClickHouse.الإعداد الموضّح أعلاه مخصّص لإصدار ClickHouse 22.8 أو أحدث. وإذا كنت تستخدم إصدارًا أقدم، فيرجى مراجعة وثائق تخزين البيانات.لمزيد من المعلومات حول استخدام S3:
دليل التكاملات: S3 Backed MergeTree- حدّث مالك الملف إلى المستخدم والمجموعة
clickhouse
- أعد تشغيل مثيل ClickHouse حتى تدخل التغييرات حيّز التنفيذ.
الاختبار
- اتصل باستخدام
ClickHouse client، كما في المثال التالي
- أنشئ جدولًا وحدِّد سياسة تخزين S3 الجديدة
- تأكّد من أن الجدول أُنشئ باستخدام السياسة الصحيحة
- أدرِج صفوفًا تجريبية في الجدول
- اعرض الصفوف
- في وحدة تحكم AWS، انتقل إلى الحاويات وحدد الحاوية الجديدة والمجلد. ينبغي أن ترى شيئًا مشابهًا لما يلي:
تكرار شظية واحدة عبر منطقتين في AWS باستخدام تخزين الكائنات في S3
خطّط لعملية النشر
تثبيت البرامج
عُقد خادم ClickHouse
نشر ClickHouse
chnode1 وchnode2.
ضع chnode1 في منطقة AWS واحدة، وchnode2 في منطقة أخرى.
نشر ClickHouse Keeper
keepernode1 وkeepernode2 وkeepernode3. يمكن نشر keepernode1 في نفس المنطقة التي يوجد فيها chnode1، وkeepernode2 مع chnode2، وkeepernode3 في أي من المنطقتين، ولكن في منطقة توافر تختلف عن عقدة ClickHouse في تلك المنطقة.
راجِع إرشادات التثبيت عند تنفيذ خطوات النشر على عقد ClickHouse Keeper.
إنشاء حاويات S3
chnode1 وchnode2.
إذا كنت بحاجة إلى إرشادات خطوة بخطوة لإنشاء الحاويات ودور IAM، فوسّع إنشاء حاويات S3 ودور IAM واتبع التعليمات:
أنشئ حاويات S3 ومستخدم IAM
أنشئ حاويات S3 ومستخدم IAM
يستعرض هذا المقال الأساسيات المتعلقة بكيفية تهيئة مستخدم AWS IAM، وإنشاء S3 bucket، وتهيئة ClickHouse لاستخدام هذا الـ bucket بوصفه S3 disk.
يُنصح بالتنسيق مع فريق الأمان لديك لتحديد الصلاحيات المطلوبة، واعتبار هذه الإعدادات نقطةَ انطلاق.
















إنشاء مستخدم AWS IAM
في الخطوات التالية، ستقوم بإنشاء مستخدم حساب خدمة (لا مستخدم تسجيل دخول).- سجّل الدخول إلى AWS IAM Management Console.
-
من قائمة
Users، اخترCreate user

- أدخل اسم المستخدم، ثم اضبط نوع بيانات الاعتماد على
Access key - Programmatic access، واخترNext: Permissions

- لا تُضِف المستخدم إلى أي مجموعة؛ اختر
Next: Tags

- إذا لم تكن بحاجة إلى إضافة أي وسوم، فاختر
Next: Review

- اختر
Create User
يمكن تجاهل رسالة التحذير التي تفيد بأن المستخدم ليس لديه أذونات؛ إذ ستُمنَح له الأذونات على الـbucket في القسم التالي

- تم الآن إنشاء المستخدم؛ انقر على
showوانسخ مفتاح الوصول والمفتاح السري.
احتفِظ بالمفاتيح في مكانٍ آخر؛ فهذه هي المرة الوحيدة التي سيكون فيها مفتاح الوصول السري متاحًا.

- انقر على «إغلاق»، ثم ابحث عن المستخدم في شاشة المستخدمين.

- انسخ ARN (Amazon Resource Name) واحفظه لاستخدامه عند إعداد سياسة الوصول إلى الـ bucket.

إنشاء حاوية S3
- ضمن قسم حاوية S3، اختر
Create bucket

- أدخل اسم الـ bucket واترك الخيارات الأخرى على الإعدادات الافتراضية
يجب أن يكون اسم الـ bucket فريدًا على مستوى AWS بأكملها، وليس داخل المؤسسة فقط، وإلا فستظهر رسالة خطأ.
- اترك
Block all Public Accessمفعّلًا؛ فلا حاجة إلى إتاحة الوصول العام.

- اختر
Create Bucketفي أسفل الصفحة

- حدِّد الرابط، وانسخ قيمة ARN، واحفظها لاستخدامها عند تكوين سياسة الوصول إلى الـ S3 bucket.
- بعد إنشاء الـ S3 bucket، اعثر على الـ S3 bucket الجديد في قائمة الـ S3 bucket وحدِّد الرابط

- اختر
إنشاء مجلد

- أدخل اسم المجلد الذي سيكون الوجهة لقرص S3 في ClickHouse، ثم اختر
Create folder

- يجب أن يظهر المجلد الآن في قائمة الحاويات

- حدِّد مربع الاختيار الخاص بالمجلد الجديد، ثم انقر على
Copy URLواحفظ عنوان URL المنسوخ لاستخدامه في إعدادات تخزين ClickHouse في القسم التالي.

- اختر علامة التبويب
Permissions، ثم انقر على الزرEditفي قسمBucket Policy

- أضِف سياسة للحاوية، كما في المثال أدناه:
يجب أن تعمل مع فريق الأمن لديك لتحديد الأذونات التي ينبغي استخدامها؛ واعتبر ما يلي نقطة انطلاق.
لمزيد من المعلومات حول السياسات والإعدادات، راجع وثائق AWS:
https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html
- احفظ تكوين السياسة.
/etc/clickhouse-server/config.d/. وفيما يلي ملف تكوين نموذجي لإحدى الحاويتين، أما الأخرى فهي مشابهة له مع اختلاف الأسطر الثلاثة المميزة:
/etc/clickhouse-server/config.d/storage_config.xml
ستطلب منك العديد من الخطوات في هذا الدليل وضع ملف تهيئة في
/etc/clickhouse-server/config.d/. هذا هو الموقع الافتراضي على أنظمة Linux لملفات تجاوز التهيئة. عند وضع هذه الملفات في ذلك الدليل، سيستخدم ClickHouse محتواها لتجاوز التهيئة الافتراضية. ومن خلال وضع هذه الملفات في دليل التجاوز، ستتجنب فقدان تهيئتك أثناء الترقية.تهيئة ClickHouse Keeper
/etc/clickhouse-keeper/keeper_config.xml. تستخدم خوادم Keeper الثلاثة ملف التهيئة نفسه مع اختلاف إعداد واحد فقط؛ <server_id>.
يشير server_id إلى المعرّف الذي سيُخصَّص للمضيف الذي يُستخدَم عليه ملف التهيئة. في المثال أدناه، قيمة server_id هي 3، وإذا نظرت إلى أسفل الملف في قسم <raft_configuration>، فسترى أن الخادم 3 يحمل اسم المضيف keepernode3. وبهذه الطريقة تعرف عملية ClickHouse Keeper الخوادم الأخرى التي يجب الاتصال بها عند اختيار العقدة القائدة وفي سائر الأنشطة الأخرى.
/etc/clickhouse-keeper/keeper_config.xml
<server_id>):
إعداد خادم ClickHouse
تحديد عنقود
<remote_servers> من ملف التكوين. في هذا المثال، يُحدَّد عنقود واحد، cluster_1S_2R، ويتكوّن من جزء بيانات واحد ونسختين متماثلتين. وتقع النسختان المتماثلتان على المضيفين chnode1 وchnode2.
/etc/clickhouse-server/config.d/remote-servers.xml
shard وreplica. وعندما تنشئ جدولًا، يمكنك رؤية كيفية استخدام وحدات الماكرو shard وreplica من خلال الاستعلام عن system.tables.
/etc/clickhouse-server/config.d/macros.xml
تعريفات الماكرو أعلاه خاصة بـ
chnode1، وعلى chnode2 اضبط replica على replica_2.تعطيل zero-copy replication
allow_remote_fs_zero_copy_replication مضبوطًا على true افتراضيًا لأقراص S3 وHDFS. يجب ضبط هذا الإعداد على false في سيناريو التعافي من الكوارث هذا، وفي الإصدار 22.8 وما بعده يكون مضبوطًا على false افتراضيًا.
يجب أن تكون قيمة هذا الإعداد false لسببين: 1) هذه الميزة ليست جاهزة لبيئات الإنتاج؛ 2) في سيناريو التعافي من الكوارث، يجب تخزين كلٍّ من البيانات والبيانات الوصفية في عدة مناطق. اضبط allow_remote_fs_zero_copy_replication على false.
/etc/clickhouse-server/config.d/remote-servers.xml
/etc/clickhouse-server/config.d/use_keeper.xml
تهيئة الشبكة
/etc/clickhouse-server/config.d/. فيما يلي مثال يهيئ ClickHouse وClickHouse Keeper للاستماع على جميع واجهات IPv4. راجع الوثائق أو ملف الإعدادات الافتراضي /etc/clickhouse/config.xml لمزيد من المعلومات.
/etc/clickhouse-server/config.d/networking.xml
شغِّل الخوادم
تشغيل ClickHouse Keeper
تحقّق من حالة ClickHouse Keeper
netcat. على سبيل المثال، يُرجع mntr حالة عنقود ClickHouse Keeper. وإذا شغّلت الأمر على كل عقدة من عقد Keeper، فسترى أن إحداها هي القائد، وأن العقدتين الأخريين تابعتان:
شغّل خادم ClickHouse
تحقّق من خادم ClickHouse
-
تحقّق من وجود العنقود:
-
أنشئ جدولًا في العنقود باستخدام محرك الجداول
ReplicatedMergeTree: -
تعرّف على كيفية استخدام الـ ماكرو التي عُرّفت سابقًا
سبق تعريف الـ ماكرو
shardوreplica، ويمكنك في السطر المميز أدناه رؤية المواضع التي تُستبدل فيها القيم على كل عقدة ClickHouse. بالإضافة إلى ذلك، تُستخدم القيمةuuid؛ ولا يجري تعريفuuidضمن الـ ماكرو لأنها تُولَّد من النظام.
يمكنك تخصيص مسار ZooKeeper
'clickhouse/tables/{uuid}/{shard} الظاهر أعلاه من خلال ضبط default_replica_path وdefault_replica_name. تتوفر الوثائق هنا.التحقق
-
أضف بيانات من مجموعة بيانات سيارات الأجرة لمدينة نيويورك:
-
تحقّق من أن البيانات مخزَّنة في S3.
يوضّح هذا الاستعلام حجم البيانات على القرص، والسياسة المستخدمة لتحديد القرص المستخدم.
تحقّق من حجم البيانات على القرص المحلي. كما ترى أعلاه، يبلغ الحجم على القرص لملايين الصفوف المخزَّنة 36.42 MiB. يفترض أن تكون هذه البيانات على S3، لا على القرص المحلي. كما يبيّن لنا الاستعلام أعلاه أيضًا مكان تخزين البيانات والبيانات الوصفية على القرص المحلي. تحقّق من البيانات المحلية:تحقّق من بيانات S3 في كل حاوية S3 (لا تظهر القيم الإجمالية، لكن كلتا الحاويتين تحتويان على نحو 36 MiB من البيانات المخزَّنة بعد عمليات الإدراج):
S3Express
يخزّن S3Express البيانات داخل منطقة توافر واحدة (AZ). وهذا يعني أن البيانات لن تكون متاحة في حال تعطل منطقة التوافر.
قرص S3
- أنشئ حاوية من النوع
Directory - طبّق سياسة حاوية المناسبة لمنح مستخدم S3 الخاص بك جميع الأذونات المطلوبة (على سبيل المثال:
"Action": "s3express:*"للسماح بوصول غير مقيّد) - عند تهيئة سياسة التخزين، يُرجى توفير المعلَمة
region
تخزين S3
Object URL. مثال: