16 Mesh Coarse Black Pepper, How Is Our Solar System Different From Others, Sambucus Ebulus Syrup, Incineroar Gx Rainbow, Section 8 Notice, Method Of Joints Matlab, Blu-ray Player Making Buzzing Noise, " />

spark streaming architecture diagram

13:14 09-Th12-2020

Typically, you might set up checkpointing every 5–10 batches of data.When recovering lost data, Spark Streaming needs only to go back to the last checkpoint. Apache Spark has a well-defined and layered architecture where all the spark components and layers are loosely coupled and integrated with various extensions and libraries. Spark Streaming receives data from various input sources and groups it into small batches. It includes Streaming as a module. Despite, processing one record at a time, it discretizes data into tiny, micro-batches. The ingestion will be done using Spark Streaming. This is what stream processing engines are designed to do, as we will discuss in detail next. To be precise, our process was E-L-T which meant that for a real-time data warehouse, the database was continuously running hybrid workloads which competed fiercely for system resources, just to keep the dimensional models up to dat… lets take an example of fetching data from a kafka topic. Spark is a unified analytics engine for large-scale data processing. Apache Spark follows a master/slave architecture with two main daemons and a cluster manager –. Hadoop Project- Perform basic big data analysis on airline dataset using big data tools -Pig, Hive and Impala. DAG is a sequence of computations performed on data where each node is an RDD partition and edge is a transformation on top of data. The data sources in a real application would be devices i… The first stream contains ride information, and the second contains fare information. Spark Streaming can be used to stream live data and processing can happen in real time. "Spark is beautiful. Spark Streaming architecture is pure micro-batch architecture: So for a streaming application, I was using DStream connected to Twitter using TwitterUtils:. Spark Streaming receives data from various input sources and groups it into small batches. Driver exposes the information about the running spark application through a Web UI at port 4040. The batch interval is typically between 500 milliseconds and several seconds, as configured by the application developer. Internally, each DStream is represented as a sequence of RDDs arriving at each time step. The choice of framework. This article is a single-stop resource that gives spark architecture overview with the help of spark architecture diagram and is a good beginners resource for people looking to learn spark. 2. It is the central point and the entry point of the Spark Shell (Scala, Python, and R). But who wants to wait 24h to get updated analytics? Kafka Streaming Architecture Diagram Spark Streaming provides a high-level abstraction called discretized stream or DStream, which represents a continuous stream of data. Clear code plus intuitive demo are also included! RDD’s are collection of data items that are split into partitions and can be stored in-memory on workers nodes of the spark cluster. We discussed about three frameworks, Spark Streaming, Kafka Streams, and Alpakka Kafka. AWS vs Azure-Who is the big winner in the cloud war? The received data by default is replicated across two nodes, so Spark Streaming can tolerate single worker failures. A DStream is a sequence of data arriving over time. Apache Spark. There are 3 different types of cluster managers a Spark application can leverage for the allocation and deallocation of various physical resources such as memory for client spark jobs, CPU memory, etc. The topic is a logical channel to which producers publish message and from which the consumers receive messages. At any point of time when the spark application is running, the driver program will monitor the set of executors that run. Watch this Apache Spark Architecture video tutorial: The Apache Spark framework uses a master–slave architecture that consists of a driver, which runs as a master node, and many executors that run across as worker nodes in the cluster. In stateless transformations the processing of each batch does not depend on the data of its previous batches. The details of those options can b… 2. Lambda architecture is an approach that mixes both batch and stream (real-time) data- processing and makes the combined data available for downstream analysis or viewing via a serving layer. Note that a streaming context can be started only once, and must be started after we set up all the DStreams and output operations we want. Architecture of Spark Streaming: Discretized Streams. Executor performs all the data processing. A spark cluster has a single Master and any number of Slaves/Workers. In this Databricks Azure project, you will use Spark & Parquet file formats to analyse the Yelp reviews dataset. Read the Spark Streaming programming guide, which includes a tutorial and describes system architecture, configuration and high availability. Processthe data in parallel on a cluster. Read in Detail about Resilient Distributed Datasets in Spark. In this big data project, we will continue from a previous hive project "Data engineering on Yelp Datasets using Hadoop tools" and do the entire data processing using spark. It takes as input a batch interval specifying how often to process The Data Flow diagram facilities are provided in the form of: A Data Flow diagram type, accessed through the 'New Diagram' dialog A lot of players on the market have built successful MapReduce workflows to daily process terabytes of historical data. Spark Project - Discuss real-time monitoring of taxis in a city. At this stage, the driver program also performs certain optimizations like pipelining transformations and then it converts the logical DAG into physical execution plan with set of stages. Objective. An external service responsible for acquiring resources on the spark cluster and allocating them to a spark job. Submitting the Spark streaming job. Design and … In this Spark project, we are going to bring processing to the speed layer of the lambda architecture which opens up capabilities to monitor application real time performance, measure real time comfort with applications and real time alert in case of security. Executor is a distributed agent responsible for the execution of tasks. Kafka act as the central hub for real-time streams of data and are processed using complex algorithms in Spark Streaming. Now executors start executing the various tasks assigned by the driver program. At a high level, modern distributed stream processing pipelines execute as follows: 1. Data sources. According to Spark Certified Experts, Sparks performance is up to 100 times faster in memory and 10 times faster on disk when compared to Hadoop. This Elasticsearch example deploys the AWS ELK stack to analyse streaming event data. The StreamingContext in the driver program then periodically runs Spark jobs to process this data and combine it with RDDs from previous time steps. The structure of a Spark program at higher level is - RDD's are created from the input data and new RDD's are derived from the existing RDD's using different transformations, after which an action is performed on the data. The video stream analytics discussed in this article is designed on these principles.Types of video stream analytics include: 1. object tracking, 2. motion detection, 3. face recognition, 4. gesture recognition, 5. augmented reality, and 6. image segmentation.The use case of this article’s sample a… Thus Spark Streaming also includes a mechanism called checkpointing that saves state periodically to a reliable filesystem (e.g., HDFS or S3). System Architecture. into some data ingestion system like Apache Kafka, Amazon Kinesis, etc. Outputthe results out to downstre… Spark Architecture Diagram – Overview of Apache Spark Cluster. The Spark streaming app collects pipeline executions of new tweets from the tweets Pub/Sub topic every 20 seconds. To run the above program in local mode create a jar file and use the below command. Step 4: Run the Spark Streaming app to process clickstream events. Airline Dataset Analysis using Hadoop, Hive, Pig and Impala, Analysing Big Data with Twitter Sentiments using Spark Streaming, PySpark Tutorial - Learn to use Apache Spark with Python, Yelp Data Processing Using Spark And Hive Part 1, Analyse Yelp Dataset with Spark & Parquet Format on Azure Databricks, Online Hadoop Projects -Solving small file problem in Hadoop, Real-Time Log Processing using Spark Streaming Architecture, Top 100 Hadoop Interview Questions and Answers 2017, MapReduce Interview Questions and Answers, Real-Time Hadoop Interview Questions and Answers, Hadoop Admin Interview Questions and Answers, Basic Hadoop Interview Questions and Answers, Apache Spark Interview Questions and Answers, Data Analyst Interview Questions and Answers, 100 Data Science Interview Questions and Answers (General), 100 Data Science in R Interview Questions and Answers, 100 Data Science in Python Interview Questions and Answers, Introduction to TensorFlow for Deep Learning. To reliably handle and efficiently process large-scale video stream data requires a scalable, fault-tolerant, loosely coupled distributed system. In this blog, I will give you a brief insight on Spark Architecture and the fundamentals that underlie Spark Architecture. Kappa Architecture Let’s translate the operational sequencing of the kappa architecture to a functional equation which defines any … Data Flow Diagrams in Enterprise Architect. Required fields are marked *. It includes Streaming as a module. Apache Spark can be used for batch processing and real-time processing as well. 03 March 2016 on Spark, scheduling, RDD, DAG, shuffle. In my previous role I developed and managed a large near real-time data warehouse using proprietary technologies for CDC (change data capture), data replication, ETL (extract-transform-load) and the RDBMS (relational database management software) components. Apart from transformations, DStreams support output operations, such as the print(). The reference architecture includes a simulated data generator that reads from a set of static files and pushes the data to Event Hubs. Architecture. Apache Spark has a well-defined and layered architecture where all the spark components and layers are loosely coupled and integrated with various extensions and libraries. Nice observation.I feel that enough RAM size or nodes will save, despite using LRU cache.I think incorporating Tachyon helps a little too, like de-duplicating in-memory data and … The real-time data streaming will be simulated using Flume. As we know, continuous operator processes the streaming data one record at a time. Let’s assume you have a Kafka cluster that you can connect to and you are looking to use Spark’s Structured Streaming to ingest and process messages from a topic. Here, we are listing some of the fundamental concepts of Kafka Architecture that you must know: a. Kafka Topics. Real-Time Log Processing using Spark Streaming Architecture In this Spark project, we are going to bring processing to the speed layer of the lambda architecture which opens up capabilities to monitor application real time performance, measure real time comfort with applications and real time alert in case of security In this architecture, there are two data sources that generate data streams in real time. Before executors begin execution, they register themselves with the driver program so that the driver has holistic view of all the executors. Apache Spark Architecture is … One of the reasons, why spark has become so popul… Apache Spark is considered as a powerful complement to Hadoop, big data’s original technology of choice. 83 thoughts on “ Spark Architecture ” Raja March 17, 2015 at 5:06 pm. The programming abstraction in Spark Streaming is a discretized stream or a DStream , which is a sequence of RDDs, where each RDD has one time slice of the data in the stream. This solution automatically configures a batch and real-time data-processing architecture on AWS. Once the data is processed, Spark Streaming could be publishing results into yet another Kafka topic or store in HDFS, databases or dashboards. Tools used include Nifi, PySpark, Elasticsearch, Logstash and Kibana for visualisation. Apache Spark Architecture is based on two main abstractions-. Apache Spark is an open-source cluster computing framework which is setting the world of Big Data on fire. This blog post will introduce you to the Lambda Architecturedesigned to take advantages of both batch and streaming processing methods. Here is a basic diagram for the Kappa architecture that shows two layers system of operation for this data processing architecture. Spark RDD’s support two different types of operations – Transformations and Actions. With Hadoop, it would take us six-seven months to develop a machine learning model. The DAG abstraction helps eliminate the Hadoop MapReduce multi0stage execution model and provides performance enhancements over Hadoop. Just to introduce these three frameworks, Spark Streaming is … The Spark Streaming app is able to consume clickstream events as soon as the Kafka producer starts publishing events (as described in Step 5) into the Kafka topic. Spark Streaming uses a micro-batch architecture, where the streaming computation is treated as a continuous series of batch computations on small batches of data. The driver program runs the main () function of the application and is the place where the Spark Context is created. To get started with apache spark, the standalone cluster manager is the easiest one to use when developing a new spark application. ← spark dataset api with examples – tutorial 20, stateless transformation spark streaming example →, spark sql example to find second highest average. 1. Streaming data refers to data that is continuously generated , usually in high volumes and at high velocity . Kafka is also used to stream data for batch data analysis. Spark architecture is a well-layered loop that includes all the Spark components. The reference architecture includes a simulated data generator that reads from a set of static files and pushes the data to Event Hubs. Click to share on Twitter (Opens in new window), Click to share on Facebook (Opens in new window). 3 . Spark Driver contains various components – DAGScheduler, TaskScheduler, BackendScheduler and BlockManager responsible for the translation of spark user code into actual spark jobs executed on the cluster. Spark Driver – Master Node of a Spark Application. Executor stores the computation results data in-memory, cache or on hard disk drives. Then tasks are bundled to be sent to the Spark Cluster. At the beginning of each time interval a new batch is created, and any data that arrives during that interval gets added to that batch. Read more to know all about spark architecture & its working. The driver program that runs on the master node of the spark cluster schedules the job execution and negotiates with the cluster manager. We can also say, spark streaming’s receivers accept data in parallel. Following data flow diagram explains the working of Spark streaming. the worker processes which run individual tasks. When driver programs main () method exits or when it call the stop () method of the Spark Context, it will terminate all the executors and release the resources from the cluster manager. They include the common RDD transformations like map(), filter(), and reduceByKey(). The architecture diagram of video stream analytics system is illustrated in Figure 1 below. Your email address will not be published. Output operations are similar to RDD actions in that they write data to an external system, but in Spark Streaming they run periodically on each time step, producing output in batches. Transformations on DStreams can be grouped into either stateless or stateful. Read through the application submission guideto learn about launching applications on a cluster. In this hadoop project, we are going to be continuing the series on data engineering by discussing and implementing various ways to solve the hadoop small file problem. The first stream contains ride information, and the second contains fare information. spark-submit is the single script used to submit a spark program and launches the application on the cluster. Video Stream Analytics System Architecture Diagram. A complete end-to-end AI platform requires services for each step of the AI workflow. Within Enterprise Architect, you can develop Data Flow diagrams quickly and simply through use of an MDG Technology integrated with the Enterprise Architect installer. 83 thoughts on “ Spark Architecture ” Raja March 17, 2015 at 5:06 pm. New batches are created at regular time intervals. The architecture consists of the following components. It processes new tweets together with all tweets that were collected over a 60-second window. Check out example programs in Scala and Java. This will occur in a separate thread, so to keep our application from exiting, we also need to call awaitTermination to wait for the streaming computation to finish. Read the Spark Streaming programming guide, which includes a tutorial and describes system architecture, configuration and high availability. They include transformations based on sliding windows and on tracking state across time. live logs, system telemetry data, IoT device data, etc.) The following diagram shows the sliding window mechanism that the Spark streaming app uses. We discussed about three frameworks, Spark Streaming, Kafka Streams, and Alpakka Kafka. What is Streaming Data and Streaming data Architecture? After creating the physical execution plan, it creates small physical execution units referred to as tasks under each stage. The underlying architecture and the role of the many available tools in a Hadoop ecosystem can prove to be complicated for newcomers. Choosing a cluster manager for any spark application depends on the goals of the application because all cluster managers provide different set of scheduling capabilities. Driver stores the metadata about all the Resilient Distributed Databases and their partitions. These receive the input data and replicate it (by default) to another executor for fault tolerance. Kafka Architecture – Fundamental Concepts. In this Apache Spark SQL project, we will go through provisioning data for retrieval using Spark SQL. Tasks are then executed by the executors i.e. Executors usually run for the entire lifetime of a Spark application and this phenomenon is known as “Static Allocation of Executors”. Submitting the Spark streaming job. At this point the driver sends tasks to the cluster manager based on data placement. For this post, I used the Direct Approach (No Receivers) method of Spark Streaming to receive data from Kafka. As part of this you will deploy Azure data factory, data pipelines and visualise the analysis. The cluster manager then launches executors on the worker nodes on behalf of the driver. Each input batch forms an RDD, and is processed using Spark jobs to create other RDDs. Figure 1. Check out example programs in Scala and Java. To get started with Spark Streaming: Download Spark. Here is a basic diagram for the Kappa architecture that shows two layers system of operation for this data processing architecture. PySpark Project-Get a handle on using Python with Spark through this hands-on data processing spark python tutorial. 3. It streams data into your BigData platform or into RDBMS, Cassandra, Spark, or even S3 for some future data analysis. This post covers core concepts of Apache Spark such as RDD, DAG, execution workflow, forming stages of tasks and shuffle implementation and also describes architecture and main components of Spark Driver. Release your Data Science projects faster and get just-in-time learning. Through this Spark Streaming tutorial, you will learn basics of Apache Spark Streaming, what is the need of streaming in Apache Spark, Streaming in Spark architecture, how streaming works in Spark.You will also understand what are the Spark streaming sources and various Streaming Operations in Spark, Advantages of Apache Spark Streaming over Big Data Hadoop and Storm. Data sources. What is Streaming Data and Streaming data Architecture? Through this Spark Streaming tutorial, you will learn basics of Apache Spark Streaming, what is the need of streaming in Apache Spark, Streaming in Spark architecture, how streaming works in Spark.You will also understand what are the Spark streaming sources and various Streaming Operations in Spark, Advantages of Apache Spark Streaming over Big Data Hadoop and Storm. Once built, they offer two types of operations 1. transformations – which yield a new DStream 2. output operations – which write data to an external system. Hadoop YARN, Apache Mesos or the simple standalone spark cluster manager either of them can be launched on-premise or in the cloud for a spark application to run. Receive streaming data from data sources (e.g. Internal working of spark is considered as a complement to big data software. Get access to 100+ code recipes and project use-cases. DStreams provide many of the same operations available on RDDs, plus new operations related to time, such as sliding windows. Data Flow Diagrams in Enterprise Architect. ... Watch this Spark architecture video to understand the working mechanism of Spark better. To get started with Spark Streaming: Download Spark. ... Here’s a Spark architecture diagram that shows the functioning of the run-time components. The Real-Time Analytics with Spark Streaming solution is designed to support custom Apache Spark Streaming applications, and leverages Amazon EMR for processing vast amounts of data across dynamically scalable Amazon Elastic Compute Cloud (Amazon EC2) instances. To start receiving data, we must explicitly call start() on the StreamingContext. Spark Streaming has been getting some attention lately as a real-time data processing tool, often mentioned alongside Apache Storm.If you ask me, no real-time data processing tool is complete without Kafka integration (smile), hence I added an example Spark Streaming application to kafka-storm-starter that demonstrates how to read from Kafka and write to Kafka, using Avro as the … Spark Streaming is an extension of the core Spark API that enables scalable, high-throughput, fault-tolerant stream processing of live data streams. This document gives a short overview of how Spark runs on clusters, to make it easier to understandthe components involved. Nice observation.I feel that enough RAM size or nodes will save, despite using LRU cache.I think incorporating Tachyon helps a little too, like de-duplicating in-memory data and … The driver program then talks to the cluster manager and negotiates for resources. In this tutorial, we will discuss, abstractions on which architecture is based, terminologies used in it, components of the spark architecture, and how spark uses all these components while working. There are multiple options through which spark-submit script can connect with different cluster managers and control on the number of resources the application gets. 5. 1. Spark Streaming is an extension of the core Spark API that enables scalable, high-throughput, fault-tolerant stream processing of live data streams. It translates the RDD’s into the execution graph and splits the graph into multiple stages. For this post, I used the Direct Approach (No Receivers) method of Spark Streaming to receive data from Kafka. When a client submits a spark user application code, the driver implicitly converts the code containing transformations and actions into a logical directed acyclic graph (DAG). The size of the time intervals is determined by a parameter called the batch interval. Kafka feeds Hadoop. The Databricks platform already includes an Apache Kafka 0.10 connector for Structured Streaming, so it is easy to set up a stream to read messages:There are a number of options that can be specified while reading streams. In this big data spark project, we will do Twitter sentiment analysis using spark streaming on the incoming streaming data. Streaming data refers to data that is continuously generated , usually in high volumes and at high velocity . In a real application, the data sources would be devices i… Using just lineage, however, recomputation could take a long time for data that has been built up since the beginning of the program. In terms of datasets, apache spark supports two types of RDD’s – Hadoop Datasets which are created from the files stored on HDFS and parallelized collections which are based on existing Scala collections. Reads from and Writes data to external sources. Driver program in the spark architecture also schedules future tasks based on data placement by tracking the location of cached data. We will start by creating a StreamingContext, which is the main entry point for streaming functionality. Direct - Transformation is an action which transitions data partition state from A to B. Acyclic -Transformation cannot return to the older partition. in a vertical spark cluster or in mixed machine configuration. Stateful transformations, in contrast, use data or intermediate results from previous batches to compute the results of the current batch. It processes new tweets together with all tweets that were collected over a 60-second window. In this architecture, there are two data sources that generate data streams in real time. Figure 1: Real-Time Analytics with Spark Streaming default architecture. Notify me of follow-up comments by email. Cockpits of Jobs and Tasks Execution -Driver program converts a user application into smaller execution units known as tasks. This also sets up an underlying SparkContext that it will use to process the data. In this architecture of spark, all the components and layers are loosely coupled and its components were integrated. The processed results can then be pushed out to external systems in batches. Every spark applications has its own executor process. Watch this Apache Spark Architecture video tutorial: The Apache Spark framework uses a master–slave architecture that consists of a driver, which runs as a master node, and many executors that run across as worker nodes in the cluster. These data stores often support data analysis, reporting, data science crunching, compliance auditing, and backups. New batches are created at regular time intervals. The Spark streaming app collects pipeline executions of new tweets from the tweets Pub/Sub topic every 20 seconds. For few cluster managers, spark-submit can run the driver within the cluster like in YARN on worker node whilst for others it runs only on local machines. Spark is a more accessible, powerful and capable big data tool for tackling various big data challenges. Architecture High Level Architecture. This data is stored in the memory of the executors in the same way as cached RDDs. This article uses plenty of diagrams and straightforward descriptions to help you explore the exciting ecosystem of Apache Hadoop. DStreams can be created from various input sources, such as Flume, Kafka, or HDFS. The driver and the executors run their individual Java processes and users can run them on the same horizontal spark cluster or on separate machines i.e. With more than 500 contributors from across 200 organizations responsible for code and a user base of 225,000+ members- Apache Spark has become mainstream and most in-demand big data framework across all major industries. Ecommerce companies like Alibaba, social networking companies like Tencent and chines search engine Baidu, all run apache spark operations at scale. Spark Streaming can be used to stream live data and processing can happen in real time. 1. It provides high-level APIs in Scala, Java, Python, and R, and an optimized engine … … to get updated analytics ( ) function of the Spark Shell ( Scala, Java, Python, Alpakka... Diagrams and straightforward descriptions to help you explore the exciting ecosystem of Hadoop... View of all the Spark architecture diagram of video stream data for batch processing and real-time processing well. Refers to data that is continuously generated, usually in high volumes and at high velocity through this hands-on processing. Data for batch processing and real-time processing as well share on Twitter ( Opens in window. S3 ) batch is done growing detail next can happen in real time and visualise the.... Configuration and high availability pipeline executions of new tweets together with all tweets that were collected over a 60-second.. The running Spark application is running, the standalone cluster manager then launches executors on the Streaming... Daemons and a cluster manager based on data placement by tracking the location of data! It into small batches, I used the Direct Approach ( No Receivers ) method of Streaming... As input a batch interval specifying how often to process the data to Event Hubs apache Hadoop and... As sliding windows and on tracking state across time will go through provisioning data for retrieval Spark... And spark streaming architecture diagram high velocity fetching data from Kafka, scheduling, RDD, an. Groups it into small batches across two nodes, so Spark Streaming provides an called! Download Spark continuously generated, usually in high volumes and at high velocity stream analytics system is illustrated figure... Mode create a jar file and use the below command level, modern distributed processing. Project - discuss real-time monitoring of taxis in a vertical Spark cluster follows: 1 Raja 17. 83 thoughts on “ Spark architecture diagram that shows two layers system of operation for this data are. Distributed agent responsible for acquiring resources on the worker nodes on behalf of the time interval the batch done... The AWS ELK stack to analyse the Yelp reviews dataset are loosely distributed! That enables scalable, high-throughput, fault-tolerant stream processing of live data.... Execution graph and splits the graph into multiple stages current batch more accessible, powerful capable! To external systems in batches the AI workflow tasks execution -Driver program converts user... A Streaming application, I was using DStream connected to Twitter using TwitterUtils: usually run for Kappa! The many available tools in a Hadoop ecosystem can prove to be sent to the older partition by parameter... And splits the graph into multiple stages, data science projects faster and get learning... Of Kafka architecture that shows the sliding window mechanism that the Spark cluster receiving data,.. Processed using complex algorithms in Spark when developing a new Spark application a,... Do, as configured by the application gets discussed about three frameworks, Spark programming... To receive data from various input sources and groups it into small batches this apache Spark architecture a! Analysis using Spark SQL interval is typically between 500 milliseconds and several seconds, as we will discuss in about. Often to process this data processing some data ingestion system like apache Kafka or... Local mode create a jar file and use the below command can not return to the older partition to! Streaming: Download Spark cluster managers and control on the incoming Streaming data to. Analysis on airline dataset using big data analysis themselves with the driver program runs main... Level, modern distributed stream processing pipelines execute as follows: 1 24h to updated... Master Node of a Spark cluster descriptions to help you explore the exciting ecosystem of apache Spark, or..: run the above program in local mode create a jar file and use the below.! Agent responsible for acquiring resources on the number of resources the application and is processed using complex in... Spark through this hands-on data processing Spark Python tutorial script can connect with different cluster managers and on... Helps eliminate the Hadoop MapReduce multi0stage execution model and provides performance enhancements over Hadoop is! Data by default ) to another executor for fault tolerance time interval the batch interval is typically between milliseconds.

16 Mesh Coarse Black Pepper, How Is Our Solar System Different From Others, Sambucus Ebulus Syrup, Incineroar Gx Rainbow, Section 8 Notice, Method Of Joints Matlab, Blu-ray Player Making Buzzing Noise,

BÀI VIẾT CÙNG CHUYÊN MỤC

Bình luận

Bạn có thể dùng các thẻ: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>