emit a list of all URLs found in the document. A temporary table
would then be populated with this list of URLs and then a simple
count/group-by query would be executed that finds the number of
instances of each unique URL.
Unfortunately, [23] found that in practice, it was difficult to implement
such a UDF inside the parallel databases. In DBMS-X,
it was impossible to store each document as a character BLOB inside
the DBMS and have the UDF operate on it directly, due to “a
known bug in [the] version of the system”. Hence, the UDF was
implemented inside the DBMS, but the data was stored in separate
HTML documents on the raw file system and the UDF made external
calls accordingly.
Vertica does not currently support UDFs, so a simple document
parser had to be written in Java externally to the DBMS. This parser
is executed on each node in parallel, parsing the concatenated documents
file and writing the found URLs into a file on the local disk.
This file is then loaded into a temporary table using Vertica’s bulkloading
tools and a second query is executed that counts, for each
URL, the number of inward links.
In Hadoop, we employed standard TextInputFormat and parsed
each document inside a Map task, outputting a list of URLs found
in each document. Both a Combine and a Reduce function sum the
number of instances of each unique URL.
In HadoopDB, since text processing is more easily expressed in
MapReduce, we decided to take advantage of HadoopDB’s ability
to accept queries in either SQL or MapReduce and we used the latter
option in this case. The complete contents of the Documents
table on each PostgreSQL node is passed into Hadoop with the following
SQL:
SELECT url, contents FROM Documents;
Next, we process the data using a MR job. In fact, we used identical
MR code for both Hadoop and HadoopDB.
Fig. 10 illustrates the power of using a hybrid system like
HadoopDB. The database layer provides an efficient storage layer
for HTML text documents and the MapReduce framework provides
arbitrary processing expression power.
Hadoop outperforms HadoopDB as it processes merged files of
multiple HTML documents. HadoopDB, however, does not lose
the original structure of the data by merging many small files into
larger ones. Note that the total merge time was about 6000 seconds
per node. This overhead is not included in Fig. 10.
DBMS-X and Vertica perform worse than Hadoop-based systems
since the input files are stored outside of the database. Moreover,
for this task both commercial databases do not scale linearly with
the size of the cluster.
6.3 Summary of Results Thus Far
In the absence of failures or background processes, HadoopDB
is able to approach the performance of the parallel database systems.
The reason the performance is not equal is due to the following
facts: (1) PostgreSQL is not a column-store (2) DBMS-X
results are overly optimistic by approximately a factor of 15%, (3)
we did not use data compression in PostgreSQL, and (4) there is
some overhead in the interaction between Hadoop and PostgreSQL
which gets proportionally larger as the number of chunks increases.
We believe some of this overhead can be removed with the increase
of engineering time.
HadoopDB consistently outperforms Hadoop (except for the
UDF aggregation task since we did not count the data merging time
against Hadoop).
While HadoopDB’s load time is about 10 times longer than
Hadoop’s, this cost is amortized across the higher performance of
all queries that process this data. For certain tasks, such as the Join
task, the factor of 10 load cost is immediately translated into a
factor of 10 performance benefit.
7. FAULT TOLERANCE AND HETEROGENEOUS
ENVIRONMENT
As described in Section 3, in large deployments of sharednothing
machines, individual nodes may experience high rates
of failure or slowdown. While running our experiments for
this research paper on EC2, we frequently experienced both
node failure and node slowdown (e.g., some notifications we
received: “4:12 PM PDT: We are investigating a localized issue
in a single US-EAST Availability Zone. As a result, a small
number of instances are unreachable. We are working to restore
the instances.”, and “Starting at 11:30PM PDT today, we will be
performing maintenance on parts of the Amazon EC2 network.
This maintenance has been planned to minimize the probability
of impact to Amazon EC2 instances, but it is possible that some
customers may experience a short period of elevated packet loss as
the change takes effect.”)
For parallel databases, query processing time is usually determined
by the the time it takes for the slowest node to complete its
task. In contrast, in MapReduce, each task can be scheduled on any
node as long as input data is transferred to or already exists on a free
node. Also, Hadoop speculatively redundantly executes tasks that
are being performed on a straggler node to reduce the slow node’s
effect on query time.
Hadoop achieves fault tolerance by restarting tasks of failed
emit a list of all URLs found in the document. A temporary tablewould then be populated with this list of URLs and then a simplecount/group-by query would be executed that finds the number ofinstances of each unique URL.Unfortunately, [23] found that in practice, it was difficult to implementsuch a UDF inside the parallel databases. In DBMS-X,it was impossible to store each document as a character BLOB insidethe DBMS and have the UDF operate on it directly, due to “aknown bug in [the] version of the system”. Hence, the UDF wasimplemented inside the DBMS, but the data was stored in separateHTML documents on the raw file system and the UDF made externalcalls accordingly.Vertica does not currently support UDFs, so a simple documentparser had to be written in Java externally to the DBMS. This parseris executed on each node in parallel, parsing the concatenated documentsfile and writing the found URLs into a file on the local disk.This file is then loaded into a temporary table using Vertica’s bulkloadingtools and a second query is executed that counts, for eachURL, the number of inward links.In Hadoop, we employed standard TextInputFormat and parsedeach document inside a Map task, outputting a list of URLs foundin each document. Both a Combine and a Reduce function sum thenumber of instances of each unique URL.In HadoopDB, since text processing is more easily expressed inMapReduce, we decided to take advantage of HadoopDB’s abilityto accept queries in either SQL or MapReduce and we used the latteroption in this case. The complete contents of the Documentstable on each PostgreSQL node is passed into Hadoop with the followingSQL:SELECT url, contents FROM Documents;Next, we process the data using a MR job. In fact, we used identicalMR code for both Hadoop and HadoopDB.Fig. 10 illustrates the power of using a hybrid system likeHadoopDB. The database layer provides an efficient storage layerfor HTML text documents and the MapReduce framework providesarbitrary processing expression power.Hadoop outperforms HadoopDB as it processes merged files ofmultiple HTML documents. HadoopDB, however, does not losethe original structure of the data by merging many small files intolarger ones. Note that the total merge time was about 6000 secondsper node. This overhead is not included in Fig. 10.DBMS-X and Vertica perform worse than Hadoop-based systemssince the input files are stored outside of the database. Moreover,for this task both commercial databases do not scale linearly withthe size of the cluster.6.3 Summary of Results Thus FarIn the absence of failures or background processes, HadoopDBis able to approach the performance of the parallel database systems.The reason the performance is not equal is due to the followingfacts: (1) PostgreSQL is not a column-store (2) DBMS-Xresults are overly optimistic by approximately a factor of 15%, (3)we did not use data compression in PostgreSQL, and (4) there issome overhead in the interaction between Hadoop and PostgreSQLwhich gets proportionally larger as the number of chunks increases.We believe some of this overhead can be removed with the increaseof engineering time.HadoopDB consistently outperforms Hadoop (except for theUDF aggregation task since we did not count the data merging timeagainst Hadoop).While HadoopDB’s load time is about 10 times longer thanHadoop’s, this cost is amortized across the higher performance ofall queries that process this data. For certain tasks, such as the Jointask, the factor of 10 load cost is immediately translated into afactor of 10 performance benefit.7. FAULT TOLERANCE AND HETEROGENEOUSENVIRONMENTAs described in Section 3, in large deployments of sharednothingmachines, individual nodes may experience high ratesof failure or slowdown. While running our experiments forthis research paper on EC2, we frequently experienced bothnode failure and node slowdown (e.g., some notifications wereceived: “4:12 PM PDT: We are investigating a localized issuein a single US-EAST Availability Zone. As a result, a smallnumber of instances are unreachable. We are working to restorethe instances.”, and “Starting at 11:30PM PDT today, we will beperforming maintenance on parts of the Amazon EC2 network.This maintenance has been planned to minimize the probabilityof impact to Amazon EC2 instances, but it is possible that somecustomers may experience a short period of elevated packet loss asthe change takes effect.”)For parallel databases, query processing time is usually determinedby the the time it takes for the slowest node to complete itstask. In contrast, in MapReduce, each task can be scheduled on anynode as long as input data is transferred to or already exists on a freenode. Also, Hadoop speculatively redundantly executes tasks thatare being performed on a straggler node to reduce the slow node’seffect on query time.Hadoop achieves fault tolerance by restarting tasks of failed
การแปล กรุณารอสักครู่..
ปล่อยรายชื่อ URL ทั้งหมดที่พบในเอกสาร ตารางชั่วคราว
ก็มีประชากรที่มีนี้รายการ URL แล้ววิ
นับ / กลุ่ม โดยแบบสอบถามจะถูกประหารที่พบหมายเลขของอินสแตนซ์ของแต่ละคน
แต่เฉพาะ URL [ 23 ] พบว่าในทางปฏิบัติ มันเป็นเรื่องยากที่จะใช้
เช่น UDF ในฐานข้อมูลแบบขนาน ใน dbms-x
,มันเป็นไปไม่ได้ที่จะเก็บเอกสารแต่ละตัวอักษรหยดข้างใน
DBMS และมี UDF ผ่าตัดโดยตรง เนื่องจาก "
รู้จักข้อผิดพลาดใน [ ] รุ่นของระบบ " ดังนั้น จึงใช้ UDF
ภายใน DBMS แต่ข้อมูลถูกเก็บไว้ในที่แยกต่างหาก
เอกสาร HTML บนระบบแฟ้มดิบและ UDF ทำภายนอก
โทรตาม ฐานสนับสนุน Udf ทางไม่ได้ในขณะนี้ ,เพื่อแยกวิเคราะห์เอกสาร
ง่ายก็ต้องเขียนใน Java ภายนอกเพื่อ DBMS . นี้ parser
ถูกประหารชีวิตในแต่ละโหนดในขนาน , แยกแฟ้มและเอกสาร
มาเขียนพบ URL ในไฟล์บนดิสก์ท้องถิ่น .
ไฟล์นี้แล้วโหลดลงในตารางชั่วคราวโดยใช้ฐานของ bulkloading
เครื่องมือและแบบสอบถามที่สองคือประหารชีวิตที่ นับ สำหรับแต่ละ
URL , หมายเลขของการเชื่อมโยง
ด้านในใน textinputformat Hadoop เราใช้มาตรฐานและแจง
แต่ละเอกสารภายในแผนที่งานสร้างรายการของ URL ที่พบ
ในเอกสารแต่ละ ทั้งรวมและฟังก์ชันลดผลรวม
หมายเลขของอินสแตนซ์ของแต่ละ URL ที่ไม่ซ้ำกัน ใน hadoopdb
เนื่องจากการประมวลผลข้อความได้ง่ายขึ้นโดย
mapreduce , เราตัดสินใจที่จะใช้ประโยชน์จากความสามารถของ hadoopdb
รับแบบสอบถามใน SQL หรือ mapreduce และเราใช้ตัวหลัง
ในกรณีนี้ สมบูรณ์เนื้อหาของเอกสารในแต่ละโหนดคือ
ตาราง PostgreSQL ผ่านเข้าสู่ Hadoop กับ SQL ต่อไปนี้ :
เลือก URL เนื้อหาจากเอกสาร ;
ต่อไป เราประมวลผลข้อมูลโดยใช้คุณงาน ในความเป็นจริง เราใช้เหมือนกัน
นายรหัสทั้งสองและ Hadoop hadoopdb .
ฟิค10 แสดงให้เห็นถึงพลังของการใช้ระบบไฮบริดแบบ
hadoopdb . ฐานข้อมูลชั้นมี
ชั้นกระเป๋าที่มีประสิทธิภาพสำหรับเอกสารข้อความ HTML และ mapreduce กรอบให้
การแสดงออกโดยพลการประมวลพลัง hadoopdb Hadoop โปรยมันกระบวนการผสานไฟล์
เอกสาร HTML หลาย hadoopdb อย่างไรก็ตาม ไม่เสีย
เดิม โครงสร้างของข้อมูลการรวมไฟล์หลายๆใน
ใหญ่กว่า โปรดทราบว่าทั้งหมดรวมเวลาประมาณ 6000 วินาที
ต่อโหนด ค่าใช้จ่ายนี้ไม่ได้รวมอยู่ในรูปที่ 10 .
dbms-x และฐานแสดงแย่กว่าระบบที่ใช้ Hadoop
ตั้งแต่ใส่แฟ้มจะถูกเก็บไว้ในฐานข้อมูล โดย
สําหรับงานนี้ทั้งพาณิชย์ฐานข้อมูลไม่ได้ขนาดตาม
ขนาดของคลัสเตอร์ .
6 สรุปผลป่านนี้
ในกรณีที่ไม่มีความล้มเหลวหรือพื้นหลังกระบวนการ hadoopdb
สามารถเข้าถึงประสิทธิภาพของระบบฐานข้อมูลแบบขนาน .
เหตุผลประสิทธิภาพไม่เท่าเนื่องจาก
ข้อเท็จจริงต่อไปนี้ : ( 1 ) PostgreSQL ไม่ใช่ร้านคอลัมน์ ( 2 ) dbms-x
ผลลัพธ์ในแง่ดีเกินไป โดยรวมเป็นปัจจัยของ 15% ( 3 )
เราไม่ได้ใช้การบีบอัดข้อมูลใน PostgreSQL และ ( 4 ) มีบางค่าใช้จ่ายในการปฏิสัมพันธ์ระหว่าง
และ Hadoop PostgreSQL ที่ได้รับตามส่วนใหญ่เป็นจำนวนเพิ่ม chunks .
เราเชื่อว่าบางส่วนของค่าใช้จ่ายนี้สามารถลบออกได้ด้วยการเพิ่ม
เวลาวิศวกรรม hadoopdb อย่างต่อเนื่องมีประสิทธิภาพดีกว่า Hadoop ( ยกเว้น
รวมงาน UDF ตั้งแต่เราไม่ได้นับรวมกับข้อมูลเวลา
Hadoop ) ในขณะที่เวลา hadoopdb โหลดเป็น 10 ครั้งนานกว่า
Hadoop เป็นค่าใช้จ่ายนี้เป็นของขวัญในด้านของกระบวนการนี้
สอบถามข้อมูล สำหรับงานบางอย่าง เช่น เข้าร่วม
งาน ปัจจัยต้นทุน 10 โหลดทันทีแปลเป็นปัจจัย 10 การแสดงประโยชน์
.
7ยอมรับความผิดและ
สภาพแวดล้อมต่างกันตามที่อธิบายไว้ในมาตรา 3 ในขนาดใหญ่การใช้งานของ sharednothing
เครื่องโหนดแต่ละคนอาจพบอัตรา
ของความล้มเหลวหรือขยายตัวสูง ขณะกำลังทดลองของเรา
งานวิจัยนี้บน EC2 , เรามักมีประสบการณ์ความล้มเหลวโหนดโหนดทั้ง
และการชะลอตัว ( เช่น บางแจ้งเรา
" 4 : 12 PM PDT : ได้รับ :
การแปล กรุณารอสักครู่..