jueves, 27 de junio de 2019

Libro Java Code Geeks

Download IT Guides!

 
Elasticsearch is a search engine based on Lucene. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents. Elasticsearch is developed in Java and is released as open source under the terms of the Apache License. Elasticsearch is the most popular enterprise search engine followed by Apache Solr, also based on Lucene. Elasticsearch can be used to search all kinds of documents. It provides scalable search, has near real-time search, and supports multitenancy. Elasticsearch is distributed, which means that indices can be divided into shards and each shard can have zero or more replicas. Each node hosts one or more shards, and acts as a coordinator to delegate operations to the correct shard(s). Rebalancing and routing are done automatically.
 
 
Docker is the world's leading software containerization platform. Docker containers wrap a piece of software in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries ? anything that can be installed on a server. This guarantees that the software will always run the same, regardless of its environment. Docker provides an additional layer of abstraction and automation of operating-system-level virtualization on Linux. Docker uses the resource isolation features of the Linux kernel such as cgroups and kernel namespaces, and a union-capable file system such as OverlayFS and others to allow independent "containers" to run within a single Linux instance, avoiding the overhead of starting and maintaining virtual machines.
 
 
Delve into the world of Git version source control with this compact guide that discusses the features of this popular control system! Git is, without any doubt, the most popular version control system. Ironically, there are other version control systems easier to learn and to use, but, despite that, Git is the favorite option for developers, which is quite clarifying about the powerfulness of Git. In this guide, we will cover all the topics needed to know in order to use Git properly, from explaining what is it and how it differs from other tools, to its usage, covering also advanced topics and practices that can suppose an added value to the process of version controlling.
 
 
The Spring Framework is an open-source application framework and inversion of control container for the Java platform. The framework's core features can be used by any Java application, but there are extensions for building web applications on top of the Java EE platform. Although the framework does not impose any specific programming model, it has become popular in the Java community as an alternative to, replacement for, or even addition to the Enterprise JavaBeans (EJB) model. In this 200 page ebook, we provide a compilation of Spring Framework tutorials that will help you kick-start your own programming projects. 
 

martes, 25 de junio de 2019

Primer proyecto con Haskell y cabal.


Antes que nada vamos a instalar cabal, como uso linux (derivado de debian) lo puedo instalar con apt :

sudo add-apt-repository -y ppa:hvr/ghc
sudo apt-get update
sudo apt-get install -y cabal-install ghc

Probamos cabal :

$ cabal --version

Hacemos un Proyecto:

$ cabal init

Este comando nos preguntará datos de forma interactiva, como nombre de proyecto, versión, autor, etc ...

Si deseamos hacer un proyecto haskell ejecutable:

$ cabal init -n --is-executable
$ cabal run

Dejo link: https://www.haskell.org/cabal/



INFRAESTRUCTURA DEFINIDA POR SOFTWARE PARA DUMMIES


Con la aceleración de la transformación digital en todos los sectores, prácticamente toda iniciativa empresarial moderna se ha convertido en un proyecto de TI, y la TI es ahora más crucial que nunca para el éxito de la empresa. Las empresas deben sacar al mercado productos y servicios innovadores con mayor rapidez que la competencia, lo que a su vez significa que la TI debe proporcionar, de forma rápida y continuada, aplicaciones y servicios que fomenten la productividad y la eficiencia.

Dejo link: https://www.vmware.com/es/learn/48842_DCMA-0468_REG.html?src=sp_5cd9beaede079&cid=7012H000001dBV2QAM&fbclid=IwAR18r3jzCVFvX64Q8YpFPk6P8tPiXT_HwJAXIrsesrAmAD6cl7ujSqdLKZs

domingo, 23 de junio de 2019

Tipos en Cassandra


Veamos los distintos tipos que tenemos disponibles para nuestros valores. Como hemos visto en nuestra exploración hasta ahora, cada columna de nuestra tabla es de un tipo específico.

CQL admite un conjunto flexible de tipos de datos, incluidos tipos de caracteres y numéricos simples, colecciones y tipos definidos por el usuario. Describiremos estos tipos de datos y proporcionaremos algunos ejemplos de cómo podrían usarse para aprender a tomar la decisión correcta para los diferentes modelos de datos.

