<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.ecured.cu/index.php?action=history&amp;feed=atom&amp;title=MapReduce</id>
	<title>MapReduce - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://www.ecured.cu/index.php?action=history&amp;feed=atom&amp;title=MapReduce"/>
	<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=MapReduce&amp;action=history"/>
	<updated>2026-08-17T07:15:30Z</updated>
	<subtitle>Historial de revisiones para esta página en el wiki</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://www.ecured.cu/index.php?title=MapReduce&amp;diff=3858881&amp;oldid=prev</id>
		<title>Aimee jc.cmg8 en 21:49 5 feb 2021</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=MapReduce&amp;diff=3858881&amp;oldid=prev"/>
		<updated>2021-02-05T21:49:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 21:49 5 feb 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l24&quot; &gt;Línea 24:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 24:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''', es un modelo, [[framework]] de programación utilizado para dar soporte a la computación paralela sobre grandes colecciones de datos en grupos de computadoras y al commodity computing. Su nombre está inspirado en los nombres de dos importantes métodos, macros o funciones en programación funcional: Map y Reduce. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''', es un modelo, [[framework]] de programación utilizado para dar soporte a la computación paralela sobre grandes colecciones de datos en grupos de computadoras y al commodity computing. Su nombre está inspirado en los nombres de dos importantes métodos, macros o funciones en programación funcional: Map y Reduce. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''' ha sido adoptado mundialmente, ya que existe una implementación [[&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;OpenSource&lt;/del&gt;]] denominada [[Hadoop]]. Su desarrollo fue liderado inicialmente por [[Yahoo]] y actualmente lo realiza el proyecto [[servidor Apache|Apache]]. Se han escrito implementaciones de bibliotecas de '''MapReduce''' en diversos [[lenguajes de programación|lenguaje de programación]] como [[C++]], [[Java]] y [[Python]]. &amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''' ha sido adoptado mundialmente, ya que existe una implementación [[&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Open Source&lt;/ins&gt;]] denominada [[Hadoop]]. Su desarrollo fue liderado inicialmente por [[Yahoo]] y actualmente lo realiza el proyecto [[servidor Apache|Apache]]. Se han escrito implementaciones de bibliotecas de '''MapReduce''' en diversos [[lenguajes de programación|lenguaje de programación]] como [[C++]], [[Java]] y [[Python]]. &amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''' consiste en un solo [[JobTracker]] maestro y un [[TaskTracker]] esclavo por nodo de clúster. El maestro es responsable de programar las tareas de los componentes de los trabajos en los esclavos, supervisarlos y volver a ejecutar las tareas fallidas. Los esclavos ejecutan las tareas según las instrucciones del maestro. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''' consiste en un solo [[JobTracker]] maestro y un [[TaskTracker]] esclavo por nodo de clúster. El maestro es responsable de programar las tareas de los componentes de los trabajos en los esclavos, supervisarlos y volver a ejecutar las tareas fallidas. Los esclavos ejecutan las tareas según las instrucciones del maestro. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Aimee jc.cmg8</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=MapReduce&amp;diff=3706893&amp;oldid=prev</id>
		<title>Rosarino en 13:13 21 jun 2020</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=MapReduce&amp;diff=3706893&amp;oldid=prev"/>
		<updated>2020-06-21T13:13:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 13:13 21 jun 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l24&quot; &gt;Línea 24:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 24:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''', es un modelo, [[framework]] de programación utilizado para dar soporte a la computación paralela sobre grandes colecciones de datos en grupos de computadoras y al commodity computing. Su nombre está inspirado en los nombres de dos importantes métodos, macros o funciones en programación funcional: Map y Reduce. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''', es un modelo, [[framework]] de programación utilizado para dar soporte a la computación paralela sobre grandes colecciones de datos en grupos de computadoras y al commodity computing. Su nombre está inspirado en los nombres de dos importantes métodos, macros o funciones en programación funcional: Map y Reduce. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''' ha sido adoptado mundialmente, ya que existe una implementación [[OpenSource]] denominada [[Hadoop]]. Su desarrollo fue liderado inicialmente por [[Yahoo]] y actualmente lo realiza el proyecto [[Apache]]. Se han escrito implementaciones de bibliotecas de '''MapReduce''' en diversos [[lenguajes de programación|lenguaje de programación]] como [[C++]], [[Java]] y [[Python]]. &amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''' ha sido adoptado mundialmente, ya que existe una implementación [[OpenSource]] denominada [[Hadoop]]. Su desarrollo fue liderado inicialmente por [[Yahoo]] y actualmente lo realiza el proyecto [[&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;servidor Apache|&lt;/ins&gt;Apache]]. Se han escrito implementaciones de bibliotecas de '''MapReduce''' en diversos [[lenguajes de programación|lenguaje de programación]] como [[C++]], [[Java]] y [[Python]]. &amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''' consiste en un solo [[JobTracker]] maestro y un [[TaskTracker]] esclavo por nodo de clúster. El maestro es responsable de programar las tareas de los componentes de los trabajos en los esclavos, supervisarlos y volver a ejecutar las tareas fallidas. Los esclavos ejecutan las tareas según las instrucciones del maestro. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''' consiste en un solo [[JobTracker]] maestro y un [[TaskTracker]] esclavo por nodo de clúster. El maestro es responsable de programar las tareas de los componentes de los trabajos en los esclavos, supervisarlos y volver a ejecutar las tareas fallidas. Los esclavos ejecutan las tareas según las instrucciones del maestro. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki1:diff::1.12:old-3442189:rev-3706893 --&gt;
