Jadual Kandungan
HDFS-2246 曾经实现的Short-Circuit LocalReads
HDFS-347:让Short-Circuit Local Reads 安全
Cache 文件描述符
HDFS-347配置
性能
结论
Rumah pangkalan data tutorial mysql 如何提高hadoop中Short-Circuit Local Reads时的性能及安全性

如何提高hadoop中Short-Circuit Local Reads时的性能及安全性

Jun 07, 2016 pm 04:32 PM
hadoop bagaimana bertambah baik

本文由 ImportNew - Royce Wong 翻译自 Cloudera。如需转载本文,请先参见文章末尾处的转载要求。 大家都知道,apache hadoop的一个关键思想就是移动计算比移动数据更廉价。所以只要可能,我们就乐忠移动计算到数据地方。因此,HDFS通常使用许多的本地读,在

本文由 ImportNew - Royce Wong 翻译自 Cloudera。如需转载本文,请先参见文章末尾处的转载要求。

大家都知道,apache hadoop的一个关键思想就是移动计算比移动数据更廉价。所以只要可能,我们就乐忠移动计算到数据地方。因此,HDFS通常使用许多的本地读,在本地机器构造读对象读出数据。

最初,hdfs本地读其实和远程读使用的同一种方式:client端通过TCP 连接DN,并通过DataTransferProtocol传输数据。该方法简单,但是有一些不好的地方。例如,DN需要维护一个线程运行,并为每个client打开的tcp套接字建立连接传输数据。在linux内核中tcp协议是有开销的,同时DataTransferProtocol本身也有开销。这里有优化空间。

本文大家将会了解到一项HDFS新的优化,叫做“secure short-circuit local reads”,学习该优化如何实现并怎样提速本地读的。

HDFS-2246 曾经实现的Short-Circuit LocalReads

HDFS-2246,ndrew Purtell, Suresh Srinivas, Jitendra Nath Pandey, and Benoy Antony等人添加了一项称为“short-circuit local reads”优化。

其关键思想如下:因为客户端和数据在同一个节点,所以没必要再去和DN交互。客户端本身直接就从本地磁盘读出数据。这个性能优化被加入了CDH3u3。

HDFS-2246实现的short-circuit local read 是一个好的开始,但其带来了许多配置上麻烦。系统管理员必须改变DN数据目录权限,允许客户端打开相关文件。还需要定义一个白名单用户,可以使用这个特性。其他用户不允许。通常,这些用户被搞到一个特殊的UNIX 用户组里。

不幸的是,这种权限改变带来了安全漏洞。有这种权限的用户就可以直接浏览所有数据了,不仅是他们需要的数据。简直就是超级用户啊!这个在一些场景下可以接受,比如 HBase用户,但是一般来讲,它还是带来了问题。这不是一个通用的方式。

HDFS-347:让Short-Circuit Local Reads 安全

HDFS-2246的主要问题就是它将DN的所有数据路径直接开放给了客户端。其实,客户端只是想要几个其关心的数据文件。

幸亏Unix提供了可以这样做的机制,文件描述符。HDFS-347使用该机制实现安全的short-circuit local reads. 客户端向DN请求数据时,DN简单地打开blockfile和元数据文件,并直接传给客户端,而不是将路径传给客户端。因为文件描述符是只读的,客户端不能修改接收到的文件。同时不支持对block所在路径的访问,所以也就不能访问其他数据。

Windows 有类似的机制允许将文件描述符在进程间传递。CDH目前还不支持该特性,同时Windows用户可以配置dfs.cient.use.legacy.blockreader.local为true使用legacy block reader。

Cache 文件描述符

HDFS客户端经常多次读取相同的block文件(y尤其对HBase而言)。为了提高这种场景下的本地读,HDFS-2246实现的机制中有一个block 路径的Cache。Cache允许客户端重新打开block文件,而不需要再去访问DN。

相对于路径Cache,新机制实现了一个FileInputStreamCache,缓存文件描述符。优点在于不需要客户端重新打开数据文件。该处实现性能优于老的读取机制。

cache的大小可以通过dfs.client.read.shortcircuit.stream.cache.size调整,cache超时时间通过dfs.client.read.shortcircuit.streams.cache.expiry.ms设定。也可以关掉该cache,设置cache大小为0即可。大多数情况下,默认配置就可以了。如果你面对的是特殊的大规模的工作集和高文件描述符限制,你可以试着提高参数值。

HDFS-347配置

HDFS-347实现的新机制,所有hdfs用户都可以使用该特性,而不是局限于配置的几个用户。也没有必要去修改Unix用户组来设定谁可以访问DN路径。然而,java标准库并不包含支持文件描述符传递的库,所以该特性需要使用JNI。同时需要安装libhadoop.so库.

HDFS-347也需要一个Unix域套接字路径,可通过dfs.domain.socket.path设置。该路径必须安全地阻止无优先级进程进行中间人攻击(MITM攻击,man-in-the-middle attack)。每个套接字路径必须是root拥有或者DN用户拥有,不能使用人人都可以写或者用户组可写方式的路径。

