The present invention relates to a hardware processing accelerator and a processing system utilizing such a hardware processing accelerator, and more particularly, to a big-data processing accelerator and a big-data processing system that utilizes such a big-data processing accelerator.
A common coding language for big-data processing commands and procedures is the SQL language. Among the available SQL-based tools for processing big-data commands and procedures, the Apache Hive framework is a popular data warehouse that provides data summarization, query, and analysis.
The Apache Hive framework primarily applies Map and Reduce operators to process data. Map operators are primarily used for data filtering and data sorting. Reduce operators are primarily used for data summarization. Under the Apache Hive framework, however, a Map operator must be followed by a Reduce operator, which significantly limits the framework's data processing efficiency.
This document discloses a big-data processing accelerator operated under the Apache Hive-on-Tez framework, the Hive-on-Spark framework, or the SparkSQL framework. The big-data processing accelerator comprises an operator controller and an operator programming module. The operator controller is configured to execute a plurality of Map operators and at least one Reduce operator according to an execution sequence. The execution sequence in which the plurality of Map operators and the at least one Reduce operator are executed is defined by the operator programming module based on the operator controller's hardware configuration and a directed acyclic graph (DAG).
This document also discloses a big-data processing system operated under the Apache Hive-on-Tez framework, the Hive-on-Spark framework, or the SparkSQL framework. The big-data processing system comprises a storage module, a data bus, a data read module, a data write module, and a big-data processing accelerator. The data bus is configured to receive raw data. The data read module is configured to transmit the raw data from the data bus to the storage module. The big-data processing accelerator comprises an operator controller and an operator programming module. The operator controller is configured to execute a plurality of Map operators and at least one Reduce operator pursuant to an execution sequence, using the raw data or an instant input data in the storage module as inputs. The execution sequence is defined by an operator programming module based on the operator controller's hardware configuration and a directed acyclic graph (DAG). The operator controller is also configured to generate a processed data or an instant output data. The operator controller is further configured to store the processed data or the instant output data in the storage module. The data write module is configured to transmit the processed data from the storage module to the data bus. The data bus is configured to output the processed data.
The foregoing summary, as well as the following detailed description of the invention, will be better understood when read in conjunction with the appended drawings. For the purpose of illustrating the invention, there are shown in the drawings examples which are presently preferred. It should be understood, however, that the present invention is not limited to the precise arrangements and instrumentalities shown.
In the drawings:
Reference will now be made in detail to the examples of the invention, which are illustrated in the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts.
To overcome Apache Hive's shortcomings, this document discloses a novel big-data processing accelerator based on a Hive-on-Tez (i.e., Apache Tez™) framework, the Hive-on-Spark framework, or the SparkSQL framework. This document also discloses a big-data processing system utilizing such a novel processing accelerator. The Apache Tez™ framework, the Hive-on-Spark framework, or the SparkSQL framework generalizes Map and Reduce tasks by exposing interfaces for generic data processing tasks, which consist of a triplet of interfaces: input, output and processor. More particularly, Apache Tez™ extends the possible ways of which individual tasks can be linked together. For example, any arbitrary DAG can be executed in Apache Tez™, the Hive-on-Spark framework, or the SparkSQL framework.
The disclosed big-data processing accelerator uses and leverages hardware to improve efficiency. Specifically, the disclosed big-data processing accelerator is dynamically coded/programmed based on its own hardware configuration and the definitions of software operators in the Hive-on-Tez framework, the Hive-on-Spark framework, or the SparkSQL framework.
The sort engine 220 is a dynamically-programmed hardware that functions similarly to the operator definition file 120, but is coded/programmed differently from the operator definition file 120. Similarly, the join engine 230 is a dynamically-programmed hardware that has the same search function as the operator definition file 130, but is coded/programmed differently from the operator definition file 130. The filter engine 240 is also a dynamically-programmed hardware that has the same match function as the operator definition files 140, but with different codings.
In one example, each of the sort engine 220, the join engine 230, and the filter engine 240 may be dynamically programmed to acquire different functions depending on the data processing requirements. That is, the search engine 220 may be re-programmed to become a filter engine 240 depending on the big-data processing framework 200's requirements.
In one example, the storage module 340 includes a plurality of dual-port random access memory (DPRAM) units.
When the big-data processing system 300 processes data, the data bus 310 receives raw data 410 from an external CPU, and the data read module 320 transmits the raw data 410 to the storage module 340 to generate an intermediate data 420. In one example, the data read module 320 is a direct memory access (DMA) read module that improves the efficiency of reading data from the external CPU. The data bus 310 also transmits Map operators and/or Reduce operators (i.e., Map/Reduce operators 460) from the external CPU to the operator programming module 350. The operator programming module 350 dynamically defines an execution sequence in which the operator controller 360 executes the Map/Reduce operators 460 based on the operator controller 360's hardware configuration. The operator programming module 350 also transmits the Map/Reduce operators 460 and the defined execution sequence to the operator controller 360.
The operator controller 360 processes the raw data 410, a.k.a., the initial phase of the intermediate data 420, to generate a processed data 450, i.e., the final phase of the intermediate data 420. The data write module 330 transmits the processed data 450 from the storage module 340 to the data bus 310 and then to the external CPU. The processed data 450 is the result of processing numerous big-data calculations on the raw data 410. The manner in which the operator controller 360 processes the raw data 410 to generate the processed data 450 involves multiple phases. An instant input data 430 is a specific instant of the intermediate data 420 that is inputted to and processed by the operator controller 360. The instant input data 430 may include data to be used by Map operators (“Map data”) and data to be used by Reduce operators (“Reduce data”). An instant output data 440 is an instant of the intermediate data 420 that is processed and outputted by operator controller 360. The instant output data 440 may include data generated by Map operators and data generated by Reduce operators.
The operator controller 360 extracts an instant input data 430 from the intermediate data 420, processes the instant input data 430 by executing the Map operators and/or the Reduce operators according to the execution sequence dynamically defined by the operator programming module 350, generates instant output data 440, and transmits the instant output data 440 to the storage module 340 to update the intermediate data 420. After all the data processing phases are completed, the intermediate data 420 becomes the processed data 450. The processed data 450 is then transmitted to the data bus 310 via the data write module 330. In one example, the data write module 330 is a DMA write module that may improve the efficiency of writing data to the external CPU.
The operations of the big-data processing accelerator 380, including the operator programming module 350 and the big-data processing accelerator 360, will be discussed in detail next.
The controller body 510 includes a Map operator task 520, a router module 530, and a Reduce operator task 540. The Map operator task 520 receives Map operators from the operator programming module 350. Using the received Map operators, the operator controller 360 processes the instant input data 430 to generate a plurality of Map tasks. Similarly, the Reduce operator task 540 receives Reduce operators from the operator programming module 350. Using such Reduce operators, the operator controller 360 also processes the instant input data 430 to generate a plurality of Reduce tasks. The router module 530 processes the plurality of Map tasks and Reduce tasks based on an execution sequence defined by the operator programming module 350. The operator controller 360 subsequently generates an instant output data 440 and transmits such instant output data 440 to the storage module 340.
In one example, the storage module 340 applies a specific data format to buffer the intermediate data 420. However, the operator controller 360 may not be able to process such data format. Therefore, when the operator controller 360 receives the instant input data 430, the decoder 560 decodes the instant input data 430 to a data format understood by the operator controller 360 so it can process the instant input data 430. Similarly, when the instant output data 440 is to be stored in the storage module 340, the encoder 570 encodes the instant output data 440 to a specific data format so it can be stored by the storage module 340. In some examples, the specific data format includes the JSON format, the ORC format, or a columnar format. In some examples, the columnar format may the Avro format or the Parquet format; however, other columnar formats can still be applied for the specific data format.
In another example, the big-data processing accelerator 380 applies a plurality of operator controllers 360 to process data in parallel, a.k.a. parallelism. Pipelining may also be applied to increase processing throughput. Inter-process communication between the plurality of operator controllers 360 may be required for parallelism if computational tasks have a varied nature. Information transmitted via inter-process communications may also be serialized. The SerDe module 550 acts as the interface for communicating with other operator controllers 360 within the same big-data processing accelerator 380. Whenever information is sent to the operator controller 360 from a first operator controller 360 of the big-data processing accelerator 380, the de-serializer 580 de-serializes the incoming information so that the operator controller 360 can process the incoming information. Similarly, each time when the operator controller 360 sends information to the first operator controller or a second operator controller of the big-data processing accelerator 380, the serializer 590 serializes the information. The first or second operator controller follows the same de-serializing process described above so it can subsequently process the information.
Under the Apache Hive framework, a Map operator must be followed by a Reduce operator, which limits the framework's data processing efficiency. However, the Hive-on-Tez framework, the Hive-on-Spark framework, or the SparkSQL framework utilized by the big-data processing system 300 allows: (1) a Map operator followed by another Map operator; and (2) a Reduce operator followed by another Reduce operator. Such flexibility under the Hive-on-Tez framework, the Hive-on-Spark framework, or the SparkSQL framework improves the efficiency of the big-data processing system 300.
A direct acyclic graph (DAG)-based execution sequence used to execute the Map/Reduce operators may further improve data processing efficiency. In one example, the DAG-based execution sequence may include a plurality of Map operators and at least one Reduce operator. The Hive-on-Tez framework, the Hive-on-Spark framework, or the SparkSQL framework each provide the flexibility needed to implement such DAG configuration. In another example, the operator programming module 350 applies the Hive-on-Tez framework, the Hive-on-Spark framework, or the SparkSQL framework to define the execution sequence in which the Map/Reduce operators 460 are executed.
In
A read time for the data read module 320 (or DMA) is set to be t. People who are skilled in the art knows that DMA may only read one Map operator at a time.
In
In
for each Map operators: Map_0, Map_1, Map_2, and Map_3. The total processing time is reduced to 2.25t. Note that the operator Map_1 is executed 0.25t after the operator Map_0 is executed because the operator Map_1 cannot start reading data via DMA until the operator MAP_0 completes its task.
In
As can be observed from
The Map data portion of an instant input data 430, through a decoder 560, is buffered in the Map memory unit 1050. An execution sequence may direct specific Map register(s) to load the relevant Map operators from the operator pool 1010. The execution sequence may further direct, e.g., in the form of a MIPS command or a reduced instruction set computer (RISC) command that is used by the data multiplexer 1040 and complies with the operator controller 350's hardware configuration, the loading of the Map data from specific memory addresses of the Map memory unit 1050. Particularly, pursuant to the execution sequence, Map_0, Map_1, Map_2, and Map_3 may respectively load the relevant Map operators from specific Map registers (e.g., Map_0 may load Map operators from at least Map_Reg_0, Map_Reg_1, and/or Map_Reg_2). Each Map task may also load specific Map data buffered in the Map memory unit 1050 from memory addresses selected by the data multiplexer 1040 pursuant to the execution sequence. Map_0, Map_1, Map_2, and Map_3 may respectively perform their tasks using the loaded Map operators and Map data, and generate Map results accordingly. And the Map results are subsequently put into the Map queue 1020.
The Reduce task R0 processes specific Map results in the Map queue 1020 with the aid of the hash list 1030, and generates Reduce results accordingly. The Reduce results are then stored in the Reduce memory unit 1060. The instant output data 440 receives the Reduce results from the Reduce memory unit 1060 and is stored in the storage module 340.
The Map data portion of an instant input data 430, through a decoder 560, is buffered in the Map memory units 1150 and 1180. An execution sequence may direct specific Map register(s) to load relevant Map operators from the operator pool 1110. The execution sequence may further direct, e.g., in the form of a MIPS command or a reduced instruction set computer (RISC) command that is used by the data multiplexers 1140 and 1170 and complies with the operator controller 350's hardware configuration, the loading of the Map data from specific memory addresses of the Map memory units 1150 and 1180. Particularly, pursuant to the execution sequence, Map_0, Map_1, Map_2, Map_3, Map_4, Map_5, Map_6, and Map_7 may respectively load the relevant Map operators from specific Map registers (e.g., Map_0 may load Map operators from at least one of Map_Reg_0, Map_Reg_1, and/or Map_Reg_2). Each Map task may also load specific Map data buffered in the Map memory units 1150 and 1180 from memory addresses selected by the data multiplexers 1140 and 1170 pursuant to the execution sequence. Map_0, Map_1, Map_2, Map_3, Map_4, Map_5, Map_6, and Map_7 may respectively perform their tasks using the loaded Map operators and Map data, and generate Map results accordingly. And the Map results are subsequently put into the Map queue 1120.
The Reduce task R0 processes specific Map results in the Map queue 1120 with the aid of the hash list 1130, and generates Reduce results accordingly. The Reduce results are then stored in the Reduce memory unit 1160. The instant output data 440 receives the Reduce results from the Reduce memory unit 1060 and is stored in the storage module 340.
One skill in the art understands that the search method associated with the application is similar to the search method in the context of the apps, which was described in detail previously. Therefore, all the embodiments, methods, systems and components relating to apps apply to applications.
The application claims priority to U.S. Provisional Application No. 62339804, filed on May 20, 2016, entitled “Hive-on-Tez Accelerator w/ORC Proposed Software/Hardware Structure”, which is incorporated by reference herein in its entirety.
Number | Date | Country | |
---|---|---|---|
62339804 | May 2016 | US |