Taller sobre la creación de un clúster de Apache Hadoop y aplicaciones de su entorno de las XIII Xornadas Libres de Gpul en la Universidade da Coruña http://gpul.es/e/2014/xornadas-libres/
Data in Hadoop is getting bigger every day, consumers of the data are growing, organizations are now looking at making their Hadoop cluster compliant to federal regulations and commercial demands. Apache Ranger simplifies the management of security policies across all components in Hadoop. Ranger provides granular access controls to data.
The deck describes what security tools are available in Hadoop and their purpose then it moves on to discuss in detail Apache Ranger.
Apache Hive is a data warehouse software built on top of Hadoop that allows users to query data stored in various databases and file systems using an SQL-like interface. It provides a way to summarize, query, and analyze large datasets stored in Hadoop distributed file system (HDFS). Hive gives SQL capabilities to analyze data without needing MapReduce programming. Users can build a data warehouse by creating Hive tables, loading data files into HDFS, and then querying and analyzing the data using HiveQL, which Hive then converts into MapReduce jobs.
Este documento describe el sistema de archivos distribuido HDFS (Hadoop Distributed File System). Explica que HDFS permite interactuar a través de una interfaz de línea de comandos, una interfaz Java y herramientas como hdfs dfsadmin y hdfs fsck. También describe el funcionamiento del namenode principal y de checkpoint, que gestionan el almacenamiento y replicación de archivos en HDFS.
This document provides an overview of Hadoop architecture and the Hadoop Distributed File System (HDFS). It discusses Hadoop core components like HDFS, YARN and MapReduce. It also covers HDFS architecture with the NameNode and DataNodes. Additionally, it explains Hadoop configuration files, modes of operation, commands and daemons.
The columnar roadmap: Apache Parquet and Apache ArrowJulien Le Dem
This document discusses Apache Parquet and Apache Arrow, open source projects for columnar data formats. Parquet is an on-disk columnar format that optimizes I/O performance through compression and projection pushdown. Arrow is an in-memory columnar format that maximizes CPU efficiency through vectorized processing and SIMD. It aims to serve as a standard in-memory format between systems. The document outlines how Arrow builds on Parquet's success and provides benefits like reduced serialization overhead and ability to share functionality through its ecosystem. It also describes how Parquet and Arrow representations are integrated through techniques like vectorized reading and predicate pushdown.
Este documento proporciona una introducción general a Hadoop y su ecosistema. Explica brevemente el contexto histórico de Big Data y Hadoop, define los componentes clave de Hadoop como HDFS y MapReduce, y describe varias aplicaciones populares como Hive, Pig y Spark. También cubre conceptos como EMR de AWS y casos de uso comercial exitosos de Hadoop en análisis de riesgos, retención de clientes y puntos de venta.
Taller sobre la creación de un clúster de Apache Hadoop y aplicaciones de su entorno de las XIII Xornadas Libres de Gpul en la Universidade da Coruña http://gpul.es/e/2014/xornadas-libres/
Data in Hadoop is getting bigger every day, consumers of the data are growing, organizations are now looking at making their Hadoop cluster compliant to federal regulations and commercial demands. Apache Ranger simplifies the management of security policies across all components in Hadoop. Ranger provides granular access controls to data.
The deck describes what security tools are available in Hadoop and their purpose then it moves on to discuss in detail Apache Ranger.
Apache Hive is a data warehouse software built on top of Hadoop that allows users to query data stored in various databases and file systems using an SQL-like interface. It provides a way to summarize, query, and analyze large datasets stored in Hadoop distributed file system (HDFS). Hive gives SQL capabilities to analyze data without needing MapReduce programming. Users can build a data warehouse by creating Hive tables, loading data files into HDFS, and then querying and analyzing the data using HiveQL, which Hive then converts into MapReduce jobs.
Este documento describe el sistema de archivos distribuido HDFS (Hadoop Distributed File System). Explica que HDFS permite interactuar a través de una interfaz de línea de comandos, una interfaz Java y herramientas como hdfs dfsadmin y hdfs fsck. También describe el funcionamiento del namenode principal y de checkpoint, que gestionan el almacenamiento y replicación de archivos en HDFS.
This document provides an overview of Hadoop architecture and the Hadoop Distributed File System (HDFS). It discusses Hadoop core components like HDFS, YARN and MapReduce. It also covers HDFS architecture with the NameNode and DataNodes. Additionally, it explains Hadoop configuration files, modes of operation, commands and daemons.
The columnar roadmap: Apache Parquet and Apache ArrowJulien Le Dem
This document discusses Apache Parquet and Apache Arrow, open source projects for columnar data formats. Parquet is an on-disk columnar format that optimizes I/O performance through compression and projection pushdown. Arrow is an in-memory columnar format that maximizes CPU efficiency through vectorized processing and SIMD. It aims to serve as a standard in-memory format between systems. The document outlines how Arrow builds on Parquet's success and provides benefits like reduced serialization overhead and ability to share functionality through its ecosystem. It also describes how Parquet and Arrow representations are integrated through techniques like vectorized reading and predicate pushdown.
Este documento proporciona una introducción general a Hadoop y su ecosistema. Explica brevemente el contexto histórico de Big Data y Hadoop, define los componentes clave de Hadoop como HDFS y MapReduce, y describe varias aplicaciones populares como Hive, Pig y Spark. También cubre conceptos como EMR de AWS y casos de uso comercial exitosos de Hadoop en análisis de riesgos, retención de clientes y puntos de venta.
What Is Hadoop | Hadoop Tutorial For Beginners | EdurekaEdureka!
( Hadoop Training: https://www.edureka.co/hadoop )
This Edureka "What is Hadoop" tutorial ( Hadoop Blog series: https://goo.gl/LFesy8 ) helps you to understand how Big Data emerged as a problem and how Hadoop solved that problem. This tutorial will be discussing about Hadoop Architecture, HDFS & it's architecture, YARN and MapReduce in detail. Below are the topics covered in this tutorial:
1) 5 V’s of Big Data
2) Problems with Big Data
3) Hadoop-as-a solution
4) What is Hadoop?
5) HDFS
6) YARN
7) MapReduce
8) Hadoop Ecosystem
Introduction To Hadoop | What Is Hadoop And Big Data | Hadoop Tutorial For Be...Simplilearn
This presentation about Hadoop will help you learn the basics of Hadoop and its components. First, you will see what is Big Data and the significant challenges in it. Then, you will understand how Hadoop solved those challenges. You will have a glance at the History of Hadoop, what is Hadoop, the different companies using Hadoop, the applications of Hadoop in different companies, etc. Finally, you will learn the three essential components of Hadoop – HDFS, MapReduce, and YARN, along with their architecture. Now, let us get started with Introduction to Hadoop.
Below topics are explained in this Hadoop presentation:
1. Big Data and its challenges
2. Hadoop as a solution
3. History of Hadoop
4. What is Hadoop
5. Applications of Hadoop
6. Components of Hadoop
7. Hadoop Distributed File System
8. Hadoop MapReduce
9. Hadoop YARN
What is this Big Data Hadoop training course about?
The Big Data Hadoop and Spark developer course have been designed to impart an in-depth knowledge of Big Data processing using Hadoop and Spark. The course is packed with real-life projects and case studies to be executed in the CloudLab.
What are the course objectives?
This course will enable you to:
1. Understand the different components of Hadoop ecosystem such as Hadoop 2.7, Yarn, MapReduce, Pig, Hive, Impala, HBase, Sqoop, Flume, and Apache Spark
2. Understand Hadoop Distributed File System (HDFS) and YARN as well as their architecture, and learn how to work with them for storage and resource management
3. Understand MapReduce and its characteristics, and assimilate some advanced MapReduce concepts
4. Get an overview of Sqoop and Flume and describe how to ingest data using them
5. Create database and tables in Hive and Impala, understand HBase, and use Hive and Impala for partitioning
6. Understand different types of file formats, Avro Schema, using Arvo with Hive, and Sqoop and Schema evolution
7. Understand Flume, Flume architecture, sources, flume sinks, channels, and flume configurations
8. Understand HBase, its architecture, data storage, and working with HBase. You will also understand the difference between HBase and RDBMS
9. Gain a working knowledge of Pig and its components
10. Do functional programming in Spark
11. Understand resilient distribution datasets (RDD) in detail
12. Implement and build Spark applications
13. Gain an in-depth understanding of parallel processing in Spark and Spark RDD optimization techniques
14. Understand the common use-cases of Spark and the various interactive algorithms
15. Learn Spark SQL, creating, transforming, and querying Data frames
Learn more at https://www.simplilearn.com/big-data-and-analytics/introduction-to-big-data-and-hadoop-certification-training.
Apache Sqoop efficiently transfers bulk data between Apache Hadoop and structured datastores such as relational databases. Sqoop helps offload certain tasks (such as ETL processing) from the EDW to Hadoop for efficient execution at a much lower cost. Sqoop can also be used to extract data from Hadoop and export it into external structured datastores. Sqoop works with relational databases such as Teradata, Netezza, Oracle, MySQL, Postgres, and HSQLDB
Ranger’s pluggable architecture allows resource access policy administration and enforcement for standard and custom services from a “single pane of glass”. Apache Ranger has a rich Authorization Model, which provides the mechanism to author Policy in a Ranger Admin Server and serves as policy decision and audit point in authorizing user’s resource access within various components of Hadoop ecosystem.
This session will provide a deep dive into Ranger framework and a cook-book for extending Ranger to do authorization / auditing on resource access to external applications, including technical details of Rest APIs, Ranger policy engine and enriching authorization requests, with a demo of a sample application.We will then demonstrate a real-world example of how Ranger has simplified security enforcement for Hadoop-native MPP SQL engine like Apache HAWQ (incubating),which previously used its built-in Postgres-like authorization mechanisms. The integration design includes a Ranger Plugin Service that allows transparent authorization API calls between C-based Apache HAWQ and Java-based Apache Ranger.
Hadoop Training | Hadoop Training For Beginners | Hadoop Architecture | Hadoo...Simplilearn
The document provides information about Hadoop training. It discusses the need for Hadoop in today's data-heavy world. It then describes what Hadoop is, its ecosystem including HDFS for storage and MapReduce for processing. It also discusses YARN and provides a bank use case. It further explains the architecture and working of HDFS and MapReduce in processing large datasets in parallel across clusters.
Dataset description: DCAT and other vocabulariesValeria Pesce
This document discusses metadata needed to describe datasets for applications to find and understand them when stored in data catalogs or repositories. It examines existing dataset description vocabularies like DCAT and their limitations in fully capturing necessary metadata.
Key points made:
- Machine-readable metadata is important for datasets to be discoverable and usable by applications when stored across repositories.
- Metadata should describe the dataset, distributions, dimensions, semantics, protocols/APIs, subsets etc.
- Vocabularies like DCAT provide some metadata but don't fully cover dimensions, semantics, protocols/APIs or subsets.
- No single vocabulary or data catalog solution currently provides all necessary metadata for full semantic interoperability.
Spark is an open source cluster computing framework for large-scale data processing. It provides high-level APIs and runs on Hadoop clusters. Spark components include Spark Core for execution, Spark SQL for SQL queries, Spark Streaming for real-time data, and MLlib for machine learning. The core abstraction in Spark is the resilient distributed dataset (RDD), which allows data to be partitioned across nodes for parallel processing. A word count example demonstrates how to use transformations like flatMap and reduceByKey to count word frequencies from an input file in Spark.
ORC files were originally introduced in Hive, but have now migrated to an independent Apache project. This has sped up the development of ORC and simplified integrating ORC into other projects, such as Hadoop, Spark, Presto, and Nifi. There are also many new tools that are built on top of ORC, such as Hive’s ACID transactions and LLAP, which provides incredibly fast reads for your hot data. LLAP also provides strong security guarantees that allow each user to only see the rows and columns that they have permission for.
This talk will discuss the details of the ORC and Parquet formats and what the relevant tradeoffs are. In particular, it will discuss how to format your data and the options to use to maximize your read performance. In particular, we’ll discuss when and how to use ORC’s schema evolution, bloom filters, and predicate push down. It will also show you how to use the tools to translate ORC files into human-readable formats, such as JSON, and display the rich metadata from the file including the type in the file and min, max, and count for each column.
This repository was created as a final project of the Big Data subject at the University of Cuenca. The objective was to demonstrate the knowledge acquired throughout the semester with the development of an application that queries about the data of historical flights of United States airlines. This project was designed to work as a front-end on a lambda architecture implemented with Hadoop-Spark on the backend.
Check the live demo here: https://sparkend-hosting.web.app/
Source code here: https://github.com/TheWorstOne/Sparkend
Data Warehouse, Data Warehouse Architecture, Data Warehouse Concept, Data Warehouse Modeling, OLAP, OLAP Operations, Data Cube, Data Processing, Data Cleaning, Data Reduction, Data Integration, Data Transformation
This document provides an overview of data mining and data warehousing. It discusses the history and evolution of databases from the 1960s to today. Data mining is defined as using automated tools to extract hidden patterns from large databases to address the problem of data explosion. Descriptive and predictive models are used in data mining. Data warehousing involves integrating data from multiple sources into a centralized database to support analysis and decision making.
This document provides an overview of Hadoop architecture. It discusses how Hadoop uses MapReduce and HDFS to process and store large datasets reliably across commodity hardware. MapReduce allows distributed processing of data through mapping and reducing functions. HDFS provides a distributed file system that stores data reliably in blocks across nodes. The document outlines components like the NameNode, DataNodes and how Hadoop handles failures transparently at scale.
Performance Optimizations in Apache ImpalaCloudera, Inc.
Apache Impala is a modern, open-source MPP SQL engine architected from the ground up for the Hadoop data processing environment. Impala provides low latency and high concurrency for BI/analytic read-mostly queries on Hadoop, not delivered by batch frameworks such as Hive or SPARK. Impala is written from the ground up in C++ and Java. It maintains Hadoop’s flexibility by utilizing standard components (HDFS, HBase, Metastore, Sentry) and is able to read the majority of the widely-used file formats (e.g. Parquet, Avro, RCFile).
To reduce latency, such as that incurred from utilizing MapReduce or by reading data remotely, Impala implements a distributed architecture based on daemon processes that are responsible for all aspects of query execution and that run on the same machines as the rest of the Hadoop infrastructure. Impala employs runtime code generation using LLVM in order to improve execution times and uses static and dynamic partition pruning to significantly reduce the amount of data accessed. The result is performance that is on par or exceeds that of commercial MPP analytic DBMSs, depending on the particular workload. Although initially designed for running on-premises against HDFS-stored data, Impala can also run on public clouds and access data stored in various storage engines such as object stores (e.g. AWS S3), Apache Kudu and HBase. In this talk, we present Impala's architecture in detail and discuss the integration with different storage engines and the cloud.
Big Data Tutorial | What Is Big Data | Big Data Hadoop Tutorial For Beginners...Simplilearn
This presentation about Big Data will help you understand how Big Data evolved over the years, what is Big Data, applications of Big Data, a case study on Big Data, 3 important challenges of Big Data and how Hadoop solved those challenges. The case study talks about Google File System (GFS), where you’ll learn how Google solved its problem of storing increasing user data in early 2000. We’ll also look at the history of Hadoop, its ecosystem and a brief introduction to HDFS which is a distributed file system designed to store large volumes of data and MapReduce which allows parallel processing of data. In the end, we’ll run through some basic HDFS commands and see how to perform wordcount using MapReduce. Now, let us get started and understand Big Data in detail.
Below topics are explained in this Big Data presentation for beginners:
1. Evolution of Big Data
2. Why Big Data?
3. What is Big Data?
4. Challenges of Big Data
5. Hadoop as a solution
6. MapReduce algorithm
7. Demo on HDFS and MapReduce
What is this Big Data Hadoop training course about?
The Big Data Hadoop and Spark developer course have been designed to impart in-depth knowledge of Big Data processing using Hadoop and Spark. The course is packed with real-life projects and case studies to be executed in the CloudLab.
What are the course objectives?
This course will enable you to:
1. Understand the different components of the Hadoop ecosystem such as Hadoop 2.7, Yarn, MapReduce, Pig, Hive, Impala, HBase, Sqoop, Flume, and Apache Spark
2. Understand Hadoop Distributed File System (HDFS) and YARN as well as their architecture, and learn how to work with them for storage and resource management
3. Understand MapReduce and its characteristics, and assimilate some advanced MapReduce concepts
4. Get an overview of Sqoop and Flume and describe how to ingest data using them
5. Create database and tables in Hive and Impala, understand HBase, and use Hive and Impala for partitioning
6. Understand different types of file formats, Avro Schema, using Arvo with Hive, and Sqoop and Schema evolution
7. Understand Flume, Flume architecture, sources, flume sinks, channels, and flume configurations
8. Understand HBase, its architecture, data storage, and working with HBase. You will also understand the difference between HBase and RDBMS
9. Gain a working knowledge of Pig and its components
10. Do functional programming in Spark
11. Understand resilient distribution datasets (RDD) in detail
12. Implement and build Spark applications
13. Gain an in-depth understanding of parallel processing in Spark and Spark RDD optimization techniques
14. Understand the common use-cases of Spark and the various interactive algorithms
15. Learn Spark SQL, creating, transforming, and querying Data frames
Learn more at https://www.simplilearn.com/big-data-and-analytics/big-data-and-hadoop-training
Big Data and Hadoop training course is designed to provide knowledge and skills to become a successful Hadoop Developer. In-depth knowledge of concepts such as Hadoop Distributed File System, Setting up the Hadoop Cluster, Map-Reduce,PIG, HIVE, HBase, Zookeeper, SQOOP etc. will be covered in the course.
Learn about Cloud and Scalability in SAP Hybris Commerce Technology StrategySAP Customer Experience
Our commerce platform tech strategy is evolving. Discover how new technologies can help you out-innovate your competition with faster delivery of new features and more flexible support across cloud and on-premise commerce platforms. Stability and scalability are critical to your business, and the SAP Hybris Commerce solution is evolving to help you to scale with demand and deliver increased reliability and uptime.
For more, please visit SAP Hybris at: https://hybris.com/en/products/commerce
Este documento presenta varias tecnologías relacionadas con Hadoop como Pig, Hive, Apache Oozie e HBase. Brevemente describe cada una de estas tecnologías, incluyendo que Pig es un lenguaje de alto nivel para procesar grandes conjuntos de datos usando MapReduce, que Hive es una infraestructura de almacenamiento de datos que permite consultas SQL sobre Hadoop, y que Oozie y HBase son herramientas para programar flujos de trabajo y bases de datos NoSQL respectivamente.
Monta una Infraestructura Big Data para tu Empresa - Sesión IUrko Zurutuza
Este documento presenta un taller de 3 días sobre cómo implementar una infraestructura Big Data para una empresa. El primer día se introduce el concepto de Big Data. El segundo día se instala un cluster Cloudera. El tercer día se realizan ejercicios prácticos sobre el cluster Cloudera. El documento también cubre temas como el ecosistema Big Data, herramientas como Hadoop, HDFS, HBase y sistemas de procesamiento como MapReduce, Pig y Storm.
What Is Hadoop | Hadoop Tutorial For Beginners | EdurekaEdureka!
( Hadoop Training: https://www.edureka.co/hadoop )
This Edureka "What is Hadoop" tutorial ( Hadoop Blog series: https://goo.gl/LFesy8 ) helps you to understand how Big Data emerged as a problem and how Hadoop solved that problem. This tutorial will be discussing about Hadoop Architecture, HDFS & it's architecture, YARN and MapReduce in detail. Below are the topics covered in this tutorial:
1) 5 V’s of Big Data
2) Problems with Big Data
3) Hadoop-as-a solution
4) What is Hadoop?
5) HDFS
6) YARN
7) MapReduce
8) Hadoop Ecosystem
Introduction To Hadoop | What Is Hadoop And Big Data | Hadoop Tutorial For Be...Simplilearn
This presentation about Hadoop will help you learn the basics of Hadoop and its components. First, you will see what is Big Data and the significant challenges in it. Then, you will understand how Hadoop solved those challenges. You will have a glance at the History of Hadoop, what is Hadoop, the different companies using Hadoop, the applications of Hadoop in different companies, etc. Finally, you will learn the three essential components of Hadoop – HDFS, MapReduce, and YARN, along with their architecture. Now, let us get started with Introduction to Hadoop.
Below topics are explained in this Hadoop presentation:
1. Big Data and its challenges
2. Hadoop as a solution
3. History of Hadoop
4. What is Hadoop
5. Applications of Hadoop
6. Components of Hadoop
7. Hadoop Distributed File System
8. Hadoop MapReduce
9. Hadoop YARN
What is this Big Data Hadoop training course about?
The Big Data Hadoop and Spark developer course have been designed to impart an in-depth knowledge of Big Data processing using Hadoop and Spark. The course is packed with real-life projects and case studies to be executed in the CloudLab.
What are the course objectives?
This course will enable you to:
1. Understand the different components of Hadoop ecosystem such as Hadoop 2.7, Yarn, MapReduce, Pig, Hive, Impala, HBase, Sqoop, Flume, and Apache Spark
2. Understand Hadoop Distributed File System (HDFS) and YARN as well as their architecture, and learn how to work with them for storage and resource management
3. Understand MapReduce and its characteristics, and assimilate some advanced MapReduce concepts
4. Get an overview of Sqoop and Flume and describe how to ingest data using them
5. Create database and tables in Hive and Impala, understand HBase, and use Hive and Impala for partitioning
6. Understand different types of file formats, Avro Schema, using Arvo with Hive, and Sqoop and Schema evolution
7. Understand Flume, Flume architecture, sources, flume sinks, channels, and flume configurations
8. Understand HBase, its architecture, data storage, and working with HBase. You will also understand the difference between HBase and RDBMS
9. Gain a working knowledge of Pig and its components
10. Do functional programming in Spark
11. Understand resilient distribution datasets (RDD) in detail
12. Implement and build Spark applications
13. Gain an in-depth understanding of parallel processing in Spark and Spark RDD optimization techniques
14. Understand the common use-cases of Spark and the various interactive algorithms
15. Learn Spark SQL, creating, transforming, and querying Data frames
Learn more at https://www.simplilearn.com/big-data-and-analytics/introduction-to-big-data-and-hadoop-certification-training.
Apache Sqoop efficiently transfers bulk data between Apache Hadoop and structured datastores such as relational databases. Sqoop helps offload certain tasks (such as ETL processing) from the EDW to Hadoop for efficient execution at a much lower cost. Sqoop can also be used to extract data from Hadoop and export it into external structured datastores. Sqoop works with relational databases such as Teradata, Netezza, Oracle, MySQL, Postgres, and HSQLDB
Ranger’s pluggable architecture allows resource access policy administration and enforcement for standard and custom services from a “single pane of glass”. Apache Ranger has a rich Authorization Model, which provides the mechanism to author Policy in a Ranger Admin Server and serves as policy decision and audit point in authorizing user’s resource access within various components of Hadoop ecosystem.
This session will provide a deep dive into Ranger framework and a cook-book for extending Ranger to do authorization / auditing on resource access to external applications, including technical details of Rest APIs, Ranger policy engine and enriching authorization requests, with a demo of a sample application.We will then demonstrate a real-world example of how Ranger has simplified security enforcement for Hadoop-native MPP SQL engine like Apache HAWQ (incubating),which previously used its built-in Postgres-like authorization mechanisms. The integration design includes a Ranger Plugin Service that allows transparent authorization API calls between C-based Apache HAWQ and Java-based Apache Ranger.
Hadoop Training | Hadoop Training For Beginners | Hadoop Architecture | Hadoo...Simplilearn
The document provides information about Hadoop training. It discusses the need for Hadoop in today's data-heavy world. It then describes what Hadoop is, its ecosystem including HDFS for storage and MapReduce for processing. It also discusses YARN and provides a bank use case. It further explains the architecture and working of HDFS and MapReduce in processing large datasets in parallel across clusters.
Dataset description: DCAT and other vocabulariesValeria Pesce
This document discusses metadata needed to describe datasets for applications to find and understand them when stored in data catalogs or repositories. It examines existing dataset description vocabularies like DCAT and their limitations in fully capturing necessary metadata.
Key points made:
- Machine-readable metadata is important for datasets to be discoverable and usable by applications when stored across repositories.
- Metadata should describe the dataset, distributions, dimensions, semantics, protocols/APIs, subsets etc.
- Vocabularies like DCAT provide some metadata but don't fully cover dimensions, semantics, protocols/APIs or subsets.
- No single vocabulary or data catalog solution currently provides all necessary metadata for full semantic interoperability.
Spark is an open source cluster computing framework for large-scale data processing. It provides high-level APIs and runs on Hadoop clusters. Spark components include Spark Core for execution, Spark SQL for SQL queries, Spark Streaming for real-time data, and MLlib for machine learning. The core abstraction in Spark is the resilient distributed dataset (RDD), which allows data to be partitioned across nodes for parallel processing. A word count example demonstrates how to use transformations like flatMap and reduceByKey to count word frequencies from an input file in Spark.
ORC files were originally introduced in Hive, but have now migrated to an independent Apache project. This has sped up the development of ORC and simplified integrating ORC into other projects, such as Hadoop, Spark, Presto, and Nifi. There are also many new tools that are built on top of ORC, such as Hive’s ACID transactions and LLAP, which provides incredibly fast reads for your hot data. LLAP also provides strong security guarantees that allow each user to only see the rows and columns that they have permission for.
This talk will discuss the details of the ORC and Parquet formats and what the relevant tradeoffs are. In particular, it will discuss how to format your data and the options to use to maximize your read performance. In particular, we’ll discuss when and how to use ORC’s schema evolution, bloom filters, and predicate push down. It will also show you how to use the tools to translate ORC files into human-readable formats, such as JSON, and display the rich metadata from the file including the type in the file and min, max, and count for each column.
This repository was created as a final project of the Big Data subject at the University of Cuenca. The objective was to demonstrate the knowledge acquired throughout the semester with the development of an application that queries about the data of historical flights of United States airlines. This project was designed to work as a front-end on a lambda architecture implemented with Hadoop-Spark on the backend.
Check the live demo here: https://sparkend-hosting.web.app/
Source code here: https://github.com/TheWorstOne/Sparkend
Data Warehouse, Data Warehouse Architecture, Data Warehouse Concept, Data Warehouse Modeling, OLAP, OLAP Operations, Data Cube, Data Processing, Data Cleaning, Data Reduction, Data Integration, Data Transformation
This document provides an overview of data mining and data warehousing. It discusses the history and evolution of databases from the 1960s to today. Data mining is defined as using automated tools to extract hidden patterns from large databases to address the problem of data explosion. Descriptive and predictive models are used in data mining. Data warehousing involves integrating data from multiple sources into a centralized database to support analysis and decision making.
This document provides an overview of Hadoop architecture. It discusses how Hadoop uses MapReduce and HDFS to process and store large datasets reliably across commodity hardware. MapReduce allows distributed processing of data through mapping and reducing functions. HDFS provides a distributed file system that stores data reliably in blocks across nodes. The document outlines components like the NameNode, DataNodes and how Hadoop handles failures transparently at scale.
Performance Optimizations in Apache ImpalaCloudera, Inc.
Apache Impala is a modern, open-source MPP SQL engine architected from the ground up for the Hadoop data processing environment. Impala provides low latency and high concurrency for BI/analytic read-mostly queries on Hadoop, not delivered by batch frameworks such as Hive or SPARK. Impala is written from the ground up in C++ and Java. It maintains Hadoop’s flexibility by utilizing standard components (HDFS, HBase, Metastore, Sentry) and is able to read the majority of the widely-used file formats (e.g. Parquet, Avro, RCFile).
To reduce latency, such as that incurred from utilizing MapReduce or by reading data remotely, Impala implements a distributed architecture based on daemon processes that are responsible for all aspects of query execution and that run on the same machines as the rest of the Hadoop infrastructure. Impala employs runtime code generation using LLVM in order to improve execution times and uses static and dynamic partition pruning to significantly reduce the amount of data accessed. The result is performance that is on par or exceeds that of commercial MPP analytic DBMSs, depending on the particular workload. Although initially designed for running on-premises against HDFS-stored data, Impala can also run on public clouds and access data stored in various storage engines such as object stores (e.g. AWS S3), Apache Kudu and HBase. In this talk, we present Impala's architecture in detail and discuss the integration with different storage engines and the cloud.
Big Data Tutorial | What Is Big Data | Big Data Hadoop Tutorial For Beginners...Simplilearn
This presentation about Big Data will help you understand how Big Data evolved over the years, what is Big Data, applications of Big Data, a case study on Big Data, 3 important challenges of Big Data and how Hadoop solved those challenges. The case study talks about Google File System (GFS), where you’ll learn how Google solved its problem of storing increasing user data in early 2000. We’ll also look at the history of Hadoop, its ecosystem and a brief introduction to HDFS which is a distributed file system designed to store large volumes of data and MapReduce which allows parallel processing of data. In the end, we’ll run through some basic HDFS commands and see how to perform wordcount using MapReduce. Now, let us get started and understand Big Data in detail.
Below topics are explained in this Big Data presentation for beginners:
1. Evolution of Big Data
2. Why Big Data?
3. What is Big Data?
4. Challenges of Big Data
5. Hadoop as a solution
6. MapReduce algorithm
7. Demo on HDFS and MapReduce
What is this Big Data Hadoop training course about?
The Big Data Hadoop and Spark developer course have been designed to impart in-depth knowledge of Big Data processing using Hadoop and Spark. The course is packed with real-life projects and case studies to be executed in the CloudLab.
What are the course objectives?
This course will enable you to:
1. Understand the different components of the Hadoop ecosystem such as Hadoop 2.7, Yarn, MapReduce, Pig, Hive, Impala, HBase, Sqoop, Flume, and Apache Spark
2. Understand Hadoop Distributed File System (HDFS) and YARN as well as their architecture, and learn how to work with them for storage and resource management
3. Understand MapReduce and its characteristics, and assimilate some advanced MapReduce concepts
4. Get an overview of Sqoop and Flume and describe how to ingest data using them
5. Create database and tables in Hive and Impala, understand HBase, and use Hive and Impala for partitioning
6. Understand different types of file formats, Avro Schema, using Arvo with Hive, and Sqoop and Schema evolution
7. Understand Flume, Flume architecture, sources, flume sinks, channels, and flume configurations
8. Understand HBase, its architecture, data storage, and working with HBase. You will also understand the difference between HBase and RDBMS
9. Gain a working knowledge of Pig and its components
10. Do functional programming in Spark
11. Understand resilient distribution datasets (RDD) in detail
12. Implement and build Spark applications
13. Gain an in-depth understanding of parallel processing in Spark and Spark RDD optimization techniques
14. Understand the common use-cases of Spark and the various interactive algorithms
15. Learn Spark SQL, creating, transforming, and querying Data frames
Learn more at https://www.simplilearn.com/big-data-and-analytics/big-data-and-hadoop-training
Big Data and Hadoop training course is designed to provide knowledge and skills to become a successful Hadoop Developer. In-depth knowledge of concepts such as Hadoop Distributed File System, Setting up the Hadoop Cluster, Map-Reduce,PIG, HIVE, HBase, Zookeeper, SQOOP etc. will be covered in the course.
Learn about Cloud and Scalability in SAP Hybris Commerce Technology StrategySAP Customer Experience
Our commerce platform tech strategy is evolving. Discover how new technologies can help you out-innovate your competition with faster delivery of new features and more flexible support across cloud and on-premise commerce platforms. Stability and scalability are critical to your business, and the SAP Hybris Commerce solution is evolving to help you to scale with demand and deliver increased reliability and uptime.
For more, please visit SAP Hybris at: https://hybris.com/en/products/commerce
Este documento presenta varias tecnologías relacionadas con Hadoop como Pig, Hive, Apache Oozie e HBase. Brevemente describe cada una de estas tecnologías, incluyendo que Pig es un lenguaje de alto nivel para procesar grandes conjuntos de datos usando MapReduce, que Hive es una infraestructura de almacenamiento de datos que permite consultas SQL sobre Hadoop, y que Oozie y HBase son herramientas para programar flujos de trabajo y bases de datos NoSQL respectivamente.
Monta una Infraestructura Big Data para tu Empresa - Sesión IUrko Zurutuza
Este documento presenta un taller de 3 días sobre cómo implementar una infraestructura Big Data para una empresa. El primer día se introduce el concepto de Big Data. El segundo día se instala un cluster Cloudera. El tercer día se realizan ejercicios prácticos sobre el cluster Cloudera. El documento también cubre temas como el ecosistema Big Data, herramientas como Hadoop, HDFS, HBase y sistemas de procesamiento como MapReduce, Pig y Storm.
Este documento presenta una introducción a los casos de uso de Big Data. Cubre temas como el lago de datos, el cambio en el paradigma analítico, las cinco categorías principales de casos de uso y ejemplos reales. También discute los desafíos de volumen, velocidad, variedad y veracidad de los datos en el contexto de Big Data.
This document discusses HDFS high availability using Journal Nodes. It describes how Journal Nodes provide a write ahead log to synchronize data between an active and standby NameNode. The architecture involves Journal Nodes durably logging metadata operations to tolerate NameNode failures. An automatic failover process uses ZooKeeper for elections to transition the standby NameNode to an active state when the active NameNode fails.
The document discusses HDFS high availability with NameNode HA, which allows two NameNodes - an active and standby - in the same cluster. The active NameNode handles client operations while the standby maintains enough state to provide a fast failover. The NameNodes write edit logs to journal nodes using a Paxos-like protocol to guarantee correctness. A ZooKeeper-based election process automatically fails over the active NameNode role in case of failure.
Hadoop se ha consolidado como una de las herramientas principales para procesamiento de altos volúmenes de información (Big Data). El rol de Hadoop en las empresas continua evolucionando optimizando la arquitectura de almacenamiento y procesamiento de datos, incrementando el performance y disminuyendo los costos.
El participante aprenderá acerca del ecosistema de Hadoop, así como las funcionalidades básicas de HDFS y MapReduce. Además de, podremos explorar como usar Hive y Pig para el desarrollo rápido de procesamiento.
Spark es un framework para computación distribuida que introduce el concepto de Resilient Distributed Datasets (RDDs). Los RDDs permiten compartir datos entre operaciones de forma eficiente mediante transformaciones deterministas sobre datos almacenados de forma estable o sobre otros RDDs. Spark evalúa los RDDs de forma perezosa y proporciona mecanismos para recuperar los datos mediante el linaje de las transformaciones aplicadas en caso de fallos. Las evaluaciones muestran mejoras de velocidad de hasta 20 veces frente a Hadoop en aplicaciones iterativas de machine learning.
Strata + Hadoop World 2012: HDFS: Now and FutureCloudera, Inc.
Hadoop 1.0 is a significant milestone in being the most stable and robust Hadoop release tested in production against a variety of applications. It offers improved performance, support for HBase, disk-fail-in-place, Webhdfs, etc over previous releases. The next major release, Hadoop 2.0 offers several significant HDFS improvements including new append-pipeline, federation, wire compatibility, NameNode HA, further performance improvements, etc. We describe how to take advantages of the new features and their benefits. We also discuss some of the misconceptions and myths about HDFS.
Mallorca MUG: MapReduce y Aggregation FrameworkEmilio Torrens
Este documento presenta MapReduce y el Aggregation Framework de MongoDB. Explica cómo funcionan MapReduce y el Aggregation Framework, incluyendo ejemplos de código. También describe cómo se pueden usar MapReduce y el Aggregation Framework para analizar registros web a gran escala, reduciendo los datos cada hora y almacenándolos en colecciones particionadas por mes para consultas posteriores.
This document provides an overview and introduction to MapReduce and functional programming concepts. It discusses:
- The map and fold/reduce functions and how they can be used to parallelize computations.
- How MapReduce borrows from functional programming by having users implement map and reduce functions to process large datasets in a parallel and distributed manner.
- Key aspects of MapReduce including automatic parallelization, fault tolerance, and optimizations like locality-aware task assignment and redundant execution of tasks.
Este documento trata sobre MapReduce en Hadoop. Explica cómo se implementa MapReduce en Java, incluyendo las clases necesarias para los mappers, reducers y el driver. También cubre temas como la serialización, los formatos de entrada y salida, y cómo compilar y ejecutar trabajos MapReduce.
Este documento describe los métodos geofísicos de exploración indirecta del subsuelo. Explica que estos métodos no requieren muestras físicas, sino que obtienen resultados aproximados sobre los estratos y materiales del subsuelo. Describe varios métodos geofísicos como la sísmica, métodos eléctricos, electromagnéticos, gravimetría y magnetometría. Explica cómo cada método mide diferentes propiedades físicas del subsuelo y cómo se han vuelto más aplicables en ingeniería civil gracias a
Este documento presenta una introducción a Hadoop y sus componentes clave. Explica brevemente conceptos de Big Data y NoSQL, y describe los módulos principales de Hadoop como HDFS, MapReduce, Pig, Hive y HBase, destacando sus funcionalidades para el almacenamiento y procesamiento de grandes volúmenes de datos de forma distribuida.
Este documento habla sobre Big Data y Hadoop. Explica las características de Big Data como volumenes grandes de datos, variedad de fuentes y velocidad de procesamiento. Luego introduce Hadoop como un framework para almacenar y procesar grandes cantidades de datos de forma distribuida. Finalmente, discute la falta de personal especializado en Big Data y ofrece algunas recomendaciones como pensar y tomar decisiones con rapidez para aprovechar las oportunidades de Big Data.
Este documento presenta una introducción a Apache Hadoop, incluyendo su historia, características principales como HDFS y MapReduce, y cómo aborda los desafíos de Big Data mediante un enfoque de computación distribuida. También compara Hadoop con bases de datos tradicionales, destacando que Hadoop puede manejar datos a escala de petabytes de forma dinámica y en lotes.
This document provides an overview of several Google technologies that help enable its fast and reliable services, including Google File System (GFS), Chubby lock service, MapReduce, and BigTable. BigTable is described as Google's proprietary, non-relational database that uses compression and a distributed, tablet-based architecture to provide high performance at scale across commodity hardware. It stores data as multidimensional sparse maps divided into tablets that are distributed, replicated, and load balanced for availability and scalability.
Hadoop: MapReduce para procesar grandes cantidades de datosRaul Ochoa
Este documento presenta una introducción a Hadoop y MapReduce. Explica que Hadoop es un framework de código abierto para procesar grandes cantidades de datos de forma distribuida a través de clusters de computadoras. Describe los componentes clave de Hadoop como MapReduce, HDFS y subproyectos como Pig, Hive y HBase. Finalmente, incluye una sección de demostración para aplicar los conceptos aprendidos.
Herramientas y ejemplos de trabajos MapReduce con Apache HadoopDavid Albela Pérez
Este documento describe la instalación y configuración de Hadoop en modo pseudo-distribuido en Debian/Linux para ejecutar aplicaciones MapReduce. Explica los requisitos previos como instalar Java y el repositorio de Cloudera, y luego detalla los pasos para instalar Hadoop, configurar los archivos, formatear el NameNode e iniciar los servicios HDFS y MapReduce. También incluye ejemplos del uso de herramientas como Sqoop, Hive e Impala con Hadoop.
Conociendo los servicios adicionales en big dataSpanishPASSVC
Todos han empezado a usar y a conocer Hadoop y HDInsight, en parte los lenguajes usados para su consumo, pero poco se hablado de los servicios complementarios que pueden enriquecer la experiencia BigData, conozca estos servicios y su aplicación.
El documento proporciona una introducción general a Hadoop, incluyendo su historia, arquitectura principal (HDFS y MapReduce), ejemplos de aplicaciones como el análisis de redes sociales y subastas publicitarias en tiempo real, y su integración con plataformas en la nube como AWS y frameworks como Spring. También menciona otros proyectos relacionados como Hive, Pig y HBase.
El documento describe la evolución de herramientas para el análisis de grandes volúmenes de datos, desde Hadoop hasta Spark. Explica que Hadoop fue una de las primeras plataformas pero que tiene limitaciones en el rendimiento y la latencia. Posteriormente surgió Spark, que mejora la velocidad al cachear datos en memoria y soporta análisis en tiempo real y aprendizaje automático de manera más eficiente. Spark se ha convertido en una alternativa interesante a Hadoop para ciertas aplicaciones.
Tutorial Introductorio a Big Data, Hadoop y sus tecnologías asociadas (Hive, Pig, HBase, HDFS), etc. Presentado en el XVIII Congreso Iberoamericano de Ingenieria del Software (CIBSE). Peru. Lima. Abril del 2015.
Big Data, Almacenes de Datos Empresariales (EDW) y Windows Azure (SQL Databas...Joseph Lopez
Breve sinopsis sobre como comprender todo el escenario en la manipulación de datos procedentes del Big Data, de los Almacenes de Datos Empresariales con motor de datos SQL Azure bajo Plataforma BI
El documento presenta una introducción a Hadoop y técnicas para el análisis de grandes volúmenes de datos. Explica brevemente qué es Hadoop, sus componentes principales como HDFS y MapReduce. Luego describe herramientas como Flume y Sqoop para capturar datos de diferentes fuentes e importarlos a Hadoop. Finalmente, menciona algunas tecnologías como Hive y workflows para procesar y analizar los datos almacenados en Hadoop.
Este documento describe las características de los grandes datos y Apache Hadoop. Explica que Hadoop es una plataforma de código abierto para almacenar y analizar grandes conjuntos de datos de forma distribuida a través de clústeres de hardware estándar. Sus componentes principales son HDFS para almacenamiento distribuido de datos y MapReduce para procesamiento paralelo. También describe otros componentes como Pig, Hive, Sqoop y cómo Microsoft ofrece Hadoop a través de HDInsight en Windows Server y Azure.
Este documento describe cómo crear un clúster Hadoop con Cloudera. Explica la arquitectura de Hadoop, incluyendo los componentes HDFS y MapReduce. También cubre los requisitos, la instalación, y características como la alta disponibilidad. Finalmente, proporciona contexto histórico sobre el desarrollo de Hadoop y empresas como Cloudera y HortonWorks.
SolidQ Business Analytics Day | Como de grandes son tus datosSolidQ
Presentación de Javier Torrenteras en el SolidQ Business Analytics Day en Valencia (España)
- ¿Por qué Big data?
- Entonces...Haddoop ¿Qué es?
- ventajas y Componentes de Hadoop
-HD Insight, Windows Azure HDInsight
-Grandes DW
www.bisql.com
El documento presenta una introducción a Hadoop, incluyendo su instalación, arquitectura, HDFS y MapReduce. Explica que Hadoop es una implementación de código abierto de MapReduce para procesar grandes cantidades de datos en clusters. Describe las características clave de Hadoop como su bajo coste, escalabilidad y tolerancia a fallos.
Este documento trata sobre Big Data y las tecnologías para manejar grandes cantidades de datos. Explica que un vuelo entre Londres y Nueva York genera 640 terabytes de datos, y compara esto con la capacidad de almacenamiento de memorias USB. Luego describe herramientas como Hadoop, Spark, Jupiter y GraphX que permiten procesar y analizar grandes volúmenes de datos de manera paralela y en la memoria de manera más rápida que MapReduce. Finalmente, incluye los contactos de quien lo presenta.
Este documento proporciona una introducción a Hadoop, incluyendo su arquitectura, componentes principales como HDFS, MapReduce, YARN y otros proyectos como Hive, Pig y HBase. Explica brevemente el origen de Hadoop, cómo funciona y algunos de los usos más comunes por empresas como Yahoo, Facebook y Twitter.
El documento describe Big Data y las herramientas para su análisis. Big Data se refiere a grandes conjuntos de datos que crecen rápidamente y son difíciles de procesar con herramientas de bases de datos tradicionales. Hadoop es una plataforma popular de código abierto para almacenar y procesar grandes cantidades de datos de forma distribuida. El documento también discute otras herramientas como Pig, Hive, HDFS e Impala que se usan con Hadoop para extraer información de los datos.
Este documento describe la arquitectura de Hadoop, incluyendo HDFS para almacenamiento, YARN para gestión de recursos y MapReduce para procesamiento de datos. Explica cómo funcionan estas tecnologías de forma distribuida a gran escala y también introduce herramientas como Pig y Hive que permiten analizar datos a un nivel más alto.
Big Data es un concepto que hace referencia a un gran conjunto datos complejos, de formato heterogéneos y que donde las aplicaciones y mecanismos tradicionales de procesamiento no resultan ser los más adecuados para procesarlos. Los desafíos dentro del Big Data incluyen el análisis, la captura, la transformación de datos, búsqueda, intercambio, almacenamiento, transferencia, visualización y privacidad de la información.
Inmerso en este nuevo ecosistema de datos de gran tamaño y sin formato, se encuentra Apache Hadoop, un framework de Software desarrollado en un principio por Yahoo, y que ha sido y está siendo el standard de la industria para el procesamiento masivo de datos dentro de un cluster de computadores.
En el presente meetup realizamos una breve descripción de la arquitectura de este framwork y cómo Hadoop puede integrarse con otras diferentes soluciones empresariales. A su vez revisamos como grandes empresas tecnológicas han visto y apostado por Apache Hadoop como una herramienta para construcción de soluciones y procesamiento de datos en entornos de Big Data.
Big Data se refiere a enormes cantidades de datos estructurados, no estructurados y semiestructurados que sería muy costoso procesar con bases de datos tradicionales. El documento explica que Big Data proviene de fuentes como redes sociales, dispositivos conectados, registros transaccionales y datos biométricos y humanos. También describe componentes clave de plataformas Big Data como Hadoop, HDFS, MapReduce, y ejemplos de cómo investigadores usan Big Data para proyectos científicos.
Hadoop es un marco de software de código abierto utilizado para desarrollar aplicaciones de procesamiento de datos que se ejecutan en un entorno informático distribuido. Proporciona almacenamiento masivo para cualquier tipo de datos, una gran potencia de procesamiento y tiene la capacidad teórica de procesar tareas concurrentes virtualmente ilimitada. Los datos residen en HDFS, un sistema de archivos distribuido que almacena archivos en un clúster de máquinas, lo que permite almacenar enormes cantidades de datos. Hadoop es una ar
Este documento habla sobre Big Data y herramientas para procesar grandes cantidades de datos. Explica que Spark es una tecnología 100 veces más rápida que Hadoop MapReduce para procesar datos en memoria y soporta tolerancia a fallos. También describe a Jupyter como una herramienta popular para científicos de datos que puede usar diferentes lenguajes de programación e integrarse con Spark.
El uso de las TIC en la vida cotidiana.pptxjgvanessa23
En esta presentación, he compartido información sobre las Tecnologías de la Información y la Comunicación (TIC) y su aplicación en diversos ámbitos de la vida cotidiana, como el hogar, la educación y el trabajo.
He explicado qué son las TIC, las diferentes categorías y sus respectivos ejemplos, así como los beneficios y aplicaciones en cada uno de estos ámbitos.
Espero que esta información sea útil para quienes la lean y les ayude a comprender mejor las TIC y su impacto en nuestra vida cotidiana.
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)codesiret
Los protocolos son conjuntos de
normas para formatos de mensaje y
procedimientos que permiten a las
máquinas y los programas de aplicación
intercambiar información.
para programadores y desarrolladores de inteligencia artificial y machine learning, como se automatiza una cadena de valor o cadena de valor gracias a la teoría por Manuel Diaz @manuelmakemoney
La inteligencia artificial sigue evolucionando rápidamente, prometiendo transformar múltiples aspectos de la sociedad mientras plantea importantes cuestiones que requieren una cuidadosa consideración y regulación.
1. Apache Hadoop
Tomás Fernández Pena
VII Seminario de Invierno, Red CAPAP-H
29 de enero de 2016
Material bajo licencia Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
citius.usc.es
2. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Índice
1 Big Data
2 Apache Hadoop
3 HDFS
4 YARN
5 MapReduce
6 Programación MapReduce en Hadoop
Programación Java
Alternativas a Java
Apache Hadoop, VII Seminario de Invierno
3. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Índice
1 Big Data
2 Apache Hadoop
3 HDFS
4 YARN
5 MapReduce
6 Programación MapReduce en Hadoop
Programación Java
Alternativas a Java
Apache Hadoop, VII Seminario de Invierno
4. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
¿Qué es Big Data?
Wikipedia
In information technology, big data is a collection of data sets so large
and complex that it becomes difficult to process using on-hand database
management tools or traditional data processing applications. The
challenges include capture, curation, storage, search, sharing, analysis,
and visualization.
Apache Hadoop, VII Seminario de Invierno 1/125
5. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Características del Big Data
Las 5 Vs del BigData
Volume enorme cantidad de datos generados
Velocity rapidez con la que se generan y mueven esos datos
Variety datos de múltiples tipos, estructurados y
no-estructurados: texto, datos de sensores, audio, vídeo,
click streams, ficheros de log, etc.
Veracity datos correctos o incorrectos
Value capacidad de extraer valor de los datos
Apache Hadoop, VII Seminario de Invierno 2/125
6. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Aluvión de datos
El mundo está creando más bits que nunca: en 2013, se calcula unos 4,4
Zettabytes (4, 4 × 1021
), y se estiman unos 44 ZB en 2020
La cantidad de datos se dobla cada dos años
Apache Hadoop, VII Seminario de Invierno 3/125
7. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Fuentes de datos
Origen de los datos:
Redes sociales
Redes de sensores
Datos de GPS
Datos de genoma
Datos científicos
. . .
Apache Hadoop, VII Seminario de Invierno 4/125
8. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Retos tecnológicos (I)
Búsqueda y refinamiento (Lucene, Solr, Nutch, Elasticsearch,
OpenRefine, ScraperWiki, BloomReach)
Serialización (JSON, BSON, Apache Thrift, Apache Avro, Google
Protocol Buffers)
Sistemas de almacenamiento (HDFS, GFS, Lustre, Amazon S3)
Servidores (Amazon EC2, Google Cloud Platform, Azure, OpenShift,
Heroku, Pivotal, Ambari)
Procesamiento (Hadoop, Hive, Pig, Spark, Flink, Tez, Cascading,
Azkaban, Oozie, mrjob, Twister, Flume, Storm, Samza, Falcon,
Cloudera, MapR, Hortonworks, Platfora, Cask)
Apache Hadoop, VII Seminario de Invierno 5/125
9. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Retos tecnológicos (II)
Bases de datos (HBase, Cassandra, Accumulo, MongoDB, CouchDB,
Hypertable, Parquet, Riak, Amazon DynamoDB, Google BigTable,
Drill, Sqoop)
Análisis (R, IBM BigSheets, Greenplum, Splunk, Datameer,
WibiData)
Lenguaje natural (Natural Language Toolkit, Apache OpenNLP,
Perldoop, Boilerpipe, Open Calais)
Machine learning (aprendizaje automático) (Weka, Apache Mahout,
scikit-learn, Skytree)
Visualización (R, D3.js, Tableau, IBM Cognos Insight, Google Fusion
Tables)
Apache Hadoop, VII Seminario de Invierno 6/125
10. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
BigData Landscape
Apache Hadoop, VII Seminario de Invierno 7/125
11. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Programando para el Big Data: historia
Finales de los 90:
crecimiento explosivo de los datos
las empresas no pueden almacenarlos
Tendencia al escalado horizontal de clusters de commodity
hardware
Apache Hadoop, VII Seminario de Invierno 8/125
12. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Programando para el Big Data: historia
Circa 2002
Se busca mitigar el riesgo de pérdidas de grandes workloads
distribuidas debidas a fallos de los discos en commodity hardware
Google publica 2 papers:
Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung, “The
Google File System ”, 19th ACM Symposium on Operating Systems
Principles, Lake George, NY, October, 2003.
http://research.google.com/archive/gfs.html,
Jeffrey Dean and Sanjay Ghemawat, “MapReduce: Simplified Data
Processing on Large Clusters”, OSDI’04, San Francisco, CA,
December, 2004.
http://research.google.com/archive/mapreduce.html
Circa 2005
Doug Cutting y Mike Cafarella crean Hadoop
Apache Hadoop, VII Seminario de Invierno 9/125
13. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Procesamiento del Big Data
Necesitamos:
Escalabilidad con grandes
volúmenes de datos
1000’s de máquinas
10,000’s de discos
Equipos y redes de bajo coste
poco fiables
elevadas latencias
Facilidad de programación
Tolerancia a fallos automática
Apache Hadoop, VII Seminario de Invierno 10/125
14. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Problemas en la ejecución
Los nodos baratos fallan, sobre todo si hay muchos
Tiempo medio entre fallos para 1 nodo = 3 años
Tiempo medio entre fallos para 1000 nodos = 1 día
Solución: implementar tolerancia a fallos en el sistema
Red de bajo coste = elevada latencia
Solución: llevar la computación a los datos
- Minimizar el movimiento de los datos
Dificultad de programación
Solución: un modelo de programación paralelo intensivo en datos
- Los usuarios escriben funciones simples
- El sistema distribuye el trabajo y maneja los fallos
Apache Hadoop, VII Seminario de Invierno 11/125
15. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Índice
1 Big Data
2 Apache Hadoop
3 HDFS
4 YARN
5 MapReduce
6 Programación MapReduce en Hadoop
Programación Java
Alternativas a Java
Apache Hadoop, VII Seminario de Invierno
16. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Apache Hadoop
Framework para el almacenamiento y procesamiento distribuido
Manejo de enormes cantidades de datos en commodity clusters
Escala: petabytes de datos en miles de nodos
Apache Hadoop, VII Seminario de Invierno 12/125
17. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Ecosistema Hadoop (I)
Tecnologías relacionadas:
Pig: lenguaje data-flow de alto nivel para facilitar la programación
MapReduce
Hive: infraestructura de data-warehouse construida sobre Hadoop
Spark: motor de procesamiento de datos de carácter general
compatible con datos Hadoop
Oozie, Crunch, Cascading, Hamake: planificadores de workflows
para gestionar trabajos Hadoop
Tez: ejecución de DAGs de tareas complejos para queries
interactivas
S4, Storm: procesamiento de flujos de datos (stream processing)
Impala: queries en tiempo real para Hadoop
Twill: abstracción sobre YARN que reduce la complejidad de
desarrollar aplicaciones distribuidas
Apache Hadoop, VII Seminario de Invierno 13/125
18. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Tecnologías relacionadas (II)
HBase: base de datos distribuida no-relacional (NoSQL) que corre
sobre HDFS (inspirado en Google BigTable)
Sqoop: transferencia eficiente de datos entre Hadoop y bases de
datos relacionales
Parquet: formato de almacenamiento columnar para
almacenamiento eficiente de datos anidados
Ambari: herramienta basada en web para aprovisionar, gestionar y
monitorizar clusters Hadoop
Hue: interfaz web para simplificar el uso de Hadoop
ZooKeeper: servicio centralizado de configuración, nombrado,
sincronización distribuida y servicios de grupos para grandes
sistemas distribuidos
BigTop: empaquetamiento y tests para el ecosistema Hadoop
Apache Hadoop, VII Seminario de Invierno 14/125
19. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Tecnologías relacionadas (III)
HCatalog: interfaces para permitir el acceso al Hive metastore
desde diversas herramientas
WebHCat: API REST-like para HCatalog (antes Templeton)
Falcon: solución para el procesamiento y gestión de datos para
Hadoop (movimiento. coordinación, gestión del ciclo de vida,
descubrimiento).
Slider: aplicación para desplegar aplicaciones distribuidas
existentes en YARN (aplicaciones long-running)
Hama: framework de computación Bulk Synchronous Parallel sobre
HDFS
Flume: obtención, agregación y movimiento de grandes ficheros de
log a HDFS
NiFi: automatización del flujo de datos entre sistemas de todo tipo
Apache Hadoop, VII Seminario de Invierno 15/125
20. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Tecnologías relacionadas (IV)
Knox: REST API Gateway para interactuar con clusters Hadoop
incorporando seguridad (autenticación/autorización/auditoría)
Twister: aplicaciones MapReduce iterativas
Mahout: algoritmos escalables de machine learning y minería de
datos sobre Hadoop
Chukwa: sistema de recogida de datos para monitorizar grandes
sistemas distribuidos
Flink: procesamiento in-memory y de streams (similar a Spark)
Harp: abstracciones para datos y comunicaciones en el
procesamiento Big Data
Pydoop: Python API para Hadoop
Perldoop: Traducción de códigos MR en Perl a Java
Más ejemplos en https://hadoopecosystemtable.github.io/
Apache Hadoop, VII Seminario de Invierno 16/125
21. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Características de Hadoop
Incluye
Almacenamiento: HDFS
Gestor de recursos: YARN, (sólo MapReduce en Hadoop v1)
Modelo de programación: MapReduce
Ventajas
Bajo coste: clusters baratos o cloud
Facilidad de uso
Tolerancia a fallos
Apache Hadoop, VII Seminario de Invierno 17/125
22. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Instalación
Instalación relativamente simple: aplicación Java
Paquete fuente: hadoop.apache.org/releases.html
Sistemas preconfigurados proporcionados por empresas como
Cloudera (www.cloudera.com), MapR (www.mapr.com) o
Hortonworks (hortonworks.com), o más específicas como la
distribución de Intel o IBM InfoSphere BigInsight
Modos de funcionamiento:
Standalone: todo en un nodo, para pruebas
Pseudodistribuido: funciona como una instalación completa, pero en
un solo nodo
Totalmente distribuido
Apache Hadoop, VII Seminario de Invierno 18/125
23. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Arquitectura Hadoop v1
Apache Hadoop, VII Seminario de Invierno 19/125
24. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Hadoop v2
Este esquema se ha modificado en Hadoop 2.0 con YARN (Yet Another
Resource Negociator) (HDFS se mantiene)
separa las dos funcionalidades del Jobtracker (gestión de recursos y
job-scheduling/monitorización) en demonios separados
Resource manager (RM): planificador general
Node managers (NM): monitorización, uno por nodo
Application masters (AM): gestión de aplicaciones, uno por aplicación
permite que diferentes tipos de aplicaciones (no solo MapReduce)
se ejecuten en el cluster
Apache Hadoop, VII Seminario de Invierno 20/125
25. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Arquitectura Hadoop v2
Apache Hadoop, VII Seminario de Invierno 21/125
26. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Modelo Hadoop v1
HDFS
Almacenamiento distribuido
MapReduce
Procesamiento distribuidoHBase
Basededatos
no-relacional
Pig
Scripts
Hive
Query
Otrosproyectos
Oozie,HCatalog,Sqoop,
ZooKeeper,Mahout,...
Apache Hadoop, VII Seminario de Invierno 22/125
27. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Modelo Hadoop v2
HDFS
Almacenamiento distribuido
MapReduce
Procesamiento distribuidoHBase
Basededatos
no-relacional
Pig
Scripts
Hive
Query
Otrosproyectos
Oozie,HCatalog,Sqoop,
ZooKeeper,Mahout,...
YARN
Planificador y negociador de recursos
Otrosproyectos
YARN
Apache Hadoop, VII Seminario de Invierno 23/125
28. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Índice
1 Big Data
2 Apache Hadoop
3 HDFS
4 YARN
5 MapReduce
6 Programación MapReduce en Hadoop
Programación Java
Alternativas a Java
Apache Hadoop, VII Seminario de Invierno
29. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
HDFS: Hadoop Distributed File System
Hadoop puede acceder a diferentes tipos de filesystems (local, HDFS,
KFS, S3,. . . )
Se recomienda HDFS: Hadoop Distributed File System
HDFS: Ventajas
Diseñado para almacenar ficheros muy grandes en commodity
hardware
Elevado ancho de banda
Fiabilidad mediante replicacion
HDFS: Inconvenientes
Elevada latencia
Poco eficiente con muchos ficheros pequeños
Modificaciones siempre al final de los ficheros
No permite múltiples escritores (modelo single-writer,
multiple-readers
Apache Hadoop, VII Seminario de Invierno 24/125
30. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Conceptos de HDFS
Namenode
Mantiene la información (metadatos) de los ficheros y bloques que
residen en el HDFS
Datanodes
Mantienen los datos
Bloques
Por defecto 128 MB (64 MB en v1)
bloques pequeños aumentan el paralelismo (un bloque por Map)
bloques más grandes ocultan la latencia de búsqueda y reducen la
carga del NameNode
Apache Hadoop, VII Seminario de Invierno 25/125
31. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Conceptos de HDFS (cont.)
Checkpoint node
Mantienen checkpoints del Namenode
debería ejecutarse en un sistema con características similares al
Namenode
Apache Hadoop, VII Seminario de Invierno 26/125
32. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Filesystems
Hadoop tiene una noción abstracta de los filesystems
HDFS es un caso particular de filesystem
Algunos filesystems soportados:
FS URI Descripción
Local file Disco local
HDFS hdfs Sistema HDFS
HFTP hftp RO acceso a HDFS sobre HTTP
HSFTP hsftp RO acceso a HDFS sobre HTTPS
WebHDFS webhdfs RW acceso a HDFS sobre HTTP
S3 (nativo) s3n Acceso a S3 nativo
S3 (block) s3 Acceso a S3 en bloques
Ejemplo:
hdfs dfs -ls file:///home/pepe
Más opciones:
hdfs dfs -help
Apache Hadoop, VII Seminario de Invierno 27/125
33. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Interactuar con HDFS
Tres modos principales:
1. Usando línea de comandos: comando hdfs dfs
Permite cargar, descargar y acceder a los ficheros desde línea de
comandos
Vale para todos los filesystems soportados
Ayuda: hdfs dfs -help
2. Usando el interfaz web (solo lectura)
por defecto, puerto 50070 del Namenode
3. API Java
4. Mediante otras interfaces: WebHDFS, HFTP, HDFS NFS Gateway
Apache Hadoop, VII Seminario de Invierno 28/125
34. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Interfaz en línea de comandos (I)
Algunos comandos de manejo de ficheros
Comando Significado
hdfs dfs -ls <path> Lista ficheros
hdfs dfs -ls -R <path> Lista recursivamente
hdfs dfs -cp <src> <dst> Copia ficheros HDFS a HDFS
hdfs dfs -mv <src> <dst> Mueve ficheros HDFS a HDFS
hdfs dfs -rm <path> Borra ficheros en HDFS
hdfs dfs -rm -r <path> Borra recursivamente
hdfs dfs -cat <path> Muestra fichero en HDFS
hdfs dfs -tail <path> Muestra el final del fichero
hdfs dfs -stat <path> Muestra estadísticas del fichero
hdfs dfs -mkdir <path> Crea directorio en HDFS
hdfs dfs -chmod ... Cambia permisos de fichero
hdfs dfs -chown ... Cambia propietario/grupo de fichero
hdfs dfs -du <path> Espacio en bytes ocupado por ficheros
hdfs dfs -du -s <path> Espacio ocupado acumulado
hdfs dfs -count <paths> Cuenta nº dirs/ficheros/bytes
Apache Hadoop, VII Seminario de Invierno 29/125
35. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Interfaz en línea de comandos (II)
Movimiento de ficheros del sistema local al HDFS:
Comando Significado
hdfs dfs -put <local> <dst> Copia de local a HDFS
hdfs dfs -copyFromLocal ... Igual que -put
hdfs dfs -moveFromLocal ... Mueve de local a HDFS
hdfs dfs -get <src> <loc> Copia de HDFS a local
hdfs dfs -copyToLocal ... Copia de HDFS a local
hdfs dfs -getmerge ... Copia y concatena de HDFS a local
hdfs dfs -text <path> Muestra el fichero en texto
Apache Hadoop, VII Seminario de Invierno 30/125
36. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Interfaz en línea de comandos (III)
Otros comandos:
Comando Significado
hdfs dfs -setrep <path> Cambia el nivel de replicación
hdfs dfs -test -[defsz] <path> Tests sobre el fichero
hdfs dfs -touchz <path> Crea fichero vacío
hdfs dfs -expunge Vacía la papelera
hdfs dfs -usage [cmd] Ayuda uso de comandos
Más información: http://hadoop.apache.org/docs/current/hadoop-project-
dist/hadoop-common/FileSystemShell.html
Apache Hadoop, VII Seminario de Invierno 31/125
37. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Hands-on
Apache Hadoop, VII Seminario de Invierno 32/125
38. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Prácticas HDFS (I)
Práctica 1
a) Conéctate al NameNode del cluster: ssh -X
studentXX@urraca.arcos.inf.uc3m.es (password:
.bigdata.2016!)
b) Comprueba si tienes ficheros en tu directorio HDFS
c) Copia el directorio local /home/tfernandez/datos al
directorio datos en tu directorio base en HDFS
d) Cambia a 4 el nivel de replicación del fichero
datos/libros/random_words.txt.bz2
e) Lanza el Firefox en el NameNode y úsalo para ver el interfaz web del
HDFS (http://urraca.arcos.inf.uc3m.es:50070)
- Usa la utilidad “Browse the filesystem” para ver el número de bloques
y la localización de los mismos para el fichero
datos/libros/random_words.txt.bz2
Apache Hadoop, VII Seminario de Invierno 33/125
39. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
API Java
API que permite interactuar con los filesystems soportados por Hadoop
Utiliza la clase abstracta
org.apache.hadoop.fs.FileSystem
Otras clases de interés en org.apache.hadoop.fs y
org.apache.hadoop.io
Path: representa a un fichero en un FileSystem
FileStatus: información del fichero
FSDataInputStream: stream de entrada de datos para un
fichero, con acceso aleatorio
FSDataOutputStream: stream de salida de datos para un
fichero
IOUtils: Funcionalidades para I/O
Apache Hadoop, VII Seminario de Invierno 34/125
40. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Lectura de ficheros
Método open(Path) de FileSystem
Devuelve un
FSDataInputStream
Interfaces implementadas por FSDataInputStream:
1. Seekable: permite movernos a una posición en el fichero
(método seek)
2. PositionedReadable: permite copiar a un buffer partes de un
fichero
Apache Hadoop, VII Seminario de Invierno 35/125
41. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Escritura de ficheros
Dos métodos de FileSystem para abrir los ficheros para escritura:
1. create: crea un fichero para escritura (crea los directorios padre,
si es preciso)
2. append: abre un fichero para añadir datos
Ambos métodos devuelven un FSDataOutputStream
FSDataOutputStream no permite seek (solo escritura al final
del fichero)
El método hflush() garantiza coherencia, pero supone un
overhead (en Hadoop v1 método sync())
El método hsync() garantiza que los datos se mandan a disco
(pero pueden estar en la caché del disco)
Apache Hadoop, VII Seminario de Invierno 36/125
42. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Otras operaciones con ficheros y directorios
Crear un directorio:
Método mkdirs de FileSystem
Información sobre ficheros y directorios:
Métodos getFileStatus y listStatus de FileSystem
Clase FileStatus
Patrones de nombres de ficheros (globbing)
Método globStatus de FileSystem
Interfaz PathFilter, para filtrar con expresiones regulares
Borrar ficheros o directorios, de forma recursiva o no:
Método delete de FileSystem
Apache Hadoop, VII Seminario de Invierno 37/125
43. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Hands-on
Apache Hadoop, VII Seminario de Invierno 38/125
44. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Prácticas HDFS (II)
Práctica 2:
a) En la máquina virtual, inicia el Eclipse y revisa el programa
FileSystemCat en el proyecto 01-hdfs
b) Utiliza FileSystemCat para ver el fichero un fichero de texto (por
ejemplo datos/quijote.txt)
$ cd ~/SeminarioInvierno/Hadoop-Practicas/
$ cd 01-hdfs/target/classes
$ export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:’.’
$ hdfs cursohadoop.hdfs.FileSystemCat
> ~/SeminarioInvierno/datos/quijote.txt
c) Completa el programa CopyHalfFile para que copie la mitad
inferior del fichero anterior en el HDFS a otro fichero en otro directorio
del HDFS
Apache Hadoop, VII Seminario de Invierno 39/125
45. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Prácticas HDFS (II)
Práctica 2 (cont):
d) Llevar el código y probarlo en el cluster
$ scp -rp cursohadoop/ studentXX@urraca.arcos.inf.uc3m.es:~
$ ssh studentXX@urraca.arcos.inf.uc3m.es
...
$ export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:’.’
$ hdfs cursohadoop.hdfs.FileSystemCat datos/quijote.txt
Apache Hadoop, VII Seminario de Invierno 40/125
46. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Otras interfaces a HDFS
Otros modos de acceder a HDFS
WebHDFS: proporciona una API REST para acceder a HDFS
mediante HTTP
Activada mediante la propiedad dfs.webhdfs.enabled del
fichero hdfs-site.xml del Namenode (por defecto, true)
HFTP: acceso de solo lectura a HDFS a través de HTTP
HDFS NFS Gateway: soporta NFSv3 y permite que HDFS sea
montado como parte del sistema de ficheros local del cliente
Permite usar HDFS como un sistema de ficheros UNIX local
Permite copiar ficheros de HDFS al sistema de ficheros local y
viceversa
No todas las características están soportadas (p.e. no permite
random writes ni enlaces duros)
Apache Hadoop, VII Seminario de Invierno 41/125
47. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Hands-on
Apache Hadoop, VII Seminario de Invierno 42/125
48. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Práctica HDFS (III)
Práctica 3:
En el cluster, ejecuta la siguiente instrucción para leer un fichero
usando WebHDFS
$ curl -i -L
"http://urraca.arcos.inf.uc3m.es:50070/webhdfs/v1/
user/studentXX/datos/quijote.txt?op=OPEN"
Apache Hadoop, VII Seminario de Invierno 43/125
49. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Otras herramientas para mover datos
Es posible mover datos a/desde HDFS usando otras herramientas
distcp Transferir datos en paralelo entre dos filesystems Hadoop
Ejemplo
hadoop distcp hdfs://nnode1/foo hdfs://nnode2/bar
Aplicación MapReduce map-only
Puede usar otros filesystems (HFTP, WebHDFS, etc.)
Interesante para mover cantidades masivas de datos
Más opciones: hadoop distcp -help
Apache Flume servicio para recoger, agregar y mover grandes
cantidades de datos de log a HDFS
Apache Sqoop transferencia masivas de datos entre bases de datos
estructuradas y HDFS
Apache Hadoop, VII Seminario de Invierno 44/125
50. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Herramientas para la gestión del HDFS
Hadoop proporciona un conjunto de herramientas para chequear y
optimizar el HDFS
hdfs dfsadmin: optiene información del estado del HDFS
hdfs fsck: chequeo del filesystem
sbin/start-balancer.sh: redistribuye bloques entre
datanodes
Apache Hadoop, VII Seminario de Invierno 45/125
51. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
hdfs dfsadmin
Algunas opciones (usar hdfs dfsadmin comando)
Comando Significado
-help Ayuda
-report Muestra estadísticas del filesystem
-setQuota Fija una cuota en el número de nombres en
un directorio (nº de ficheros/directorios)
-clrQuota Borra la cuota de nombres
-setSpaceQuota Fija una cuota en el espacio ocupado en un directorio
-clrSpaceQuota Borra la cuota de espacio
-refreshNodes Actualiza los nodos que se pueden conectar
-safemode fija o chequea el safe mode
-saveNameSpace en safe mode, salva el filesystem en memoria a un
nuevo fichero fsimage y resetea el fichero edits
Apache Hadoop, VII Seminario de Invierno 46/125
52. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
hdfs fsck
Chequea la salud de los ficheros en HDFS
Chequea los bloques:
Over-replicated: con replicas de más
Under-replicated: con replicas de menos
Misreplicated: replicas mal colocadas
Corruptos
Missing replicas: sin réplicas
Ejemplos:
Chequea recursivamente todo el HDFS
hdfs fsck /
Informa del número de bloques de un fichero y su localización
hdfs fsck /user/pepe/foo -files -blocks -racks
Apache Hadoop, VII Seminario de Invierno 47/125
53. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Hands-on
Apache Hadoop, VII Seminario de Invierno 48/125
54. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Prácticas HDFS (IV)
Práctica 4:
a) Haz un chequeo de tu directorio en HDFS
b) Haz un chequeo más detallado de los ficheros en el directorio
datos/patentes
Apache Hadoop, VII Seminario de Invierno 49/125
55. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Lectura de datos en HDFS
Cliente
HDFS
Distributed
FileSystem
1: open
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
Apache Hadoop, VII Seminario de Invierno 50/125
56. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Lectura de datos en HDFS
Cliente
HDFS
Distributed
FileSystem
FSData
InputStream
1: open
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: obtiene la
localización de
los bloques
Apache Hadoop, VII Seminario de Invierno 50/125
57. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Lectura de datos en HDFS
Cliente
HDFS
Distributed
FileSystem
FSData
InputStream
1: open
3: read
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: obtiene la
localización de
los bloques
Apache Hadoop, VII Seminario de Invierno 50/125
58. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Lectura de datos en HDFS
Cliente
HDFS
Distributed
FileSystem
FSData
InputStream
1: open
3: read
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: obtiene la
localización de
los bloques
4: read
Apache Hadoop, VII Seminario de Invierno 50/125
59. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Lectura de datos en HDFS
Cliente
HDFS
Distributed
FileSystem
FSData
InputStream
1: open
3: read
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: obtiene la
localización de
los bloques
4: read
5: read
Apache Hadoop, VII Seminario de Invierno 50/125
60. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Lectura de datos en HDFS
Cliente
HDFS
Distributed
FileSystem
FSData
InputStream
1: open
3: read
6: close
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: obtiene la
localización de
los bloques
4: read
5: read
Apache Hadoop, VII Seminario de Invierno 50/125
61. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Escritura de datos en HDFS
Cliente
HDFS
Distributed
FileSystem
1: create
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
Pipeline de
Datanodes
Apache Hadoop, VII Seminario de Invierno 51/125
62. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Escritura de datos en HDFS
Cliente
HDFS
Distributed
FileSystem
FSData
OutputStream
1: create
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: create
Pipeline de
Datanodes
Apache Hadoop, VII Seminario de Invierno 51/125
63. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Escritura de datos en HDFS
Cliente
HDFS
Distributed
FileSystem
FSData
OutputStream
1: create
3: write
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: create
Pipeline de
Datanodes
Apache Hadoop, VII Seminario de Invierno 51/125
64. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Escritura de datos en HDFS
Cliente
HDFS
Distributed
FileSystem
FSData
OutputStream
1: create
3: write
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: create
4: write packet
4 4
Pipeline de
Datanodes
Apache Hadoop, VII Seminario de Invierno 51/125
65. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Escritura de datos en HDFS
Cliente
HDFS
Distributed
FileSystem
FSData
OutputStream
1: create
3: write
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: create
4: write packet 5: ack packet
5 5
4 4
Pipeline de
Datanodes
Apache Hadoop, VII Seminario de Invierno 51/125
66. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Escritura de datos en HDFS
Cliente
HDFS
Distributed
FileSystem
FSData
OutputStream
1: create
3: write
6: close
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: create
4: write packet 5: ack packet
5 5
4 4
Pipeline de
Datanodes
Apache Hadoop, VII Seminario de Invierno 51/125
67. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Escritura de datos en HDFS
Cliente
HDFS
Distributed
FileSystem
FSData
OutputStream
1: create
3: write
6: close
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: create
4: write packet 5: ack packet
7: complete
5 5
4 4
Pipeline de
Datanodes
Apache Hadoop, VII Seminario de Invierno 51/125
68. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Localización de las replicas
Política por defecto:
1ª réplica: en el nodo del cliente o en
un nodo al azar
2ª réplica: en un rack diferente de la
primera (elegido al azar)
3ª réplica: en el mismo rack que la 2ª,
pero en otro nodo
Otras réplicas: al azar (se intenta
evitar colocar demasiadas réplicas en
el mismo rack)
DataCenter
rack 1 rack 2
nodo
Apache Hadoop, VII Seminario de Invierno 52/125
69. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Modelo de coherencia
Para aumentar el rendimiento, HDFS no es POSIX compliant en la
escritura de ficheros
Después de crear un fichero, este es visible es el espacio de
nombres del filesystem,
pero, no se garantiza que sus datos sean visibles
Forzar la visibilidad
Cerrar el stream de salida con close()
Utilizar el método sync() en Hadoop v1, o hflush() en v2, de
la clase FSDataOutputStream
Apache Hadoop, VII Seminario de Invierno 53/125
70. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Propiedades configurables
Múltiples propiedades configurables (fichero hdfs-site.xml)
dfs.namenode.name.dir: lista (separada por comas) de
directorios donde el namenode guarda sus metadatos (una copia en
cada directorio), por defecto
file://$hadoop.tmp.dir/dfs/name
dfs.datanode.data.dir: lista (separada por comas) de
directorios donde los datanodes guarda los bloques de datos (cada
bloque en sólo uno de los directorios), por defecto
file://$hadoop.tmp.dir/dfs/data
dfs.namenode.checkpoint.dir: lista (separada por
comas) de directorios donde el CheckPoint node guarda los
checkpoints (una copia en cada directorio), por defecto
file://$hadoop.tmp.dir/dfs/namesecondary
dfs.blocksize: tamaño de bloque para nuevos ficheros (por
defecto, 128MB)
dfs.replication: nº de réplicas por bloque, por defecto 3
Apache Hadoop, VII Seminario de Invierno 54/125
71. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Problemas con el Namenode
El Namenode es un single point of failure (SPOF)
Si falla es imposible acceder a los datos
Posibilidad de recuperación a partir de los checkpoints
Conveniente guardar varias réplicas de los datos del namenode
(RAID, indicar en dfs.namenode.name.dir directorios en
diferentes máquinas, etc)
Mejoras en la versión 2.0
HDFS High-Availability
HDFS Federation
Apache Hadoop, VII Seminario de Invierno 55/125
72. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
HDFS High-Availability
Un par de Namenodes en configuración activo-standby
si falla el Namenode activo, el otro ocupa su lugar
Consideraciones
Los Namenodes deben usar un almacenamiento compartido de alta
disponibilidad
Los Datanodes deben enviar informes de bloques a los dos
Namenodes (el block mapping va en memoria, no en disco)
Los Clientes deben manejar el fallo del Namenode de forma
transparente
Más información: hadoop.apache.org/docs/current/hadoop-project-
dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html,
hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-
hdfs/HDFSHighAvailabilityWithNFS.html
Apache Hadoop, VII Seminario de Invierno 56/125
73. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
HDFS Federation
El Namenode mantiene, en memoria, referencias a cada fichero y bloque
en el filesystem
problemas de escalabilidad
HDF Federation, introducida en la versión 2.0
Permite usar varios Namenodes
Cada uno gestiona una porción del espacio de nombres del
filesystem
Los Namenodes no se coordinan entre sí
Cada Datanodes se registra con todos los Namenodes
Más información: hadoop.apache.org/docs/current/hadoop-project-
dist/hadoop-hdfs/Federation.html
Apache Hadoop, VII Seminario de Invierno 57/125
74. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Índice
1 Big Data
2 Apache Hadoop
3 HDFS
4 YARN
5 MapReduce
6 Programación MapReduce en Hadoop
Programación Java
Alternativas a Java
Apache Hadoop, VII Seminario de Invierno
75. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Terminología Hadoop v1 (MapReduce)
Jobtracker
Coordina todos los trabajos
Envía tareas a los tasktrackers
Mantiene información sobre el progreso de cada tarea
Tasktrackers
Realizan las tareas
Envían informes de progreso al Jobtracker
Splits
Trozos en los que se divide la entrada a una tarea MapReduce
Normalmente del tamaño de 1 bloque (64 MB)
Apache Hadoop, VII Seminario de Invierno 58/125
76. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Elementos de control Hadoop v1
Fuente: A. Murthy, V. Vavilapalli, “Apache Hadoop YARN”, Addison-Wesley, marzo 2014Apache Hadoop, VII Seminario de Invierno 59/125
77. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
YARN: the Data Operating System
Un único Jobtracker es un cuello de botella en grandes clusters (más de
4000 nodos)
YARN (Yet Another Resource Negociator): nueva arquitectura
Característica principal:
separa las dos funcionalidades del Jobtracker (gestión de recursos y
job-scheduling/monitorización) en demonios separados: resource
manager, node managers y application masters
MapReduce es uno de los tipos de aplicación que pueden correr
sobre YARN
Más información:
hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site
wiki.apache.org/hadoop/PoweredByYarn
Apache Hadoop, VII Seminario de Invierno 60/125
78. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
YARN
Fuente: www.slideshare.net/Hadoop_Summit/apache-hadoop-yarn-present-and-future
Apache Hadoop, VII Seminario de Invierno 61/125
79. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Elementos de control YARN
Fuente: A. Murthy, V. Vavilapalli, “Apache Hadoop YARN”, Addison-Wesley, marzo 2014
Apache Hadoop, VII Seminario de Invierno 62/125
80. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Demonios YARN (I)
Resource manager
arbitra los recursos entre las aplicaciones en el sistema
demonio global, obtiene datos del estado del cluster de los node
managers
dos componentes:
Scheduler: planifica aplicaciones en base a sus requerimientos de
recusos (se basa en el concepto de Container de recursos)
Applications Manager: acepta trabajos, negocia containers y
gestiona fallos de los Application Masters
Node managers
uno por nodo
monitorizan los recursos del cluster (containers)
Apache Hadoop, VII Seminario de Invierno 63/125
81. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Demonios YARN (II)
Application masters
uno por aplicación
gestiona el ciclo de vida de la aplicación
solicita recursos (containers) al Resource manager y ejecuta la
aplicación en esos containers
trabaja con los Node managers para ejecutar y monitorizar las
tareas
permiten que diferentes tipos de aplicaciones (no solo MapReduce)
se ejecuten en el cluster
Apache Hadoop, VII Seminario de Invierno 64/125
82. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Índice
1 Big Data
2 Apache Hadoop
3 HDFS
4 YARN
5 MapReduce
6 Programación MapReduce en Hadoop
Programación Java
Alternativas a Java
Apache Hadoop, VII Seminario de Invierno
83. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Modelo de programación MapReduce
Inspirado en la programación funcional
Operación Map:
square n = n * n
map op [] = []
map op (x: xs) = op x : map op xs
map (square) [1..5] => [1,4,9,16,25]
Operación Reduce:
reduce op (x : [ ] ) = x
reduce op (x: xs) = (op x (reduce op xs) )
reduce (+) (map (square) [1..5]) => 55
Apache Hadoop, VII Seminario de Invierno 65/125
84. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Modelo de programación
Entrada y salida: listas de pares clave/valor
El programador especifica las funciones map y reduce
Función Map: genera claves/valores intermedios
map(K1, V1) → list(K2, V2)
Para cada K1 y V1 se obtiene una lista intermedia
(K2, V2) es un par clave/valor intermedio
Funcion Reduce: combina los valores intermedios para cada clave
particular
reduce(K2, list(V2)) → (K3, list(V3))
Para cada clave de salida K3 se genera una lista de valores
- list(V3) suele tener un único valor
- A menudo, K3 = K2
Apache Hadoop, VII Seminario de Invierno 66/125
85. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Automatización del proceso
map map map
Entradas: (Ki
1,Vi
1) Entradas: (Kj
1,Vj
1) Entradas: (Kk
1,Vk
1)
(Ki
2,Vi
2) (Ki
2,Vi
2) (Ki
2,Vi
2) (Ki
2,Vi
2) (Ki
2,Vi
2) (Ki
2,Vi
2) (Ki
2,Vi
2) (Ki
2,Vi
2) (Ki
2,Vi
2)
Sistema de ficheros distribuido
Barajado y ordenación por valores de claves
reduce reduce
(Ka
2,list(Va
2)) (Kb
2,list(Vb
2)) (Kc
2,list(Vc
2)) (Kd
2,list(Vd
2))
(Ka
3,Va
3) (Kb
3,Vb
3) (Kc
3,Vc
3) (Kd
3,Vd
3)
Apache Hadoop, VII Seminario de Invierno 67/125
86. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Ejemplo: WordCount
Cuenta las ocurrencias de cada palabra en ficheros de texto
Entrada:
K1 = ∅, V1 = línea
Salida:
pares (palabra, nº de ocurrencias)
Pseudocódigo del Map
map(key, value):
// key: nada, value: línea de texto
for each word w in value emit(w, 1)
Pseudocódigo del Reduce
reduce(key, values):
// key: palabra; values: un iterador sobre los 1s
emit(key, sum(values))
Apache Hadoop, VII Seminario de Invierno 68/125
87. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Ejemplo: WordCount
map
En un lugar
de la Mancha
Más vale la pena
en el rostro que
la mancha en
el corazón
El amor es deseo
de belleza
map
map
reduce
reduce
en,1
la,1
mancha,1
vale,1
la,1
pena,1
un,1
lugar,1
de,1
más,1
Entrada Map Shuffle & Sort Reduce Salida
Apache Hadoop, VII Seminario de Invierno 69/125
88. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Ejemplo: WordCount
map
En un lugar
de la Mancha
Más vale la pena
en el rostro que
la mancha en
el corazón
El amor es deseo
de belleza
map
map
reduce
reduce
Entrada Map Shuffle & Sort Reduce Salida
en,1
rostro,1
la,1
mancha,1
en,1
el,1
que,1
Apache Hadoop, VII Seminario de Invierno 69/125
89. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Ejemplo: WordCount
map
En un lugar
de la Mancha
Más vale la pena
en el rostro que
la mancha en
el corazón
El amor es deseo
de belleza
map
map
reduce
reduce
Entrada Map Shuffle & Sort Reduce Salida
corazón,1
amor,1
deseo,1
el,1
el,1
es,1
de,1
belleza,1
Apache Hadoop, VII Seminario de Invierno 69/125
90. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Ejemplo: WordCount
map
En un lugar
de la Mancha
Más vale la pena
en el rostro que
la mancha en
el corazón
El amor es deseo
de belleza
amor, 1
corazón, 1
deseo, 1
en, 3
la, 3
mancha, 2
pena, 1
rostro, 1
vale, 1
belleza, 1
de, 2
el, 3
es, 1
lugar, 1
más, 1
que, 1
un, 1
map
map
reduce
reduce
Entrada Map Shuffle & Sort Reduce Salida
amor,1
corazón,1
deseo,1
en,1,1,1
la,1,1,1
mancha,1,1
pena,1
rostro,1
vale,1
belleza,1
de,1,1
el,1,1,1
es,1
lugar,1
más,1
que,1
un,1
Apache Hadoop, VII Seminario de Invierno 69/125
91. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Características de la ejecución
Sistema de ficheros distribuido para gestionar los datos
GFS (Google File System), HDFS (Hadoop Distributed FS)
Ficheros divididos en bloques (chunks o splits) grandes (64-128 MB
en HDFS), con replicación
Arquitectura master-worker
Los map workers se inician en el mismo nodo o rack que sus datos
de entrada
Minimiza el uso de la red
Los map workers graban su salida en el disco local antes de servirla
a los reduce workers
Permite recuperar una tarea reduce en caso de fallo
Los reduce workers graban su salida en el sistema distribuido
Replicación en los resultados
Un fichero de salida por cada reduce
Apache Hadoop, VII Seminario de Invierno 70/125
92. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Características de la ejecución
Programa de
usuario
master
worker
worker
worker
worker
worker
split 0
split 1
split 2
fichero de
salida 0
fichero de
salida 1
fork fork fork
asigna
maps asigna
reduces
DFS Local DFS
Read
Local
write
Write
Remote read,
sort & shuffle
Apache Hadoop, VII Seminario de Invierno 71/125
93. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Diferencia entre bloques y splits
Apache Hadoop, VII Seminario de Invierno 72/125
94. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Tolerancia a fallos
Mediante heartbeats, el Master detecta fallos en los workers
Si falla una tarea map o reduce
La tarea se reintenta en otro nodo
- Correcto para los maps porque no tienen dependencias
- Correcto para los reduces porque las salidas de los maps están en
disco
- Necesario que las tareas no tengas efectos colaterales
Si la misma tarea falla repetidamente, el trabajo MapReduce se
aborta y se notifica al usuario (ajustable)
Si falla un nodo completo
Relanzar sus tareas en curso en otros nodos
Reejecutar cualquier map que se hubiera ejecutado en el nodo
- Necesario pues las salidas de los maps se perdieron
Apache Hadoop, VII Seminario de Invierno 73/125
95. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Tolerancia a fallos
Si una tarea no progresa (straggler o rezagada)
Se lanza una segunda copia de la tarea en otro nodo (ejecución
especulativa)
Se toma la salida de la tarea que acabe antes, y se mata a la otra
Situación bastante común en clusters grandes
- Debidos a errores hardware, bugs software, fallos de configuración,
etc.
- Una tarea rezagada puede enlentecer de forma importante un trabajo
Si falla el Master
Se intenta relanzar de nuevo
- Las tareas en proceso o acabadas durante el reinicio, se relanzan
Si continua fallando, el trabajo se aborta y se le notifica al usuario
Apache Hadoop, VII Seminario de Invierno 74/125
96. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Número de Maps y Reduces
M tareas map y R tareas reduce
Hacer M+R mucho mayor que el número de PEs disponibles
Mejora la utilización del cluster
Habitualmente, M igual al número de splits de entrada
Mejora el balance de carga dinámico y acelera la recuperación
cuando falla un worker
R menor que M
Salida repartida en R ficheros
Valor ajustable por el usuario
Función del tipo de problema y los recursos disponibles (memoria, nº
cores,. . . )
Ver wiki.apache.org/hadoop/HowManyMapsAndReduces
Apache Hadoop, VII Seminario de Invierno 75/125
97. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Combinador
Un combinador (Combiner) es una función de agregación local para
las claves repetidas de cada map
Puede ahorrar ancho de banda al reducir el tamaño de los datos
intermedios del map
combiner(K
m
2 , list(V
m
2 )) → (K
m
3 , list(V
m
3 ))
Habitualmente, misma función que el reducer
Se ejecuta en el mismo nodo que el map
Solo puede utilizarse si la función reduce es commutativa y
asociativa
Apache Hadoop, VII Seminario de Invierno 76/125
98. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Combinador
map
En un lugar
de la Mancha
Más vale la pena
en el rostro que
la mancha en
el corazón
El amor es deseo
de belleza
map
map
reduce
reduce
Entrada Map Shuffle &
Sort
Reduce Salida
en,1
el,1
rostro,1
que,1
la,1
mancha,1
en,1 el,1
que,1
combiner
combiner
combiner
en,2
rostro,1
la,1
mancha,1
Combiner
Apache Hadoop, VII Seminario de Invierno 77/125
99. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Particionador
El particionador (shuffler) por defecto es un hash de las claves:
hash(K) mod R
Garantiza:
Claves iguales van al mismo reducer
Carga de los reducers relativamente bien balanceada (en muchos
casos)
Hay situaciones en las que puede interesar cambiarlo:
Ejemplo: hash(hostame(URL)) mod R
Todas las URLs de cada host se juntan en el mismo fichero de salida
Apache Hadoop, VII Seminario de Invierno 78/125
100. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Índice
1 Big Data
2 Apache Hadoop
3 HDFS
4 YARN
5 MapReduce
6 Programación MapReduce en Hadoop
Programación Java
Alternativas a Java
Apache Hadoop, VII Seminario de Invierno
101. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Java MapReduce en Hadoop
Un programa MapReduce en Java debe definir 3 clases:
1. Una clase mapper
2. Una clase reducer
3. Una clase principal, con el método main
Pueden crearse
como tres clases públicas separadas
como una sola, con el método main, y clases internas static para
mapper y reducer
Apache Hadoop, VII Seminario de Invierno 79/125
102. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Nueva y vieja API
Los programas pueden usar la nueva API (recomendado) o la antigua
Ambas APIs son incompatibles
Utilizaremos siempre la API nueva
Disponible desde Hadoop 0.20.0
Definida en el paquete org.apache.hadoop.mapreduce
Algunas librerías presentes en la API vieja no han sido portadas
API vieja (desaconsejada)
Definida en el paquete org.apache.hadoop.mapred
Apache Hadoop, VII Seminario de Invierno 80/125
103. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
WordCount Mapper
public class WordCountMapper
extends Mapper<LongWritable , Text , Text , IntWritable> {
@Override
public void map(LongWritable key, Text value , Context ctxt )
throws IOException , InterruptedException {
Matcher matcher = pat .matcher(value . toString () ) ;
while (matcher. find () ) {
word. set (matcher. group () . toLowerCase () ) ;
ctxt . write (word, one) ;
}
}
private Text word = new Text () ;
private final static IntWritable one = new IntWritable (1) ;
private Pattern pat =
Pattern . compile( " b[a−zA−Z u00C0−uFFFF]+b" ) ;
}
Apache Hadoop, VII Seminario de Invierno 81/125
104. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
WordCount Mapper
Extiende la clase
Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT>
Debe sobrescribir el método
map(KEYIN key, VALUEIN value, Mapper.Context
context)
Usa una instancia de Context en la que escribe los pares
clave/valor de salida
Debe utilizar tipos de datos que implementen la interfaz
Writable (como LongWritable o Text)
optimizados para serialización
Otros métodos que se pueden sobrescribir:
setup(Context context) Llamado una vez al comienzo de la
tarea
cleanup(Context context) Llamado una vez al final de la
tarea
Apache Hadoop, VII Seminario de Invierno 82/125
105. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
WordCount Reducer
public class WordCountReducer
extends Reducer<Text , IntWritable , Text , IntWritable> {
@Override
public void reduce(Text key, Iterable<IntWritable> values ,
Context ctxt ) throws IOException , InterruptedException {
int sum = 0;
for ( IntWritable value : values ) {
sum += value . get () ;
}
ctxt . write (key, new IntWritable (sum) ) ;
}
}
Apache Hadoop, VII Seminario de Invierno 83/125
106. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
WordCount Reducer
Extiende la clase
Reducer<KEYIN,VALUEIN,KEYOUT,VALUEOUT>
Debe sobrescribir el método
reduce(KEYIN key, Iterable<VALUEIN> values,
Reducer.Context context)
Usa una instancia de Context en la que escribe los pares
clave/valor de salida
Debe utilizar tipos de datos que implementen la interfaz
Writable (como LongWritable o Text)
optimizados para serialización
Otros métodos que se pueden sobrescribir:
setup(Context context) Llamado una vez al comienzo de la
tarea
cleanup(Context context) Llamado una vez al final de la
tarea
Apache Hadoop, VII Seminario de Invierno 84/125
107. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
WordCount Driver (I)
public class WordCountDriver
extends Configured implements Tool {
public int run( String [] arg0) throws Exception {
i f (arg0 . length != 2) {
System. err . printf ( "Usar : %s [ops] <entrada> <salida >n" ,
getClass () .getSimpleName() ) ;
ToolRunner .printGenericCommandUsage(System. err ) ;
return −1;
}
Configuration conf = getConf () ;
Job job = Job . getInstance ( conf ) ;
job .setJobName( "Word Count" ) ;
job . setJarByClass ( getClass () ) ;
FileInputFormat . addInputPath( job , new Path(arg0[0]) ) ;
FileOutputFormat . setOutputPath( job , new Path(arg0[1]) ) ;
Apache Hadoop, VII Seminario de Invierno 85/125
108. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
WordCount Driver (II)
job . setOutputKeyClass(Text . class ) ;
job . setOutputValueClass ( IntWritable . class ) ;
job .setNumReduceTasks(4) ;
job . setMapperClass(WordCountMapper. class ) ;
job . setCombinerClass(WordCountReducer. class ) ;
job . setReducerClass(WordCountReducer. class ) ;
return ( job . waitForCompletion( true ) ? 0 : −1);
}
public static void main( String [] args) throws Exception {
int exitCode = ToolRunner . run(new WordCountDriver () , args) ;
System. exit (exitCode) ;
}
}
Apache Hadoop, VII Seminario de Invierno 86/125
109. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
WordCount Driver
Clase Configured: permite acceder a la configuración del
sistema
Método Configuration getConf(): devuelve la
configuración actual
Clase Configuration: proporciona acceso a la configuración
Clase Job: permite configurar, enviar y controlar la ejecución de un
trabajo
Clase FileInputFormat<K,V>: describe los ficheros de
entrada en un trabajo MapReduce
Clase FileOutputFormat<K,V>: describe los ficheros de
entrada en un trabajo MapReduce
Apache Hadoop, VII Seminario de Invierno 87/125
110. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
WordCount Driver
Interfaz Tool: interfaz estándar para aplicaciones MapReduce,
soporta el manejo de opciones en línea de comandos
Clase ToolRunner: ejecuta clases que implementan la interfaz
Tool
Clase Path: identifica a un fichero o directorio en el FileSystem
Apache Hadoop, VII Seminario de Invierno 88/125
111. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Compilación y ejecución
Preferiblemente, crear un jar con todas las clases y ejecutarlo con:
yarn jar fichero.jar [opciones]
Para gestionar las aplicaciones, utilizad:
en general, la opción application del comando yarn (yarn
application -help para ver las opciones)
para trabajos MapReduce, la opción job del comando mapred
(mapred job -help para ver las opciones)
Más información en
hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-
site/YarnCommands.html
hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-
mapreduce-client-core/MapredCommands.html
Apache Hadoop, VII Seminario de Invierno 89/125
112. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Hands-on
Apache Hadoop, VII Seminario de Invierno 90/125
113. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Prácticas MapReduce (I)
Práctica 5, programa wordcount (proyecto 02-wordcount)
En la máquina virtual
a) Inicia el Eclipse y revisa el código del WordCount
b) En un terminal, usa maven para crear el fichero jar
c) Prueba a lanzar el jar desde el terminal usando
datos/libros-mini como directorio de entrada
En el cluster:
a) Copia el jar en el cluster y ejecuta el WordCount usando
datos/libros como directorio de entrada
b) Mientras se ejecuta, utiliza el interfaz web de YARN
(http://urraca.arcos.inf.uc3m.es:8088) para analizar su ejecución
Apache Hadoop, VII Seminario de Invierno 91/125
114. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Writables
Formato de serialización de objetos de Hadoop
Transforma objetos en un flujo de bytes para transmisión o
almacenamiento
Gran número de clases que implementan el interfaz Writable:
Objetos primitivos: BooleanWritable, ByteWritable,
IntWritable, LongWritable, FloatWritable,
DoubleWritable, Text (cadenas UTF-8)
Objetos primitivos de longitud variable: VIntWritable,
VLongWritable
Colecciones: ArrayWritable, ArrayPrimitiveWritable,
TwoDArrayWritable, MapWritable,
SortedMapWritable
Otros: NullWritable, BytesWritable, ObjectWritable,
GenericWritable,
Apache Hadoop, VII Seminario de Invierno 92/125
115. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Writables a medida
Es posible implementar writables a medida
Implementar la interfaz Writable
Implementar los métodos write(DataOutput out) y
readFields(DataInput in)
Un objeto que se quiera usar como clave debe implementar
WritableComparable
Apache Hadoop, VII Seminario de Invierno 93/125
116. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Clase abstracta FileInputFormat<K,V>
Define métodos para añadir uno o varios paths de entrada al trabajo
addInputPath(Job job, Path path), addInputPaths(Job
job, String commaSeparatedPaths)
Clase base para diferentes formatos de entrada concretos
El formato a usar se especifica mediante el método
setInputFormatClass del Job, por ejemplo:
job.setInputFormatClass(TextInputFormat.class)
Apache Hadoop, VII Seminario de Invierno 94/125
117. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Formatos de entrada
TextInputFormat: formato por defecto para ficheros de texto
KeyValueTextInputFormat: ficheros de texto con estructura
clave/valor
NLineInputFormat: permite que los mappers reciban un
número fijo de líneas de entrada
SequenceFileInputFormat: secuencias de datos binarios
clave/valor
CombineFileInputFormat: Permite empaquetar varios
ficheros pequeños en un split de entrada de un tamaño
determinado
FixedLengthInputFormat: Usado para leer ficheros con
registros de longitud fija
Apache Hadoop, VII Seminario de Invierno 95/125
118. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Formatos de entrada
TextInputFormat:
Formato por defecto
Cada mapper recibe un trozo (split) del fichero y lo procesa línea a
línea
Como clave, toma el offset en bytes en el fichero desde el comienzo
de la línea (LongWritable)
Como valor, toma toda la línea
KeyValueTextInputFormat:
Igual que el anterior, pero separa cada línea en clave/valor
Usa tabulado como separador por defecto
Para cambiar, modificar en el objeto Configuration la propiedad
mapreduce.input.keyvaluelinerecordreader.key.
value.separator
Nota: en la API vieja es key.value.separator.in.input.line
Apache Hadoop, VII Seminario de Invierno 96/125
119. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Salida de ficheros
Similar a la entrada: clase abstracta FileOutputFormat<K,V>
Clase base para diversos formatos de salida concretos
TextOutputFormat: formato por defecto para ficheros de texto
- Escribe líneas de texto en formato clave/valor separados por un
tabulado
- Carácter de separación modificable:
mapreduce.output.textoutputformat.separator
API vieja mapred.textoutputformat.separator
SequenceFileOutputFormat: secuencias de datos binarios
clave/valor
MapFileOutputFormat: Un formato de salida que escribe
MapFiles
El formato a usar se especifica mediante el método
setOutputFormatClass del Job
Apache Hadoop, VII Seminario de Invierno 97/125
120. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Hands-on
Apache Hadoop, VII Seminario de Invierno 98/125
121. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Prácticas MapReduce (II)
Datos de entrada
Fichero de citas de patentes (cite75_99.txt)
Formato: patente,patente_a_la_que_cita
Fichero de descripción de patentes (apat63_99.txt)
Práctica 6, programa citingpatents (proyecto
03-citingpatents)
Objetivo: Crear un programa MapReduce que, para cada patente de
cite75_99.txt, obtenga la lista de las que la citan
Formato salida: patente patente1,patente2...
Mapper:
3858245,3755824 → 3755824 3858245
Reducer:
3755824 {3858245 3858247. . . } → 3755824 3858245,3858247. . .
Utilizar como formato de entrada KeyValueTextInputFormat
Apache Hadoop, VII Seminario de Invierno 99/125
122. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Prácticas MapReduce (III)
Práctica 7, programa creasequencefile (proyecto
04-creasequencefile)
Hacer un programa MapReduce map-only que lea el fichero
apat63_99.txt, separe los campos y lo guarde como un fichero
Sequence con
clave: el país (Text)
valor: una cadena con la patente y el año separados por coma
(Text)
Se puede ver el contenido del fichero con
hdfs dfs -text dir_salida
Apache Hadoop, VII Seminario de Invierno 100/125
123. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Compresión
Como vimos en el WordCount, Hadoop lee directamente ficheros
comprimidos:
Los ficheros se descomprimen automáticamente, usando la
terminación del fichero para determinar que codec usar
Formato Java/Nativo Splittable Codec
zlib/DEFLATE Sí/Sí No DefaultCodec
gzip Sí/Sí No GzipCodec
bzip2 Sí/Sí Sí BZip2Codec
LZO No/Sí No (Sí con preproceso) LzopCodec
LZ4 No/Sí No Lz4Codec
Snappy No/Sí No SnappyCodec
Apache Hadoop, VII Seminario de Invierno 101/125
124. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Compresión
Fuente: Kamat, G., Singh, S., “Compression Options in Hadoop - A Tale of Tradeoffs”, Hadoop Summit (San Jose), June 27, 2013
Apache Hadoop, VII Seminario de Invierno 102/125
125. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Compresión
Recomendaciones:
Usar contenedores binarios como Sequence File o Avro datafile
(soportan compresión y splitting)
Usar formatos splittables
Dividir los ficheros en trozos y comprimirlos por separado (cada
trozo comprimido debería ocupar un bloque HDFS)
No usar compresión
Apache Hadoop, VII Seminario de Invierno 103/125
126. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Hands-on
Apache Hadoop, VII Seminario de Invierno 104/125
127. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Prácticas MapReduce (IV)
Práctica 8 (proyecto 03-citingpatents)
Modificar el programa CitingPatents para que guarde la salida
comprimida en Gzip
Utilizad los métodos estáticos setCompressOutput y
setOutputCompressorClass de la clase
FileOutputFormat
Apache Hadoop, VII Seminario de Invierno 105/125
128. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Encadenamiento de trabajos MapReduce
Es posible encadenar trabajos MapReduce
Basta con definir varios jobs y lanzarlos unos detrás de otros
La salida a disco de un job es leída por el siguiente
Alternativa
Usar las clases ChainMapper y ChainReducer
Permiten encadenar varios mappers seguidos de un reducer y cero
o más mappers adicionales ([MAP+ / REDUCE MAP*])
Reduce los accesos a disco
Para workflows complejos, se puede usar Apache Oozie o Cascading
Apache Hadoop, VII Seminario de Invierno 106/125
129. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Hands-on
Apache Hadoop, VII Seminario de Invierno 107/125
130. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Prácticas MapReduce (V)
Práctica 9 (proyecto 05-citationnumberbypatent_chained):
para cada patente del fichero cite75_99.txt, obtener el número de
las que la citan
Encadenar CitingPatents con un mapper que cuenta el
número de patentes que citan
Mapper2: 3755824 3858245,3858247. . . → 3755824 9
Haz ese encadenamiento usando ChainMapper y ChainReducer
Ejecución:
$ export LIBJAR = path_a_citingpatents*.jar
$ export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$LIBJAR
$ yarn jar path_to_chained.jar -libjars $LIBJAR
> path_to_cite75_99.txt path_to_out
Apache Hadoop, VII Seminario de Invierno 108/125
131. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Secondary Sort
La ordenación se hace sólo por la clave:
El orden en que aparecen los valores no está fijado
Es posible imponer un orden en el que aparecen los valores:
Hacer que la clave esté compuesta por la clave natural y el valor
natural (objeto WritableComparable)
El comparador de ordenación debe ordenar usando esa clave
compuesta
El particionador debe considerar sólo la clave natural
El comparador de agrupamiento usa una u otra según el caso
Apache Hadoop, VII Seminario de Invierno 109/125
132. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Secondary Sort
Ejemplo de clave compuesta
Clave compuesta
Clave Valor
{
{
{Particionar
Ordenar/Agrupar
Se ordena por la clave compuesta [clave, valor]
(job.setSortComparatorClass)
Se particiona por clave (job.setPartitionerClass,
garantiza que las mismas claves van al mismo reducer)
Se agrupa por la clave o la clave compuesta [clave, valor]
dependiendo del problema
(job.setGroupingComparatorClass)
Apache Hadoop, VII Seminario de Invierno 110/125
133. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Hands-on
Apache Hadoop, VII Seminario de Invierno 111/125
134. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Prácticas MapReduce (VI)
Objetivo
Partiendo del fichero cite75_99.seq, obtener un fichero de
texto con la siguiente información
país año -> nº de patentes ese año
La salida debe estar ordenada por países, y para cada país, por año
(sort secundario)
Debemos usar una clave compuesta [país, año]
Clave compuesta
País Año
{
{
{
Particionar
Ordenar/Agrupar
Apache Hadoop, VII Seminario de Invierno 112/125
135. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Prácticas MapReduce (VI)
Práctica 10, programa sort.SortSecundario (proyecto
06-sortsecundario)
Se ordena por la clave compuesta [país, año]
(job.setSortComparatorClass)
Se particiona por país (job.setPartitionerClass,
garantiza que los mismos países van al mismo reducer)
Se agrupa por la clave compuesta [país, año]
(job.setGroupingComparatorClass)
Apache Hadoop, VII Seminario de Invierno 113/125
136. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Joins de datos de diferentes fuentes
Hacer uniones de datos de diferentes fuentes es complejo en Hadoop
Preferible usar lenguajes de alto nivel como Pig o Hive
En Hadoop hay varias soluciones:
Si un conjunto de datos es grande y el otro pequeño, se puede
replicar el pequeño en todos los nodos usando Distributed Cache
Map-Side joins: el join se realiza antes de llegar a la función map
Los conjuntos de datos deben dividirse en el mismo número de
particiones y estar ordenados por la clave de unión
Reduce-side joins: el join se realiza en el reducer
El mapper etiqueta cada dato con su fuente y usa la clave de unión
como clave de salida
Apache Hadoop, VII Seminario de Invierno 114/125
137. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Hands-on
Apache Hadoop, VII Seminario de Invierno 115/125
138. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Prácticas MapReduce (VII)
Práctica 11, proyecto 07-simplereducersidejoin
Objetivo: unir datos de dos entradas
(a) Salida de CitingPatents (primera práctica)
(b) Fichero con información de las patentes (apat63_99.txt)
Salida:
patente, país, n_citas
Un mapper diferente para cada entrada
(a) Mapper-a (CNBPTaggedMapper)
3755824 3858245,3858247. . . → 3755824 ''cite'', 9
(b) Mapper-b (PBCMapper)
3755824,1973,4995,1971,''US'',''NY''. . . → 3755824 ''country'', US
Reducer: hace un join de los dos mappers por patente
3755824 ''cite'', 9
3755824 ''country'', US
→ 3755824 US, 9
Apache Hadoop, VII Seminario de Invierno 116/125
139. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Localización de dependencias
Mecanismo para copiar recursos (LocalResources) a los nodos del cluster
Hadoop (DistributedCache en Hadoop v1)
Los recursos (ficheros, archivos, librerías) se copian a todos los
nodos una vez por trabajo
Las aplicaciones pueden acceder directamente a estos recursos
Tipos de LocalResources:
FILE: Ficheros normales
ARCHIVE: Ficheros comprimidos (jar, tar, tar.gz, zip) que
descomprime el NodeManager
PATTERN: Híbrido de ARCHIVE y FILE (se mantiene el fichero y se
descomprime parte)
Visibilidad de los LocalResources
PUBLIC: accesibles por todos los usuarios
PRIVATE: compartidos por aplicaciones del mismo usuario en el nodo
APPLICATION: compartidos entre containers de la misma aplicación
Apache Hadoop, VII Seminario de Invierno 117/125
140. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Uso en línea de comandos
Si el código usa GenericOptionParser (o ToolRunner), los
ficheros a copiar se indican como parámetro:
-files + lista separada por comas de URIs de los ficheros
-archives + ficheros comprimidos (archivos)
-libjars + JARS para añadir al CLASSPATH
Ejemplo:
yarn jar mr.jar -files ~/fichero in out
Apache Hadoop, VII Seminario de Invierno 118/125
141. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Uso desde la aplicación
Métodos definidos en Job
addCacheFile(URI uri): añade un fichero a la cache
addCacheArchive(URI uri): añade un archivo a la cache
addFileToClassPath(Path file): añade un fichero al
CLASSPATH
addArchiveToClassPath(Path file): añade un archivo
al CLASSPATH
URI[] getCacheFiles(): obtiene los ficheros en la cache
URI[] getCacheArchives(): obtiene los archivos en la
cache
Apache Hadoop, VII Seminario de Invierno 119/125
142. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Contadores
Hadoop incorpora contadores para obtener datos del trabajo:
Contadores internos: informan sobre el comportamiento de la
ejecución
Contadores definidos por el usuario (interfaz Counter)
Permiten obtener información adicional sobre las tareas
Definidos mediante Java enums, que permiten agrupar contadores
relacionados
Se accede a ellos mediante el método getCounter() del
MapContext o el ReduceContext
Se modifican mediante los métodos del interfaz Counter
Apache Hadoop, VII Seminario de Invierno 120/125
143. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Hands-on
Apache Hadoop, VII Seminario de Invierno 121/125
144. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Prácticas MapReduce (VIII)
Práctica 12:
Analizar el programa WordCountPRO ()proyecto
08-wordcountpro)
Ejemplo de ejecución:
yarn -jar wordcountpro.jar
-Dwordcount.case.sensitive=true indir outdir
-skip skipfile.txt
Apache Hadoop, VII Seminario de Invierno 122/125
145. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Alternativas a Java
Hadoop Streaming
API que permite crear códigos map-reduce en otros lenguajes
Utiliza streams Unix como interfaz entre Hadoop y el código
Permite usar cualquier lenguaje que pueda leer de la entrada
estándar y escribir en la salida estándar (Python, Ruby, etc.)
Más información
hadoop.apache.org/docs/current/hadoop-streaming
Hadoop Pipes
Interfaz C++ a Hadoop MapReduce
Usa sockets como canal de comunicación entre el tasktracker y el
proceso C++ que ejecuta el map o el reduce
Apache Hadoop, VII Seminario de Invierno 123/125
146. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Hands-on
Apache Hadoop, VII Seminario de Invierno 124/125
147. Big Data Apache Hadoop HDFS YARN MapReduce Programación MapReduce en Hadoop
Prácticas MapReduce (IX)
Práctica 13: WordCount en Python (directorio 09-wordcountpython)
$ yarn jar
$HADOOP_PREFIX/share/hadoop/tools/lib/hadoop-streaming-*.j
-files WordCountMapper.py,WordCountReducer.py
-input indir -output outdir
-mapper WordCountMapper.py
-reducer WordCountReducer.py
-numReduceTasks 2
Nota: La opción -files sólo se necesita si se ejecuta en un cluster,
para copiar los scripts en los nodos del cluster
Apache Hadoop, VII Seminario de Invierno 125/125