如果你安装cloudera包 rpm,deb,cloudera会创建一个默认的安全的unix域套接字路径。同时会讲libhadoop.so安装到正确路径下。

详细配置信息可以参考 the upstream documentation

性能

新实现到底咋样呢?作者使用 hio_bench程序获取到一些性能统计数据。hiobench github 地址 https://github.com/cmccabe/hiotest。

测试案例运行在8核 intelXeon 2.13 12块磁盘服务器上,集群使用CDH4.3.1,底层使用ext4文件系统。 下图每个值是运行三次的平均值。

在所有测试案例中,HDFS-347实现是最快的,可能归功于FileInputStreamCache.相反HDFS-2246实现会重复打开ext4 块文件多次,打开文件是一个重操作。

short-circuit实现在随机读场景下比顺序读相对于hdfs初始的读取机制有相对优势。部分原因是为short-circuit local reads场景的 高速预读(readahead)还未实现。可以参考HDFS-4697参与相关讨论。

结论

SCR (short-circuit local reads)是hadoop模型下优化的一项极好的案例。他们也有如何解决规模不断增长的挑战,Cloudera目前正挑战在集群中获取每个节点更多性能方向的研究。

如果你正使用CDH4.2 或以上版本,用下新的实现把!

Colin McCabe is a Software Engineer on the Platform team, and a Hadoop Committer.

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Ralat Java: Ralat Hadoop, Cara Mengendalikan dan Mengelak Ralat Java: Ralat Hadoop, Cara Mengendalikan dan Mengelak Jun 24, 2023 pm 01:06 PM

Ralat Java: Ralat Hadoop, Cara Mengendalikan dan Mengelak Apabila menggunakan Hadoop untuk memproses data besar, anda sering menghadapi beberapa ralat pengecualian Java, yang mungkin menjejaskan pelaksanaan tugas dan menyebabkan pemprosesan data gagal. Artikel ini akan memperkenalkan beberapa ralat Hadoop biasa dan menyediakan cara untuk menangani dan mengelakkannya. Java.lang.OutOfMemoryErrorOutOfMemoryError ialah ralat yang disebabkan oleh memori mesin maya Java yang tidak mencukupi. Apabila Hadoop adalah

Menggunakan Hadoop dan HBase dalam Beego untuk penyimpanan data besar dan pertanyaan Menggunakan Hadoop dan HBase dalam Beego untuk penyimpanan data besar dan pertanyaan Jun 22, 2023 am 10:21 AM

Dengan kemunculan era data besar, pemprosesan dan penyimpanan data menjadi semakin penting, dan cara mengurus dan menganalisis sejumlah besar data dengan cekap telah menjadi cabaran bagi perusahaan. Hadoop dan HBase, dua projek Yayasan Apache, menyediakan penyelesaian untuk penyimpanan dan analisis data besar. Artikel ini akan memperkenalkan cara menggunakan Hadoop dan HBase dalam Beego untuk storan dan pertanyaan data besar. 1. Pengenalan kepada Hadoop dan HBase Hadoop ialah sistem storan dan pengkomputeran teragih sumber terbuka yang boleh

Bagaimana untuk meningkatkan prestasi pertanyaan pangkalan data melalui PHP multi-threading Bagaimana untuk meningkatkan prestasi pertanyaan pangkalan data melalui PHP multi-threading Jun 29, 2023 pm 08:27 PM

Bagaimana untuk meningkatkan prestasi pertanyaan pangkalan data melalui PHP multi-threading Pengenalan: Dengan perkembangan pesat Internet, prestasi pertanyaan pangkalan data telah menjadi salah satu cabaran penting yang dihadapi oleh pembangun. Sebagai bahasa skrip bahagian pelayan yang digunakan secara meluas, PHP juga memainkan peranan penting dalam pertanyaan pangkalan data. Artikel ini akan meneroka cara untuk meningkatkan prestasi pertanyaan pangkalan data melalui teknologi berbilang benang PHP untuk memenuhi keperluan permintaan serentak yang tinggi. 1. Apakah multi-threading? Sebelum membincangkan cara menggunakan multi-threading untuk meningkatkan prestasi pertanyaan pangkalan data, kita perlu memahami apa itu multi-threading. popular

Cara menggunakan PHP dan Hadoop untuk pemprosesan data besar Cara menggunakan PHP dan Hadoop untuk pemprosesan data besar Jun 19, 2023 pm 02:24 PM

Memandangkan jumlah data terus meningkat, kaedah pemprosesan data tradisional tidak lagi dapat menangani cabaran yang dibawa oleh era data besar. Hadoop ialah rangka kerja pengkomputeran teragih sumber terbuka yang menyelesaikan masalah kesesakan prestasi yang disebabkan oleh pelayan nod tunggal dalam pemprosesan data besar melalui storan teragih dan pemprosesan sejumlah besar data. PHP adalah bahasa skrip yang digunakan secara meluas dalam pembangunan web dan mempunyai kelebihan pembangunan pesat dan penyelenggaraan yang mudah. Artikel ini akan memperkenalkan cara menggunakan PHP dan Hadoop untuk pemprosesan data besar. Apa itu HadoopHadoop