&lt;/table&gt;</summary>
		<author><name>Rosarino</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=MapReduce&amp;diff=3442189&amp;oldid=prev</id>
		<title>Javiermartin jc: Texto reemplazado: «&lt;div align=&quot;justify&quot;&gt;» por «»</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=MapReduce&amp;diff=3442189&amp;oldid=prev"/>
		<updated>2019-07-05T21:31:46Z</updated>

		<summary type="html">&lt;p&gt;Texto reemplazado: «&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;» por «»&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 21:31 5 jul 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l22&quot; &gt;Línea 22:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 22:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|web= &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|web= &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''', es un modelo, [[framework]] de programación utilizado para dar soporte a la computación paralela sobre grandes colecciones de datos en grupos de computadoras y al commodity computing. Su nombre está inspirado en los nombres de dos importantes métodos, macros o funciones en programación funcional: Map y Reduce. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''', es un modelo, [[framework]] de programación utilizado para dar soporte a la computación paralela sobre grandes colecciones de datos en grupos de computadoras y al commodity computing. Su nombre está inspirado en los nombres de dos importantes métodos, macros o funciones en programación funcional: Map y Reduce. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''' ha sido adoptado mundialmente, ya que existe una implementación [[OpenSource]] denominada [[Hadoop]]. Su desarrollo fue liderado inicialmente por [[Yahoo]] y actualmente lo realiza el proyecto [[Apache]]. Se han escrito implementaciones de bibliotecas de '''MapReduce''' en diversos [[lenguajes de programación|lenguaje de programación]] como [[C++]], [[Java]] y [[Python]]. &amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''' ha sido adoptado mundialmente, ya que existe una implementación [[OpenSource]] denominada [[Hadoop]]. Su desarrollo fue liderado inicialmente por [[Yahoo]] y actualmente lo realiza el proyecto [[Apache]]. Se han escrito implementaciones de bibliotecas de '''MapReduce''' en diversos [[lenguajes de programación|lenguaje de programación]] como [[C++]], [[Java]] y [[Python]]. &amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki1:diff::1.12:old-2814290:rev-3442189 --&gt;