int: 32-bit entero con signo como java.
bigint: 64-bit entero grande con signo equivalente a long de Java
smallint: 16-bit entero con signo equivalente a short de Java
tinyint: 8-bit entero con signo
varint: A variable precision signed integer (equivalent to java.math.BigInteger )
float: 32-bit IEEE-754 equivalente a float de java
double: 64-bit IEEE-754 equivalente a double de Java
decimal: equivalente a java.math.BigDecimal

Si bien los tipos enumerados son comunes en muchos lenguajes, no hay un equivalente directo en CQL. Una práctica común es almacenar valores enumerados como cadenas. Por ejemplo, usando el método Enum.name() para convertir un valor enumerado en una Cadena para escribir en Cassandra como texto, y el método Enum.valueOf() para volver a convertir el texto al valor enumerado.

CQL proporciona dos tipos de datos para representar texto, uno de los cuales ya hemos utilizado bastante :

text , varchar : cadena de caracteres UTF-8
ascii : una cadena de ascii

UTF-8 es el estándar de texto más reciente y más utilizado y es compatible con la internacionalización, por lo que recomendamos utilizar texto sobre ascii al crear tablas para nuevos datos. El tipo de ascii es más útil si está tratando con datos heredados que están en formato ASCII.

Cassandra nos provee tipos para representar el tiempo :

timestamp : Si bien señalamos anteriormente que cada columna tiene una marca de tiempo que indica cuándo se modificó por última vez, también puede usar una marca de tiempo como el valor de una columna en sí. El tiempo se puede codificar como un entero con signo de 64 bits, pero normalmente es mucho más útil ingresar una marca de tiempo utilizando uno de los varios formatos de fecha ISO 8601 compatibles.

date, time : hasta Cassandra 2.1 solo tenían el tipo timestamp para representar los tiempos, que incluía tanto una fecha como una hora del día. La versión 2.2 introdujo los tipos de fecha y hora que permitieron que estos se representaran de forma independiente; es decir, una fecha sin una hora y una hora del día sin referencia a una fecha específica. Al igual que con ltimestamp, estos tipos admiten formatos ISO 8601.
Aunque hay nuevos tipos de java.time disponibles en Java 8, el tipo de fecha se asigna a un tipo personalizado en Cassandra para preservar la compatibilidad con JDK más antiguos. El tipo de tiempo se asigna a una Java long que representa el número de nanosegundos desde la medianoche.

Veamos el tipo de datos para las claves:

uuid : El identificador único universal (UUID) de RA es un valor de 128 bits en el que los bits se ajustan a uno de varios tipos, de los cuales los más utilizados comúnmente se conocen como Tipo 1 y Tipo 4. El tipo de uuid CQL es un UUID de Tipo 4, que se basa enteramente en números aleatorios. Los UUID se representan normalmente como secuencias separadas por guiones de dígitos hexadecimales. El tipo uuid se usa a menudo como una clave sustituta, ya sea por sí misma o en combinación con otros valores. Debido a que los UUID son de una longitud finita, no están absolutamente garantizados para ser únicos. Sin embargo, la mayoría de los sistemas operativos y lenguajes de programación proporcionan utilidades para generar ID que proporcionan una singularidad adecuada, y cqlsh también lo hace. Puede obtener un valor UUID de Tipo 4 a través de la función uuid () y usar este valor en INSERT o UPDATE.

timeuuid : Este es un UUID de Tipo 1, que se basa en la dirección MAC de la computadora, la hora del sistema y un número de secuencia utilizado para evitar duplicados. Este tipo se usa frecuentemente como una marca de tiempo libre de conflictos. cqlsh proporciona varias funciones convenientes para interactuar con el tipo de timeuuid: now (), dateOf () y unixTimestampOf (). La disponibilidad de estas funciones de conveniencia es una de las razones por las que timeuuid tiende a usarse con más frecuencia que uuid.

Para terminar veamos otros tipos que no se donde agruparlos :

boolean : Este es un simple valor verdadero / falso. El cqlsh no distingue entre mayúsculas y minúsculas en la aceptación de estos valores, pero da como resultado True o False.

blob : Un objeto grande binario (blob) es un término informático coloquial para una matriz arbitraria de bytes. El tipo de blob CQL es útil para almacenar medios u otros tipos de archivos binarios. Cassandra no valida ni examina los bytes en un blob. CQL representa los datos como dígitos hexadecimales, por ejemplo, 0x00000ab83cf0. Si desea codificar datos textuales arbitrarios en el blob, puede usar la función textAsBlob() para especificar valores para la entrada.