Terokai aplikasi Java dalam bidang data besar: pemahaman tentang Hadoop, Spark, Kafka dan tindanan teknologi lain Terokai aplikasi Java dalam bidang data besar: pemahaman tentang Hadoop, Spark, Kafka dan tindanan teknologi lain Dec 26, 2023 pm 02:57 PM

Timbunan teknologi data besar Java: Fahami aplikasi Java dalam bidang data besar, seperti Hadoop, Spark, Kafka, dll. Apabila jumlah data terus meningkat, teknologi data besar telah menjadi topik hangat dalam era Internet hari ini. Dalam bidang data besar, kita sering mendengar nama Hadoop, Spark, Kafka dan teknologi lain. Teknologi ini memainkan peranan penting, dan Java, sebagai bahasa pengaturcaraan yang digunakan secara meluas, juga memainkan peranan yang besar dalam bidang data besar. Artikel ini akan memberi tumpuan kepada aplikasi Java secara besar-besaran

Adakah terdapat masa depan untuk pekerjaan dalam farmasi klinikal di Universiti Perubatan Harbin? (Apakah prospek pekerjaan untuk farmasi klinikal di Universiti Perubatan Harbin?) Adakah terdapat masa depan untuk pekerjaan dalam farmasi klinikal di Universiti Perubatan Harbin? (Apakah prospek pekerjaan untuk farmasi klinikal di Universiti Perubatan Harbin?) Jan 02, 2024 pm 08:54 PM

Apakah prospek pekerjaan farmasi klinikal di Universiti Perubatan Harbin Walaupun situasi pekerjaan negara tidak optimistik, graduan farmaseutikal masih mempunyai prospek pekerjaan yang baik. Secara keseluruhannya, bekalan graduan farmaseutikal adalah kurang daripada permintaan Syarikat farmaseutikal dan kilang farmaseutikal adalah saluran utama untuk menyerap graduan tersebut. Menurut laporan, dalam beberapa tahun kebelakangan ini, nisbah bekalan-permintaan untuk pelajar siswazah dalam jurusan seperti persediaan farmaseutikal dan kimia perubatan semula jadi telah mencapai 1:10. Arah pekerjaan jurusan farmasi klinikal: Selepas tamat pengajian, pelajar jurusan perubatan klinikal boleh melibatkan diri dalam rawatan perubatan, pencegahan, penyelidikan perubatan, dsb. dalam unit perubatan dan kesihatan, penyelidikan perubatan dan jabatan lain. Jawatan pekerjaan: Wakil perubatan, wakil jualan farmaseutikal, wakil jualan, pengurus jualan, pengurus jualan wilayah, pengurus pelaburan, pengurus produk, pakar produk, jururawat

Bagaimana untuk mencari kandungan akaun video yang telah saya ulas? Adakah terdapat cara cepat untuk meningkatkan berat carian akaun Douyin? Bagaimana untuk mencari kandungan akaun video yang telah saya ulas? Adakah terdapat cara cepat untuk meningkatkan berat carian akaun Douyin? Mar 28, 2024 pm 01:30 PM

Pada platform Douyin, pengguna mungkin ingin mencari kandungan akaun video yang telah mereka ulas supaya mereka mudah mencari atau terus mengambil bahagian dalam perbincangan mengenai topik tertentu. Jadi, bagaimana anda mencari kandungan akaun video yang telah anda ulas? 1. Bagaimana untuk mencari kandungan akaun video yang telah saya ulas? Menggunakan halaman utama peribadi, pengguna boleh melihat kandungan video yang telah mereka nilaikan melalui halaman utama peribadi. Pada halaman utama peribadi anda, terdapat pilihan "Ulasan" Selepas mengkliknya, anda boleh melihat semua rekod ulasan anda. Pengguna boleh menggunakan fungsi carian untuk mencari kandungan video yang mereka minati. Hanya masukkan kata kunci yang berkaitan dalam kotak carian untuk mencari kandungan video yang berkaitan dengan ulasan anda. 3. Sertai melalui topik: Pengguna boleh mencari kandungan akaun video yang telah mereka ulas dengan mengambil bahagian dalam topik. pada halaman topik

Bagaimana untuk memasang Hadoop dalam linux Bagaimana untuk memasang Hadoop dalam linux May 18, 2023 pm 08:19 PM

1: Pasang JDK1. Jalankan arahan berikut untuk memuat turun pakej pemasangan JDK1.8. wget--no-check-certificatehttps://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz2 Jalankan arahan berikut untuk menyahmampat pakej pemasangan JDK1.8 yang dimuat turun . tar-zxvfjdk-8u151-linux-x64.tar.gz3 Alihkan dan namakan semula pakej JDK. mvjdk1.8.0_151//usr/java84. gema'

See all articles