&lt;/table&gt;</summary>
		<author><name>Javiermartin jc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=MapReduce&amp;diff=2814290&amp;oldid=prev</id>
		<title>Yaneidis.jc.scu en 23:18 21 feb 2017</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=MapReduce&amp;diff=2814290&amp;oldid=prev"/>
		<updated>2017-02-21T23:18:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 23:18 21 feb 2017&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Línea 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Desarrollo}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Ficha Software&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Ficha Software&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|nombre= MapReduce&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|nombre= MapReduce&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l26&quot; &gt;Línea 26:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 25:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''', es un modelo, [[framework]] de programación utilizado para dar soporte a la computación paralela sobre grandes colecciones de datos en grupos de computadoras y al commodity computing. Su nombre está inspirado en los nombres de dos importantes métodos, macros o funciones en programación funcional: Map y Reduce. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''', es un modelo, [[framework]] de programación utilizado para dar soporte a la computación paralela sobre grandes colecciones de datos en grupos de computadoras y al commodity computing. Su nombre está inspirado en los nombres de dos importantes métodos, macros o funciones en programación funcional: Map y Reduce. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''' ha sido adoptado mundialmente, ya que existe una implementación [[OpenSource]] denominada [[Hadoop]]. Su desarrollo fue liderado inicialmente por [[Yahoo]] y actualmente lo realiza el proyecto [[Apache]]. Se han escrito implementaciones de bibliotecas de '''MapReduce''' en diversos [[lenguajes de programación|lenguaje de programación]] como [[C++]], [[Java]] y [[Python]]. &amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''MapReduce''' ha sido adoptado mundialmente, ya que existe una implementación [[OpenSource]] denominada [[Hadoop]]. Su desarrollo fue liderado inicialmente por [[Yahoo]] y actualmente lo realiza el proyecto [[Apache]]. Se han escrito implementaciones de bibliotecas de '''MapReduce''' en diversos [[lenguajes de programación|lenguaje de programación]] como [[C++]], [[Java]] y [[Python]]. &amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MapReduce consiste en un solo [[JobTracker]] maestro y un [[TaskTracker]] esclavo por nodo de clúster. El maestro es responsable de programar las tareas de los componentes de los trabajos en los esclavos, supervisarlos y volver a ejecutar las tareas fallidas. Los esclavos ejecutan las tareas según las instrucciones del maestro. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&gt;MapReduce&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''' &lt;/ins&gt;consiste en un solo [[JobTracker]] maestro y un [[TaskTracker]] esclavo por nodo de clúster. El maestro es responsable de programar las tareas de los componentes de los trabajos en los esclavos, supervisarlos y volver a ejecutar las tareas fallidas. Los esclavos ejecutan las tareas según las instrucciones del maestro. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Historia ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Historia ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Las primeras implementaciones de Google necesitaban realizar operaciones de multiplicación de grandes matrices para calcular el PageRank, o lo que es lo mismo el ranking de páginas en una búsqueda. De esta forma se hizo popular '''MapReduce''' como un método de cálculo de álgebra lineal. Por tratar grandes colecciones de datos, llevó a crear algoritmos y frameworks capaces de poder procesar terabytes de información. Una de las primeras aplicaciones capaces de programar MapReduce fue implementado inicialmente en [[Hadoop]], diseñado inicialmente por Doug Cutting, que lo nombró así por su elefante de juguete. Fue desarrollado originalmente para apoyar la distribución del proyecto de motor de búsqueda Nutch.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Las primeras implementaciones de &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[&lt;/ins&gt;Google&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]] &lt;/ins&gt;necesitaban realizar operaciones de multiplicación de grandes matrices para calcular el PageRank, o lo que es lo mismo el ranking de páginas en una búsqueda. De esta forma se hizo popular '''MapReduce''' como un método de cálculo de álgebra lineal. Por tratar grandes colecciones de datos, llevó a crear algoritmos y frameworks capaces de poder procesar terabytes de información. Una de las primeras aplicaciones capaces de programar &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&gt;MapReduce&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''' &lt;/ins&gt;fue implementado inicialmente en [[Hadoop]], diseñado inicialmente por Doug Cutting, que lo nombró así por su elefante de juguete. Fue desarrollado originalmente para apoyar la distribución del proyecto de motor de búsqueda &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[&lt;/ins&gt;Nutch&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]]&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Características ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Características ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Apache MapReduce es un poderoso marco para procesar grandes conjuntos distribuidos de datos estructurados o no estructurados en un clúster Hadoop. Entre sus características están:&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Apache &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&gt;MapReduce&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''' &lt;/ins&gt;es un poderoso marco para procesar grandes conjuntos distribuidos de datos estructurados o no estructurados en un clúster Hadoop. Entre sus características están:&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Su capacidad para realizar el procesamiento a través de un clúster entero de nodos, con cada nodo procesando sus datos locales. &amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Su capacidad para realizar el procesamiento a través de un clúster entero de nodos, con cada nodo procesando sus datos locales. &amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MapReduce abstrae la complejidad de la programación distribuida, permitiendo a los programadores describir el procesamiento que les gustaría realizar en términos de una función de mapa y una función de reducción. En el momento de la ejecución, durante la fase de mapa, varios nodos en el clúster, llamados mapeadores, leen en datos crudos locales en pares clave-valor. A esto le sigue una fase de ordenación y aleatorización, en la que cada mapeador ordena sus resultados mediante teclas y remite los rangos de teclas a otros nodos del grupo, llamados reductores. Finalmente, en la fase de reducción, los reductores analizan los datos de las claves que pasaron de los mapeadores. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&gt;MapReduce&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''' &lt;/ins&gt;abstrae la complejidad de la programación distribuida, permitiendo a los programadores describir el procesamiento que les gustaría realizar en términos de una función de mapa y una función de reducción. En el momento de la ejecución, durante la fase de mapa, varios nodos en el clúster, llamados mapeadores, leen en datos crudos locales en pares clave-valor. A esto le sigue una fase de ordenación y aleatorización, en la que cada mapeador ordena sus resultados mediante teclas y remite los rangos de teclas a otros nodos del grupo, llamados reductores. Finalmente, en la fase de reducción, los reductores analizan los datos de las claves que pasaron de los mapeadores. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MapReduce v1, incluido en todas las versiones de MapR Distribution, tiene dos propósitos en el clúster de Hadoop. En primer lugar, MapReduce actúa como gestor de recursos para los nodos del clúster Hadoop. Emplea un JobTracker para dividir un trabajo en múltiples tareas, distribuir y supervisar su progreso a uno o más TaskTrackers, que realizan el trabajo en paralelo. Como gestor de recursos, es un componente clave del clúster, que sirve como plataforma para muchas aplicaciones Hadoop de nivel superior, incluyendo Pig (link) y Hive (enlace). &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MapReduce v1, incluido en todas las versiones de MapR Distribution, tiene dos propósitos en el clúster de Hadoop. En primer lugar, MapReduce actúa como gestor de recursos para los nodos del clúster Hadoop. Emplea un JobTracker para dividir un trabajo en múltiples tareas, distribuir y supervisar su progreso a uno o más TaskTrackers, que realizan el trabajo en paralelo. Como gestor de recursos, es un componente clave del clúster, que sirve como plataforma para muchas aplicaciones Hadoop de nivel superior, incluyendo Pig (link) y Hive (enlace). &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*'''MapReduce''', sirve como un motor de procesamiento de datos, la ejecución de puestos de trabajo que se expresan con el mapa y reducir la semántica. &amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*'''MapReduce''', sirve como un motor de procesamiento de datos, la ejecución de puestos de trabajo que se expresan con el mapa y reducir la semántica. &amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Comenzando con la versión MapR 4.0, MapR incluye MapReduce v2 además de la v1. MapReduce v2 fue rediseñado para funcionar sólo como un motor de procesamiento de datos, haciendo girar la funcionalidad del gestor de recursos en un nuevo componente llamado YARN (Yet Another Resource Negotiator) ( link ). Antes de esta división, las aplicaciones de nivel superior que requerían acceso a los recursos de Hadoop tenían que expresar sus trabajos usando mapa y reducir la semántica, con cada trabajo pasando por el mapa, ordenar, mezclar, reducir procesos. Esto no era adecuado para algunos tipos de trabajos que no encajaban bien en el paradigma de MapReduce, ya sea porque requerían tiempos de respuesta más rápidos de lo que permitiría un ciclo MapReduce completo, o porque requerían un procesamiento más complejo que el que no podía expresarse en MapReduce único Trabajos, como el procesamiento de gráficos. Con YARN, los clústeres Hadoop se vuelven mucho más versátiles, permitiendo que el mismo clúster se utilice tanto para procesamiento clásico de MapReduce por lotes como para trabajos interactivos como [[SQL]]. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Comenzando con la versión MapR 4.0, MapR incluye MapReduce v2 además de la v1. MapReduce v2 fue rediseñado para funcionar sólo como un motor de procesamiento de datos, haciendo girar la funcionalidad del gestor de recursos en un nuevo componente llamado YARN (Yet Another Resource Negotiator) ( link ). Antes de esta división, las aplicaciones de nivel superior que requerían acceso a los recursos de Hadoop tenían que expresar sus trabajos usando mapa y reducir la semántica, con cada trabajo pasando por el mapa, ordenar, mezclar, reducir procesos. Esto no era adecuado para algunos tipos de trabajos que no encajaban bien en el paradigma de MapReduce, ya sea porque requerían tiempos de respuesta más rápidos de lo que permitiría un ciclo MapReduce completo, o porque requerían un procesamiento más complejo que el que no podía expresarse en MapReduce único Trabajos, como el procesamiento de gráficos. Con &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[&lt;/ins&gt;YARN&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]]&lt;/ins&gt;, los clústeres Hadoop se vuelven mucho más versátiles, permitiendo que el mismo clúster se utilice tanto para procesamiento clásico de MapReduce por lotes como para trabajos interactivos como [[SQL]]. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Entradas y salidas&amp;#160; ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Entradas y salidas&amp;#160; ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;El [[framework]] '''MapReduce''' opera exclusivamente con pares &amp;lt;key, value&amp;gt; , es decir, el framework visualiza la entrada al trabajo como un conjunto de pares &amp;lt;key, value&amp;gt; y produce un conjunto de pares &amp;lt;key, value&amp;gt; como salida del Trabajo, concebible de diversos tipos. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;El [[framework]] '''MapReduce''' opera exclusivamente con pares &amp;lt;key, value&amp;gt; , es decir, el &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[&lt;/ins&gt;framework&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]] &lt;/ins&gt;visualiza la entrada al trabajo como un conjunto de pares &amp;lt;key, value&amp;gt; y produce un conjunto de pares &amp;lt;key, value&amp;gt; como salida del Trabajo, concebible de diversos tipos. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;La clave y las clases de valor tienen que ser serializable por el marco y por lo tanto, la necesidad de implementar la interfaz de escritura. Además, las clases clave tienen que implementar la interfaz WritableComparable para facilitar la clasificación por el marco. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;La clave y las clases de valor tienen que ser serializable por el marco y por lo tanto, la necesidad de implementar la interfaz de escritura. Además, las clases clave tienen que implementar la interfaz WritableComparable para facilitar la clasificación por el marco. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Tipos de entrada y salida de un trabajo MapReduce: &amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Tipos de entrada y salida de un trabajo MapReduce: &amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l73&quot; &gt;Línea 73:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 72:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Se considera que ha habido un final de las tareas cuando este control se ha devuelto al usuario. Las salidas se ditribuyen en un fichero completo, o en su defecto se reparten en R ficheros. Estos R ficheros pueden ser la entrada de otro MapReduce o puede ser procesado por cualquier otro programa que necesite estos datos.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Se considera que ha habido un final de las tareas cuando este control se ha devuelto al usuario. Las salidas se ditribuyen en un fichero completo, o en su defecto se reparten en R ficheros. Estos R ficheros pueden ser la entrada de otro MapReduce o puede ser procesado por cualquier otro programa que necesite estos datos.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Combinador (Agregadores locales)===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Combinador (Agregadores locales) ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;En un entorno de clusterización, uno de las límitaciones se encuentra en el transporte de grandes ficheros entre ordenadores que debido a lo limitado de su ancho de banda. En el framework MapReduce la función map() escribe en una memoria intermedia de caracter local, como puede ser un disco duro. La información que se escribe en local es agregada y ordenada por una función agregadora encargada de realizar esta operación. Los valores ordenados son de la forma [k, [v1, v2, v3,] ..., vn]]. De esta forma la función reduce() recibe una lista de valores asociados a una única clave procedente del combinador. Debido a que la latencia de red de ordenadores, y de sus discos suele ser mayor que cualquier otra de las operaciones, cualquier reducción en la cantidad de datos intermedios incrementará la eficiencia de los algoritmos. En '''MapReduce''', cualquier agregación local de los resultados intermedios causa una mejora real de la eficiencia global.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;En un entorno de clusterización, uno de las límitaciones se encuentra en el transporte de grandes ficheros entre ordenadores que debido a lo limitado de su ancho de banda. En el framework MapReduce la función map() escribe en una memoria intermedia de caracter local, como puede ser un disco duro. La información que se escribe en local es agregada y ordenada por una función agregadora encargada de realizar esta operación. Los valores ordenados son de la forma [k, [v1, v2, v3,] ..., vn]]. De esta forma la función reduce() recibe una lista de valores asociados a una única clave procedente del combinador. Debido a que la latencia de red de ordenadores, y de sus discos suele ser mayor que cualquier otra de las operaciones, cualquier reducción en la cantidad de datos intermedios incrementará la eficiencia de los algoritmos. En '''MapReduce''', cualquier agregación local de los resultados intermedios causa una mejora real de la eficiencia global.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Es por esta razón por la que muchas ditribuciones oficiales de MapReduce suelen incluir operaciones de agregación en local, mediante el uso de funciones capaces de agregar datos localmente. Evitando, o reduciendo en la medida de lo posible el movimiento de grandes ficheros. Bien sea añadidas a las funciones map(), o a los agregadores locales.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Es por esta razón por la que muchas ditribuciones oficiales de MapReduce suelen incluir operaciones de agregación en local, mediante el uso de funciones capaces de agregar datos localmente. Evitando, o reduciendo en la medida de lo posible el movimiento de grandes ficheros. Bien sea añadidas a las funciones map(), o a los agregadores locales.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l87&quot; &gt;Línea 87:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 86:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Conteo de palabras===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Conteo de palabras===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Este ejemplo de MAPREDUCE es un proceso para contar las apariciones de cada palabra en un conjunto de documentos:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Este ejemplo de MAPREDUCE es un proceso para contar las apariciones de cada palabra en un conjunto de documentos:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; map(String name, String document):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; map(String name, String document):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; // clave: nombre del documento&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; // clave: nombre del documento&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l105&quot; &gt;Línea 105:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 104:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Multiplicación de una matriz por un vector===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Multiplicación de una matriz por un vector===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Los ejemplos de algebra lineal para operaciones de matrices son los más adecuados por la idonidad del framework en estos casos. Supongamos que tenemos una matriz cuadrada M de tamaño nxn. Al elemento ubicado en la fila i y columna j le denominamos mij. Supongamos que tenemos un vector v de tal forma que en la posición j se tiene el elemento vj. De esta forma la resultante de la multiplicación entre la matriz M y el vector v será un vector x de longitud n, de tal forma que el elemento xi es tal que:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Los ejemplos de algebra lineal para operaciones de matrices son los más adecuados por la idonidad del framework en estos casos. Supongamos que tenemos una matriz cuadrada M de tamaño nxn. Al elemento ubicado en la fila i y columna j le denominamos mij. Supongamos que tenemos un vector v de tal forma que en la posición j se tiene el elemento vj. De esta forma la resultante de la multiplicación entre la matriz M y el vector v será un vector x de longitud n, de tal forma que el elemento xi es tal que:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Esta operación se realiza sin problema alguno para matrices de varios miles de elementos, siendo costoso para varios millones. El problema de su computación proviene cuando se pretende realizar con centenares de billones. Es por esta razón por la que se asume en la aplicación de MAPREDUCE que n es del orden de 1012. La función map () en este caso toma una fila i de la matriz y completo el vector v para formar pares: (i, mijvj). Es decir de la forma (1, m11v1), (1, m12v2), (1, mi3v3) ... (1, mijvj).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Esta operación se realiza sin problema alguno para matrices de varios miles de elementos, siendo costoso para varios millones. El problema de su computación proviene cuando se pretende realizar con centenares de billones. Es por esta razón por la que se asume en la aplicación de MAPREDUCE que n es del orden de 1012. La función map () en este caso toma una fila i de la matriz y completo el vector v para formar pares: (i, mijvj). Es decir de la forma (1, m11v1), (1, m12v2), (1, mi3v3) ... (1, mijvj).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; map(Vector rowMatrix, Vector vector):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; map(Vector rowMatrix, Vector vector):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l129&quot; &gt;Línea 129:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 128:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Componentes==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Componentes==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MapReduce se compone de varios componentes, incluyendo: &amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MapReduce se compone de varios componentes, incluyendo: &amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*JobTracker: el nodo maestro que gestiona todos los trabajos y recursos de un clúster &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[&lt;/ins&gt;JobTracker&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]]&lt;/ins&gt;: el nodo maestro que gestiona todos los trabajos y recursos de un clúster&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*TaskTrackers: agentes desplegados en cada máquina del clúster para ejecutar el mapa y reducir las tareas &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[&lt;/ins&gt;TaskTrackers&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]]&lt;/ins&gt;: agentes desplegados en cada máquina del clúster para ejecutar el mapa y reducir las tareas&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*JobHistoryServer &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;- un &lt;/del&gt;componente que rastrea los trabajos terminados, y se despliega típicamente como una función separada o con JobTracker &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[&lt;/ins&gt;JobHistoryServer&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]]: &lt;/ins&gt;componente que rastrea los trabajos terminados, y se despliega típicamente como una función separada o con &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[&lt;/ins&gt;JobTracker&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]]. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Localidad&amp;#160; ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Localidad&amp;#160; ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MapReduce se construye en la parte superior de GFS, el sistema de archivos de Google. Los archivos de entrada y salida se almacenan en GFS. Los trabajadores de MapReduce se ejecutan en servidores chunkservers de GFS. El maestro MapReduce intenta programar un trabajador de mapa en una de las máquinas que contiene una copia del fragmento de entrada que necesita para procesar. Alternativamente, MapReduce puede leer o escribir en BigTable. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&gt;MapReduce&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''' &lt;/ins&gt;se construye en la parte superior de &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[&lt;/ins&gt;GFS&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]]&lt;/ins&gt;, el sistema de archivos de &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[&lt;/ins&gt;Google&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]]&lt;/ins&gt;. Los archivos de entrada y salida se almacenan en GFS. Los trabajadores de MapReduce se ejecutan en servidores chunkservers de GFS. El maestro MapReduce intenta programar un trabajador de mapa en una de las máquinas que contiene una copia del fragmento de entrada que necesita para procesar. Alternativamente, MapReduce puede leer o escribir en BigTable. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Yaneidis.jc.scu</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=MapReduce&amp;diff=2804540&amp;oldid=prev</id>
		<title>Jacqueline GT: /* Fuentes */</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=MapReduce&amp;diff=2804540&amp;oldid=prev"/>
		<updated>2017-02-13T14:27:11Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Fuentes&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 14:27 13 feb 2017&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l140&quot; &gt;Línea 140:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 140:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Fuentes ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Fuentes ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*https://es.wikipedia.org/wiki/MapReduce&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*https://es.wikipedia.org/wiki/MapReduce&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*https://www.tutorialspoint.com/es/hadoop/hadoop_mapreduce.htm&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*https://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*https://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*http://searchcloudcomputing.techtarget.com/definition/MapReduce (en inglés)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*https://www.cs.rutgers.edu/~pxk/417/notes/content/mapreduce.html (en inglés)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*https://www.mapr.com/products/product-overview/mapreduce (en inglés)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Software]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Software]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jacqueline GT</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=MapReduce&amp;diff=2803153&amp;oldid=prev</id>
		<title>Yaneidis.jc.scu: Página creada con «{{Desarrollo}} {{Ficha Software |nombre= MapReduce |familia= |imagen= |tamaño= |descripción= |imagen2= |tamaño2= |descripción2= |creador=  |desarrollador= Doug Cutting...»</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=MapReduce&amp;diff=2803153&amp;oldid=prev"/>
		<updated>2017-02-09T23:02:38Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «{{Desarrollo}} {{Ficha Software |nombre= MapReduce |familia= |imagen= |tamaño= |descripción= |imagen2= |tamaño2= |descripción2= |creador=  |desarrollador= Doug Cutting...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Desarrollo}}&lt;br /&gt;
{{Ficha Software&lt;br /&gt;
|nombre= MapReduce&lt;br /&gt;
|familia=&lt;br /&gt;
|imagen=&lt;br /&gt;
|tamaño=&lt;br /&gt;
|descripción=&lt;br /&gt;
|imagen2=&lt;br /&gt;
|tamaño2=&lt;br /&gt;
|descripción2=&lt;br /&gt;
|creador= &lt;br /&gt;
|desarrollador= Doug Cutting&lt;br /&gt;
|diseñador=&lt;br /&gt;
|modelo de desarrollo=&lt;br /&gt;
|lanzamiento inicial=  &lt;br /&gt;
|versiones=&lt;br /&gt;
|última versión estable= &lt;br /&gt;
|género= &lt;br /&gt;
|sistemas operativos= &lt;br /&gt;
|idioma= &lt;br /&gt;
|licencia= &lt;br /&gt;
|premios=&lt;br /&gt;
|web= &lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
'''MapReduce''', es un modelo, [[framework]] de programación utilizado para dar soporte a la computación paralela sobre grandes colecciones de datos en grupos de computadoras y al commodity computing. Su nombre está inspirado en los nombres de dos importantes métodos, macros o funciones en programación funcional: Map y Reduce. &lt;br /&gt;
'''MapReduce''' ha sido adoptado mundialmente, ya que existe una implementación [[OpenSource]] denominada [[Hadoop]]. Su desarrollo fue liderado inicialmente por [[Yahoo]] y actualmente lo realiza el proyecto [[Apache]]. Se han escrito implementaciones de bibliotecas de '''MapReduce''' en diversos [[lenguajes de programación|lenguaje de programación]] como [[C++]], [[Java]] y [[Python]]. &amp;lt;br /&amp;gt;&lt;br /&gt;
MapReduce consiste en un solo [[JobTracker]] maestro y un [[TaskTracker]] esclavo por nodo de clúster. El maestro es responsable de programar las tareas de los componentes de los trabajos en los esclavos, supervisarlos y volver a ejecutar las tareas fallidas. Los esclavos ejecutan las tareas según las instrucciones del maestro. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Historia ==&lt;br /&gt;
Las primeras implementaciones de Google necesitaban realizar operaciones de multiplicación de grandes matrices para calcular el PageRank, o lo que es lo mismo el ranking de páginas en una búsqueda. De esta forma se hizo popular '''MapReduce''' como un método de cálculo de álgebra lineal. Por tratar grandes colecciones de datos, llevó a crear algoritmos y frameworks capaces de poder procesar terabytes de información. Una de las primeras aplicaciones capaces de programar MapReduce fue implementado inicialmente en [[Hadoop]], diseñado inicialmente por Doug Cutting, que lo nombró así por su elefante de juguete. Fue desarrollado originalmente para apoyar la distribución del proyecto de motor de búsqueda Nutch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Características ==&lt;br /&gt;
Apache MapReduce es un poderoso marco para procesar grandes conjuntos distribuidos de datos estructurados o no estructurados en un clúster Hadoop. Entre sus características están:&amp;lt;br /&amp;gt;&lt;br /&gt;
*Su capacidad para realizar el procesamiento a través de un clúster entero de nodos, con cada nodo procesando sus datos locales. &amp;lt;br /&amp;gt;&lt;br /&gt;
MapReduce abstrae la complejidad de la programación distribuida, permitiendo a los programadores describir el procesamiento que les gustaría realizar en términos de una función de mapa y una función de reducción. En el momento de la ejecución, durante la fase de mapa, varios nodos en el clúster, llamados mapeadores, leen en datos crudos locales en pares clave-valor. A esto le sigue una fase de ordenación y aleatorización, en la que cada mapeador ordena sus resultados mediante teclas y remite los rangos de teclas a otros nodos del grupo, llamados reductores. Finalmente, en la fase de reducción, los reductores analizan los datos de las claves que pasaron de los mapeadores. &lt;br /&gt;
MapReduce v1, incluido en todas las versiones de MapR Distribution, tiene dos propósitos en el clúster de Hadoop. En primer lugar, MapReduce actúa como gestor de recursos para los nodos del clúster Hadoop. Emplea un JobTracker para dividir un trabajo en múltiples tareas, distribuir y supervisar su progreso a uno o más TaskTrackers, que realizan el trabajo en paralelo. Como gestor de recursos, es un componente clave del clúster, que sirve como plataforma para muchas aplicaciones Hadoop de nivel superior, incluyendo Pig (link) y Hive (enlace). &lt;br /&gt;
&lt;br /&gt;
*'''MapReduce''', sirve como un motor de procesamiento de datos, la ejecución de puestos de trabajo que se expresan con el mapa y reducir la semántica. &amp;lt;br /&amp;gt;&lt;br /&gt;
Comenzando con la versión MapR 4.0, MapR incluye MapReduce v2 además de la v1. MapReduce v2 fue rediseñado para funcionar sólo como un motor de procesamiento de datos, haciendo girar la funcionalidad del gestor de recursos en un nuevo componente llamado YARN (Yet Another Resource Negotiator) ( link ). Antes de esta división, las aplicaciones de nivel superior que requerían acceso a los recursos de Hadoop tenían que expresar sus trabajos usando mapa y reducir la semántica, con cada trabajo pasando por el mapa, ordenar, mezclar, reducir procesos. Esto no era adecuado para algunos tipos de trabajos que no encajaban bien en el paradigma de MapReduce, ya sea porque requerían tiempos de respuesta más rápidos de lo que permitiría un ciclo MapReduce completo, o porque requerían un procesamiento más complejo que el que no podía expresarse en MapReduce único Trabajos, como el procesamiento de gráficos. Con YARN, los clústeres Hadoop se vuelven mucho más versátiles, permitiendo que el mismo clúster se utilice tanto para procesamiento clásico de MapReduce por lotes como para trabajos interactivos como [[SQL]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Entradas y salidas  ==&lt;br /&gt;
El [[framework]] '''MapReduce''' opera exclusivamente con pares &amp;lt;key, value&amp;gt; , es decir, el framework visualiza la entrada al trabajo como un conjunto de pares &amp;lt;key, value&amp;gt; y produce un conjunto de pares &amp;lt;key, value&amp;gt; como salida del Trabajo, concebible de diversos tipos. &lt;br /&gt;
La clave y las clases de valor tienen que ser serializable por el marco y por lo tanto, la necesidad de implementar la interfaz de escritura. Además, las clases clave tienen que implementar la interfaz WritableComparable para facilitar la clasificación por el marco. &lt;br /&gt;
Tipos de entrada y salida de un trabajo MapReduce: &amp;lt;br /&amp;gt;&lt;br /&gt;
(Entrada) &amp;lt;k1, v1&amp;gt; -&amp;gt; mapa -&amp;gt; &amp;lt;k2, v2&amp;gt; -&amp;gt; combinar -&amp;gt; &amp;lt;k2, v2&amp;gt; -&amp;gt; reducir -&amp;gt; &amp;lt;k3, v3&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Funciones  ==&lt;br /&gt;
*Función Map()&amp;lt;br /&amp;gt;&lt;br /&gt;
Map toma uno de estos pares de datos con un tipo en un dominio de datos, y devuelve una lista de pares en un dominio diferente:&amp;lt;br /&amp;gt;&lt;br /&gt;
Map(k1,v1) -&amp;gt; list(k2,v2).&amp;lt;br /&amp;gt;&lt;br /&gt;
La función map(): se encarga del mapeo y es aplicada en paralelo para cada ítem en la entrada de datos. Esto produce una lista de pares (k2,v2) por cada llamada. Después de eso, el [[framework]] de '''MapReduce''' junta todos los pares con la misma clave de todas las listas y los agrupa, creando un grupo por cada una de las diferentes claves generadas. Desde el punto de vista arquitectural el nodo master toma el input, lo divide en pequeñas piezas o problemas de menor identidad, y los distribuye a los denominados worker nodes. Un worker node puede volver a sub-dividir, dando lugar a una estructura arbórea. El worker node procesa el problema y pasa la respuesta al nodo maestro.&lt;br /&gt;
*Función Reduce()&amp;lt;br /&amp;gt;&lt;br /&gt;
La función reduce es aplicada en paralelo para cada grupo, produciendo una colección de valores para cada dominio:&lt;br /&gt;
Reduce(k2, list (v2)) -&amp;gt; list(v3). &amp;lt;br /&amp;gt;&lt;br /&gt;
La función reduce(): cada llamada a Reduce típicamente produce un valor v3 o una llamada vacía, aunque una llamada puede retornar más de un valor. El retorno de todas esas llamadas se recoge como la lista de resultado deseado.&lt;br /&gt;
Por lo tanto, el [[framework]] '''MapReduce''' transforma una lista de pares (clave, valor) en una lista de valores. Este comportamiento es diferente de la combinación &amp;quot;map and reduce&amp;quot; de programación funcional, que acepta una lista arbitraria de valores y devuelve un valor único que combina todos los valores devueltos por mapa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arquitectura del MapReduce ==&lt;br /&gt;
La función map() se ejecuta de forma distribuida a lo largo de varias máquinas. Los datos de entrada, procedentes por regla general de un gran archivo (fichero), se dividen en un conjunto de M particiones de entrada de generalmente 16 megabytes. Estas particiones pueden ser procesadas en diversas máquinas. En una invocación de MapReduce suelen ocurrir varias operaciones:&amp;lt;br /&amp;gt;&lt;br /&gt;
*Se procede a dividir las entradas en M particiones de tamaño aproximado de 64 megabytes. El programa MapReduce se comienza a instanciar en las diversas máquinas del cluster. Por regla general, el número de instancias se configura en las aplicaciones.&lt;br /&gt;
*Una de las copias del programa es especial y toma el papel de &amp;quot;maestro&amp;quot;. El resto de copias se denominan como &amp;quot;workers&amp;quot; y reciben la asignación de sus tareas desde el master. Se considera que existen una cantidad de M map() tareas y de R reduce(). El &amp;quot;maestro&amp;quot; se encarga de recopilar &amp;quot;workers&amp;quot; en reposo (es decir sin tarea asignada) y le asignará una tarea específica de map() o de reduce(). Un worker sólo puede tener tres estados: reposo, trabajando, completo.&amp;lt;br /&amp;gt;&lt;br /&gt;
*Un worker que tenga asignada una tarea específica de map() tomará como entrada la partición que le corresponda. Se dedicará a parsear los pares (clave, valor) para crear una nueva pareja de salida, tal y como se especifica en su programación. Los pares clave y valor producidos por la función map() se almacenan como buffer en la memoria.&lt;br /&gt;
*Periódicamente, los pares clave-valor almacenados en el buffer se escriben en el disco local, repartidos en R regiones. Las regiones de estos pares clave-valor son pasados al master, que es responsable de redirigir a los &amp;quot;workers&amp;quot; que tienen tareas de reduce().&lt;br /&gt;
*Cuando un worker de tipo reduce es notificado por el &amp;quot;maestro&amp;quot; con la localización de una partición, éste emplea llamadas remotas para hacer lecturas de la información almacenada en los discos duros de los diversos workers de tipo map(). cuando un worker de tipo reduce() lee todos los datos intermedios, ordena las claves de tal modo que a se agrupan los datos encontrados que poseen la misma clave. El ordenamiento es necesario debido a que, por regla general, muchas claves de funciones map() diversas pueden ir a una misma función reduce(). En aquellos casos en los que la cantidad de datos intermedios sean muy grandes, se suele emplear un ordenamiento externo.&lt;br /&gt;
*El worker de tipo reduce() itera sobre el conjunto de valores ordenados intermedios, y lo hace por cada una de las claves únicas encontradas. Toma la clave y el conjunto de valores asociados a ella y se los pasa a la función reduce(). La salida de reduce() se añade al archivo (fichero) de salida de MapReduce.&lt;br /&gt;
*Cuando todas las tareas map() y reduce() se han completado, el &amp;quot;maestro&amp;quot; levanta al programa del usuario. Llegados a este punto la llamada MapReduce retorna el control al código de un usuario.&lt;br /&gt;
Se considera que ha habido un final de las tareas cuando este control se ha devuelto al usuario. Las salidas se ditribuyen en un fichero completo, o en su defecto se reparten en R ficheros. Estos R ficheros pueden ser la entrada de otro MapReduce o puede ser procesado por cualquier otro programa que necesite estos datos.&lt;br /&gt;
&lt;br /&gt;
=== Combinador (Agregadores locales)===&lt;br /&gt;
En un entorno de clusterización, uno de las límitaciones se encuentra en el transporte de grandes ficheros entre ordenadores que debido a lo limitado de su ancho de banda. En el framework MapReduce la función map() escribe en una memoria intermedia de caracter local, como puede ser un disco duro. La información que se escribe en local es agregada y ordenada por una función agregadora encargada de realizar esta operación. Los valores ordenados son de la forma [k, [v1, v2, v3,] ..., vn]]. De esta forma la función reduce() recibe una lista de valores asociados a una única clave procedente del combinador. Debido a que la latencia de red de ordenadores, y de sus discos suele ser mayor que cualquier otra de las operaciones, cualquier reducción en la cantidad de datos intermedios incrementará la eficiencia de los algoritmos. En '''MapReduce''', cualquier agregación local de los resultados intermedios causa una mejora real de la eficiencia global.&lt;br /&gt;
Es por esta razón por la que muchas ditribuciones oficiales de MapReduce suelen incluir operaciones de agregación en local, mediante el uso de funciones capaces de agregar datos localmente. Evitando, o reduciendo en la medida de lo posible el movimiento de grandes ficheros. Bien sea añadidas a las funciones map(), o a los agregadores locales.&lt;br /&gt;
&lt;br /&gt;
=== Tolerancia a Fallos ===&lt;br /&gt;
El mecanismo de MapReduce es tolerante a fallos cuando uno de los workers se ve sometido a un fallo. Como MapReduce se ha diseñado para procesos en los que se encuentran involucrados grandes tamaños de datos mediante el empleo de cientos o miles de ordenadores. Aún siendo la probabilidad de fallo baja, es muy posible que uno (o varios) de los workers quede desactivo precisamente por fallo de la máquina que le daba soporte. El &amp;quot;master&amp;quot; periódicamente hace ping a cada worker para comprobar su estatus.&lt;br /&gt;
Si no existe respuesta tras un cierto instante de espera, el master interpreta que el worker está desactivado. Cualquier tarea map() que ha sido completa por el worker regresa de inmediato a su estado de espera, y por lo tanto puede resultar elegible para su asignación en otros workers. De forma similar, cualquier función map() (o reduce) que se encuentre en progreso durante el fallo, se resetea a estado de reposo pudiendo ser elegida para su nueva re-asignación.&lt;br /&gt;
Las tareas de map() completados se vuelven a re-ejecutar ante un fallo debido en parte a que su salida se almacena en los discos locales de la máquina que falló, y por lo tanto se consideran inaccesibles. Las tareas reduce() completas no son necesarias volver a ser re-ejecutadas debido a que su salida se ha almacenado en el sistema global. cuando la tarea de map() se ejecuta por un worker A y luego por un worker B (debido principalmente a un fallo), en este caso todas las tareas reduce() son notificadas para que eliminen datos procedentes del worker A y acepten las del worker B. De esta forma la ejecucción de MapReduce es resiliente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ejemplos==&lt;br /&gt;
En la descripción de los ejemplos de uso de MAPREDUCE sólo es necesario describir en detalle como se implementan las operaciones de map() y de reduce() en cada caso. La literatura muestra ejemplos reiterados de conteo de palabras en un documento, de operaciones matriciales y de operaciones de consulta a bases de datos relacionales.&lt;br /&gt;
&lt;br /&gt;
=== Conteo de palabras===&lt;br /&gt;
Este ejemplo de MAPREDUCE es un proceso para contar las apariciones de cada palabra en un conjunto de documentos:&lt;br /&gt;
 map(String name, String document):&lt;br /&gt;
  // clave: nombre del documento&lt;br /&gt;
  // valor: contenido del documento&lt;br /&gt;
  for each word w in document:&lt;br /&gt;
    EmitIntermediate(w, 1);&lt;br /&gt;
La función map() en este caso divide un documento en palabras (es decir lo tokeniza) mediante el empleo de un simple analizador léxico, y emite una serie de tuplas de la foma (clave, valor) donde la clave es la palabra y el valor es &amp;quot;1&amp;quot;. Es decir, por ejemplo, del documento &amp;quot;La casa de la pradera&amp;quot; la función map retornaría: (&amp;quot;la&amp;quot;, &amp;quot;1&amp;quot;), (&amp;quot;casa&amp;quot;, &amp;quot;1&amp;quot;), (&amp;quot;de&amp;quot;, &amp;quot;1&amp;quot;), (&amp;quot;la&amp;quot;, &amp;quot;1&amp;quot;), (&amp;quot;pradera&amp;quot;, &amp;quot;1&amp;quot;).&lt;br /&gt;
 &lt;br /&gt;
 reduce(String word, Iterator partialCounts):&lt;br /&gt;
  // word: una palabra&lt;br /&gt;
  // partialCounts: una [[Iterador (patrón de diseño)|lista parcial]] para realizar cuentas agregadas&lt;br /&gt;
  int result = 0;&lt;br /&gt;
  for each v in partialCounts:&lt;br /&gt;
    result += ParseInt(v);&lt;br /&gt;
  Emit(result);&lt;br /&gt;
Aquí, cada documento es dividido en palabras, y cada palabra se cuenta con valor inicial &amp;quot;1&amp;quot; por la función Map, utilizando la palabra como el resultado clave. El framework reúne todos los pares con la misma clave y se alimenta a la misma llamada Reduce, por lo tanto, esta función sólo necesita la suma de todos los valores de su entrada para encontrar el total de las apariciones de esa palabra. En el ejemplo anterior (&amp;quot;la&amp;quot;, &amp;quot;1&amp;quot;) aparece dos veces debido a que la clave &amp;quot;la&amp;quot; tiene dos ocurrencias, el resto de claves sólo aparece una vez.&lt;br /&gt;
&lt;br /&gt;
=== Multiplicación de una matriz por un vector===&lt;br /&gt;
Los ejemplos de algebra lineal para operaciones de matrices son los más adecuados por la idonidad del framework en estos casos. Supongamos que tenemos una matriz cuadrada M de tamaño nxn. Al elemento ubicado en la fila i y columna j le denominamos mij. Supongamos que tenemos un vector v de tal forma que en la posición j se tiene el elemento vj. De esta forma la resultante de la multiplicación entre la matriz M y el vector v será un vector x de longitud n, de tal forma que el elemento xi es tal que:&lt;br /&gt;
Esta operación se realiza sin problema alguno para matrices de varios miles de elementos, siendo costoso para varios millones. El problema de su computación proviene cuando se pretende realizar con centenares de billones. Es por esta razón por la que se asume en la aplicación de MAPREDUCE que n es del orden de 1012. La función map () en este caso toma una fila i de la matriz y completo el vector v para formar pares: (i, mijvj). Es decir de la forma (1, m11v1), (1, m12v2), (1, mi3v3) ... (1, mijvj).&lt;br /&gt;
 map(Vector rowMatrix, Vector vector):&lt;br /&gt;
  // clave: i -&amp;gt; índice del vector&lt;br /&gt;
  // valor: producto de m&amp;lt;sub&amp;gt;ij&amp;lt;/sub&amp;gt; por v&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;.&lt;br /&gt;
  for each position i in vector:&lt;br /&gt;
    EmitIntermediate(i, value);&lt;br /&gt;
La función reduce() en este caso sólo tiene que colectar los pares que poseen la misma clave i y sumarlos.&lt;br /&gt;
 &lt;br /&gt;
 reduce(String word, Iterator partialCounts):&lt;br /&gt;
  // word: una palabra&lt;br /&gt;
  // partialCounts: una [[Iterador (patrón de diseño)|lista parcial]] para realizar cuentas agregadas&lt;br /&gt;
  int result = 0;&lt;br /&gt;
  for each v in partialCounts:&lt;br /&gt;
    result += ParseInt(v);&lt;br /&gt;
  Emit(result);&lt;br /&gt;
&lt;br /&gt;
Contribuyente (s): Stephen J. Bigelow y Mark C. Chu-Carroll &lt;br /&gt;
MapReduce es un componente básico del framework de software Apache Hadoop . &lt;br /&gt;
Hadoop permite el procesamiento resiliente y distribuido de conjuntos masivos de datos no estructurados a través de clusters de ordenadores de productos básicos, en los que cada nodo del clúster incluye su propio almacenamiento. MapReduce sirve dos funciones esenciales: Distribuye el trabajo a varios nodos dentro del cluster o mapa y organiza y reduce los resultados de cada nodo en una respuesta cohesiva a una consulta. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Componentes==&lt;br /&gt;
MapReduce se compone de varios componentes, incluyendo: &amp;lt;br /&amp;gt;&lt;br /&gt;
*JobTracker: el nodo maestro que gestiona todos los trabajos y recursos de un clúster &lt;br /&gt;
*TaskTrackers: agentes desplegados en cada máquina del clúster para ejecutar el mapa y reducir las tareas &lt;br /&gt;
*JobHistoryServer - un componente que rastrea los trabajos terminados, y se despliega típicamente como una función separada o con JobTracker &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Localidad  ==&lt;br /&gt;
MapReduce se construye en la parte superior de GFS, el sistema de archivos de Google. Los archivos de entrada y salida se almacenan en GFS. Los trabajadores de MapReduce se ejecutan en servidores chunkservers de GFS. El maestro MapReduce intenta programar un trabajador de mapa en una de las máquinas que contiene una copia del fragmento de entrada que necesita para procesar. Alternativamente, MapReduce puede leer o escribir en BigTable. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fuentes ==&lt;br /&gt;
*https://es.wikipedia.org/wiki/MapReduce&lt;br /&gt;
*https://www.tutorialspoint.com/es/hadoop/hadoop_mapreduce.htm&lt;br /&gt;
*https://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html&lt;br /&gt;
*http://searchcloudcomputing.techtarget.com/definition/MapReduce (en inglés)&lt;br /&gt;
*https://www.cs.rutgers.edu/~pxk/417/notes/content/mapreduce.html (en inglés)&lt;br /&gt;
*https://www.mapr.com/products/product-overview/mapreduce (en inglés)&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Yaneidis.jc.scu</name></author>
		
	</entry>
</feed>