inet : Este tipo representa las direcciones de Internet IPv4 o IPv6. cqlsh acepta cualquier formato legal para definir direcciones IPv4, incluidas representaciones con puntos o sin puntos que contengan valores decimales, octales o hexadecimales. Sin embargo, los valores se representan utilizando el formato decimal punteado en la salida cqlsh, por ejemplo, 192.0.2.235.
Las direcciones IPv6 se representan como ocho grupos de cuatro dígitos hexadecimales, separados por dos puntos, por ejemplo, 2001: 0db8: 85a3: 0000: 0000: 8a2e: 0370: 7334. La especificación de IPv6 permite el colapso de valores hexadecimales cero consecutivos, por lo que el valor anterior se representa de la siguiente manera cuando se lee con SELECT: 2001: db8: 85a3: a :: 8a2e: 370: 7334.

counter : El tipo de datos de contador proporciona un entero con signo de 64 bits, cuyo valor no se puede establecer directamente, sino que solo se puede incrementar o disminuir. Los contadores se utilizan con frecuencia para el seguimiento de estadísticas, como el número de páginas vistas, tweets, mensajes de registro, etc. El tipo de contador tiene algunas restricciones especiales. No se puede utilizar como parte de una clave principal. Si se usa un contador, todas las columnas que no sean columnas de clave primaria deben ser contadores.

En proximos post hablaremos de tipos de datos compuestos como las colecciones y en la capacidad de crear nuestros propios tipos de datos.


jueves, 20 de junio de 2019

C# 8 mejoras en Pattern Matching


Con C# 7 tuvimos Pattern Matching y con C# 8 tenemos mejoras!!!

Todo el mundo esta hablando de C# 8 y porque va salir C# 8, pues claro! Entre otras mejoras, han mejorado el Pattern Matching:

Ajuste posicional
En C# 7 hacíamos :

case Rectangle r when r.Length == 10 && r.Width == 10: return "Found 10x10 rectangle"

Y ahora :

case Rectangle (10, 10): return "Found 10x10 rectangle";

Propiedades
Con ajuste posicional el pattern matching es conciso, pero solo funciona si tiene un método Deconstruct adecuado. Cuando no lo tienes puedes usar un patrón de propiedad en su lugar.

case Rectangle {Width : 10 }: return "Found a rectangle with a width of 10"

Mejoras del deconstructor
Otra idea que se está considerando en el tema Abrir LDM en el ticket de coincidencia de patrones es permitir múltiples métodos Deconstruct con el mismo número de parámetros. Además de tener diferentes tipos, los parámetros deben tener un nombre diferente.

ITuple
La interfaz de ITuple, introducida en .NET 4.7.1 y .NET Core 2.0, plantea varias preguntas en C# 8. La idea básica es que si un objeto implementa esta interfaz, entonces puede participar en la comparación de patrones. Se están considerando tres escenarios con respecto a cuándo entrará en vigencia.

if (x is ITuple(3, 4)) // (1) permitted?
if (x is object(3, 4)) // (2) permitted?
if (x is SomeTypeThatImplementsITuple(3, 4)) // (3) permitted?

Una pregunta relacionada es si una clase implementa ITuple y hay un método de extensión Deconstruct, ¿cuál tiene prioridad? Idealmente, devolverían los mismos valores, pero se necesita un desempate si ese no es el caso.

martes, 18 de junio de 2019

Probando Linux Deepin

Este es mi primer post con Deepin y en lineas generales estoy muy contento, tuve algunos problemas.

Sobretodo con algunas instalaciones. Me sorprendio que el market no traiga algunas aplicaciones que son historicas de linux.

Y por lo demás todo muy bien samba se configuro casi solo. 

La interfaz es muy cuidada y las aplicaciones que trae son muy utilies.

En fin, muy bueno...

Dejo link : https://www.deepin.org/es/

domingo, 16 de junio de 2019

Tiempo de vida en las columnas en Apache Cassandra


Una característica muy poderosa que tiene apache Cassandra es la capacidad de expirar datos que no necesita por mucho tiempo. Esta característica es muy flexible y trabaja a nivel individual de cada valor de una columna. El tiempo de vida (TTL) es el tiempo que Cassandra persiste un campo y se indica a nivel de columna.

El TTL por defecto es null y esto significa que el dato escrito no espira. Con la funcion TTL() podemos ver el tiempo de vida de un campo determinado :

cqlsh:my_keyspace> SELECT first_name, last_name, TTL(last_name) FROM user WHERE first_name = 'Mary';

first_name | last_name | ttl(last_name)
-------------+-------------+----------------
Mary          | Boateng   | null

(1 rows)

Ahora vamos a modificar esto:

cqlsh:my_keyspace> UPDATE user USING TTL 3600 SET last_name ='McDonald' WHERE first_name = 'Mary' ;

cqlsh:my_keyspace> SELECT first_name, last_name, TTL(last_name) FROM user WHERE first_name = 'Mary';

first_name | last_name | ttl(last_name)
-------------+-------------+---------------
Mary         | McDonald |  3588

(1 rows)

En este caso modificamos el TTL con update pero también podemos utilizar insert con el comando USING TTL.

El TTL es por columnas, no tenemos un mecanismo para settear el TTL a nivel de fila directamente.  Y esto es setteado cuando proveemos un valor a una columna. Si queremos settear el TTL a nivel de fila, debemos proveer un valor para la primary key en el update o insert.

sábado, 15 de junio de 2019

Apache Ambari parte 2

Continuamos descubriendo Apache Ambari.

Se puede integrar fácilmente las capacidades de aprovisionamiento, gestión y supervisión de Hadoop en sus propias aplicaciones con las API REST de Ambari.

Ambari simplifica la administración de Hadoop al proporcionar una plataforma consistente y segura para el control operativo. Ambari proporciona una interfaz de usuario web intuitiva, así como una API REST robusta, que es particularmente útil para automatizar las operaciones de clúster. Con Ambari, los operadores de Hadoop obtienen los siguientes beneficios principales:

  • Instalación, configuración y gestión simplificadas. Se puede crear, administrar y supervisar los clusters de forma fácil y eficiente a escala. Elimina las conjeturas de la configuración con Smart Configs y las recomendaciones de cluster. Permite la creación repetida y automatizada de clústeres con Ambari Blueprints.
  • Configuración de seguridad centralizada. Reduce la complejidad para administrar y configurar la seguridad del clúster en toda la plataforma. Ayuda a automatizar la configuración y configuración de las capacidades avanzadas de seguridad de clúster, como Kerberos y Apache Ranger.
  • Visibilidad completa en la salud del clúster. Asegurará de que su grupo sea saludable y esté disponible con un enfoque holístico para el monitoreo. Se puede configurar alertas predefinidas, basadas en las mejores prácticas operativas, para la supervisión de clústeres. Captura y visualiza métricas operacionales críticas, utilizando Grafana, para el análisis y la resolución de problemas. Integrado con Hortonworks SmartSense para la prevención y resolución proactiva de problemas.
  • Altamente extensible y personalizable. Ajuste Hadoop a la perfección en su entorno empresarial. Altamente extensible con Ambari Stacks para administrar servicios personalizados bajo administración, y con Ambari Views para personalizar la interfaz de usuario web de Ambari.

Ambari permite a los administradores de sistemas:
  • Aprovisionar un clúster de Hadoop
    • Ambari proporciona un asistente paso a paso para instalar los servicios de Hadoop en cualquier número de hosts.
    • Ambari maneja la configuración de los servicios de Hadoop para el cluster.
  • Administrar un clúster de Hadoop
    • Ambari proporciona administración central para iniciar, detener y reconfigurar los servicios de Hadoop en todo el clúster.
  • Monitorear un clúster de Hadoop
    • Ambari proporciona un panel de control para monitorear la salud y el estado del clúster de Hadoop.
    • Ambari aprovecha el sistema de métricas de Ambari para la recopilación de métricas.
    • Ambari aprovecha Ambari Alert Framework para alertar al sistema y le notificará cuando necesite atención (por ejemplo, un nodo se apaga, el espacio restante en el disco es bajo, etc.).

miércoles, 12 de junio de 2019

Libro Java Code Geeks

Download IT Guides!

 
Amazon S3 (Simple Storage Service) is a web service offered by Amazon Web Services. Amazon S3 provides storage through web services interfaces (REST, SOAP, and BitTorrent). Amazon does not make details of S3's design public, though it clearly manages data with an object storage architecture. According to Amazon, S3's design aims to provide scalability, high availability, and low latency at commodity costs.
 
 
JUnit is a unit testing framework to write repeatable tests. JUnit has been important in the development of test-driven development, and is one of a family of unit testing frameworks which is collectively known as xUnit that originated with SUnit. A research survey performed in 2013 across 10,000 Java projects hosted on GitHub found that JUnit, (in a tie with slf4j-api), was the most commonly included external library.
 
 
JMeter is an application that offers several possibilities to configure and execute load, performance and stress tests using different technologies and protocols. It allows simulating different type of requests against all kind of databases, FTP, HTTP, HTTPS or other kind of servers. Originally JMeter was designed to test web applications, but its functionality has expanded and nowadays allows testing against almost any kind of program and can be used to perform functional tests in your applications..
 
 
A design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. A design pattern is not a finished design that can be transformed directly into source or machine code. It is a description or template for how to solve a problem that can be used in many different situations. Patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.
 

Apache Dumbo


Apache Software Foundation anunció recientemente que Apache Dubbo es un proyecto Top level. Apache Dubbo es framework RPC de código abierto basado en Java. Originalmente fue desarrollado en Alibaba, fue de código abierto en 2011 e ingresó a la Incubadora de Apache en febrero de 2018. Dubbo trae funcionalidades clave como llamadas remotas basadas en interfaz, tolerancia a fallas y balanceo de carga, y registro y descubrimiento automáticos de servicios.

Veamos como funciona:


  1. Container es responsable de iniciar, cargar y ejecutar el proveedor de servicios
  2. Provider registra sus servicios en el Register durante su inicialización.
  3. Consumer suscribe los servicios que necesita en el Register cuando comienza
  4. Register devuelve la lista de Providers a los Consumer y, cuando se produce un cambio, el Register envía los datos modificados al Consumer
  5. Sobre la base de un algoritmo de equilibrio de carga flexible, el Consumer seleccionará uno de los Provider y ejecutará la invocación, seleccionará automáticamente otro Provider cuando ocurra una falla.
  6. Tanto el Consumer como el Provider contarán las invocaciones de servicio y el tiempo que lleva en la memoria, y enviarán las estadísticas a Monitorear cada minuto.


Las características de Apache Dubbo incluyen:

  • Una interfaz transparente basada en RPC.
  • Balanceo de carga inteligente, que soporta múltiples estrategias de balanceo de carga listas para usar
  • Registro de servicio automático y descubrimiento.
  • Alta extensibilidad, diseño de micro-kernel y plugin que asegura que puede ser fácilmente extendido por la implementación de terceros a través de características principales como protocolo, transporte y serialización.
  • Enrutamiento del tráfico en tiempo de ejecución, que se puede configurar en tiempo de ejecución para que el tráfico se pueda enrutar de acuerdo con diferentes reglas, lo que facilita la compatibilidad con características como la implementación azul-verde, el enrutamiento que reconoce el centro de datos, etc.
  • Gobierno visualizado del servicio, que proporciona herramientas completas para el gobierno y el mantenimiento del servicio, como la consulta de metadatos del servicio, el estado de mantenimiento y las estadísticas
Para comenzar a usar Dubbo, primero agregue la dependencia de Maven:

<dependencies> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>2.7.2<</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-dependencies-zookeeper</artifactId> <version>2.7.2<</version> <type>pom</type> </dependency> </dependencies>



Dejo link: https://dubbo.apache.org/

domingo, 9 de junio de 2019

Columnas en Apache Cassandra


Una columna es la unidad más básica de la estructura de datos en el modelo de datos de Cassandra. Hasta ahora hemos visto que una columna contiene un nombre y un valor. Restringimos cada uno de los valores para que sean de un tipo particular cuando definimos la columna. Vamos profundizar en los diversos tipos que están disponibles para cada columna, pero primero echemos un vistazo a algunos otros atributos de una columna que aún no hemos discutido: marcas de tiempo y tiempo de vida. Estos atributos son clave para entender cómo Cassandra usa el tiempo para mantener los datos actualizados.

Marcas de tiempo: Cada vez que escribe datos en Cassandra, se genera una marca de tiempo para cada valor de columna que se actualiza. Internamente, Cassandra usa estas marcas de tiempo para resolver cualquier cambio conflictivo que se realice en el mismo valor. Generalmente, la última marca de tiempo gana.

Veamos las marcas de tiempo que se generaron para nuestras escrituras anteriores agregando la función writetime() a nuestro comando SELECT. Haremos esto en la columna de apellido e incluiremos un par de otros valores para el contexto:

cqlsh:my_keyspace> SELECT first_name, last_name, writetime(last_name) FROM user;

  first_name | last_name | writetime(last_name)
   ------------+-------------+----------------------
          Mary | Rodriguez | 1434591198790252
             Bill | Nguyen     | 1434591198798235
(2 rows)

Podríamos esperar que si solicitamos la marca de tiempo en first_name obtendríamos un resultado similar. Sin embargo, resulta que Cassandra no nos permite solicitar la marca de tiempo en las columnas de clave principal:

cqlsh:my_keyspace> SELECT WRITETIME(first_name) FROM user;
InvalidRequest: code=2200 [Invalid query] message="Cannot use selection function writeTime on PRIMARY KEY part first_name"

Cassandra también nos permite especificar una marca de tiempo cuando modificamos. Usaremos la opción USING TIMESTAMP para establecer manualmente una marca de tiempo (tenga en cuenta que la marca de tiempo debe ser posterior a la de nuestro comando SELECT, o se ignorará la ACTUALIZACIÓN):

cqlsh:my_keyspace> UPDATE user USING TIMESTAMP 1434373756626000 SET last_name = 'Boateng' WHERE first_name = 'Mary' ;

cqlsh:my_keyspace> SELECT first_name, last_name, WRITETIME(last_name) FROM user WHERE first_name = 'Mary';

first_name | last_name | writetime(last_name)
------------+-------------+---------------------
       Mary | Boateng     | 1434373756626000

(1 rows)

Esta declaración tiene el efecto de agregar la columna de apellido a la fila identificada por la clave principal "Mary", y establecer la marca de tiempo al valor que proporcionamos.


sábado, 8 de junio de 2019

Apache Ambari

Apache Ambari es un proyecto de software de Apache Software Foundation. Ambari permite a los administradores de sistemas aprovisionar, administrar y monitorear un clúster de Hadoop, y también integrar Hadoop con la infraestructura empresarial existente. Apache Ambari elimina las conjeturas de operar Hadoop y nos permite utilizar Hadoop de forma interactiva y fácil. Ambari era un subproyecto de Hadoop pero ahora es un proyecto de Top level de Apache.

Ambari es utilizado por compañías como IBM, Hortonworks, Cardinal Health, EBay, Expedia, Kayak.com, club de préstamos, Neustar, Macy's, Pandora Radio, Samsung, Shutterfly y Spotify.

Apache Ambari, como parte de la plataforma de datos Hortonworks, permite que las empresas planifiquen, instalen y configuren de manera segura HDP, lo que facilita el mantenimiento y la administración continua del clúster, sin importar el tamaño del clúster.

HDP sanbox es una imagen de los productos de apache que se utilizan en la distribución de HortonWorks y permite administrar todo el software con ambari, de forma muy fácil.

Ambari actualmente soporta 64-bit y corre sobre los siguientes sistemas operativos :

  • RHEL (Redhat Enterprise Linux) 7.4, 7.3, 7.2
  • CentOS 7.4, 7.3, 7.2
  • OEL (Oracle Enterprise Linux) 7.4, 7.3, 7.2
  • Amazon Linux 2
  • SLES (SuSE Linux Enterprise Server) 12 SP3, 12 SP2
  • Ubuntu 14 and 16
  • Debian 9


Les dejo un video :


Dejo links :
https://ambari.apache.org/
https://es.hortonworks.com/apache/ambari/
https://en.wikipedia.org/wiki/Apache_Ambari

viernes, 7 de junio de 2019

Cloud data warehousing for Dummies



Otro libro gratuito!!


Esta guía explica data warehousing en la nube y cómo se compara con otras plataformas de datos.

Incluyen:

  • Qué es un data warehousing de datos en la nube.
  • Tendencias que provocaron la adopción del almacenamiento de datos en la nube.
  • Cómo el almacén de datos en la nube se compara con las ofertas tradicionales y noSQL
  • Cómo evaluar diferentes soluciones de almacenamiento de datos en la nube.
  • Consejos para elegir un almacén de datos en la nube


Data as a feature

Recibí un mail de O'reilly sobre un libro gratuito y bueno, quiero compartirlo :