Django
Django es un framework de aplicaciones web gratuito y de código abierto (open source) escrito en Python. Un framework web es un conjunto de componentes que te ayudan a desarrollar sitios web más fácil y rápidamente.
¿Por qué necesitas un framework?
Para entender para que sirve realmente Django, necesitamos fijarnos en cómo funcionan los servidores. Lo primero es que el servidor necesita enterarse de que tu quieres que te sirva una página web.
Imagina un buzón (puerto) en el que alguien está constantemente mirando si hay cartas entrantes (peticiones). Esto es lo que hace un servidor web. El servidor web lee la carta, y envía una respuesta con la página web. Pero para enviar algo, tenemos que tener algún contenido. Y Django nos ayuda a crear ese contenido.
Yii
Es un framework open source (código abierto) de programación utilizado para desarrollar todo tipo de aplicaciones Web.
- Usa el patrón de Arquitectura de Software MVC (Modelo Vista Controlador) que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos.
- Provee un Nivel de Abstracción hacia la Base de Datos (DAO, Data Access Object) y se apoya en el patrón de arquitectura de datos Active Record.
- Incluye soporte para autenticación de usuarios basado en el modelo RBAC role-based access control o control de acceso basado en roles.
- Herramientas para automatización y validación de Formularios
- Integración con jQuery.
- Avanzado control de Themes
- Web services, herramientas para simplificar la tarea de generar y consumir servicios Web en diferentes formatos.
- Internacionalización y Localización.
- Sistema de manejo de cache.
- Manejo de Errores.
- El manejo de errores y logging. Los errores son manejados y personalizados, y los log de mensajes pueden ser categorizados, filtrados y movidos a diferentes destinos.
- Las medidas de seguridad incluyen la prevención cross-site scripting (XSS), prevención cross-site request forgery (CSRF), prevención de la manipulación de cookies, etc.
- Herramientas para pruebas unitarias y funcionales basados en PHPUnit y Selenium.
- Generación automática de código para el esqueleto de la aplicación, aplicaciones CRUD, etc.
- Generación de código por componentes de Yii y la herramienta por línea de comandos cumple con los estándares de XHTML.
- Cuidadosamente diseñado para trabajar bien con código de terceros. Por ejemplo, es posible usar el código de PHP o Zend Framework en una aplicación Yii.
Apache Hadoop
Hadoop es una estructura de software de código abierto para almacenar datos y ejecutar aplicaciones en clústeres de hardware comercial. Proporciona almacenamiento masivo para cualquier tipo de datos, enorme poder de procesamiento y la capacidad de procesar tareas o trabajos concurrentes virtualmente ilimitados.
¿Por qué es importante Hadoop?
- Capacidad de almacenar y procesar enormes cantidades de cualquier tipo de datos, al instante. Con el incremento constante de los volúmenes y variedades de datos, en especial provenientes de medios sociales y la Internet de las Cosas (IoT), ésa es una consideración importante.
- Poder de cómputo. El modelo de cómputo distribuido de Hadoop procesa big data a gran velocidad. Cuantos más nodos de cómputo utiliza usted, mayor poder de procesamiento tiene.
- Tolerancia a fallos. El procesamiento de datos y aplicaciones está protegido contra fallos del hardware. Si falla un nodo, los trabajos son redirigidos automáticamente a otros modos para asegurarse de que no falle el procesamiento distribuido. Se almacenan múltiples copias de todos los datos de manera automática.
- Flexibilidad. A diferencia de las bases de datos relacionales, no tiene que procesar previamente los datos antes de almacenarlos. Puede almacenar tantos datos como desee y decidir cómo utilizarlos más tarde. Eso incluye datos no estructurados como texto, imágenes y videos.
- Bajo costo. La estructura de código abierto es gratuita y emplea hardware comercial para almacenar grandes cantidades de datos.
- Escalabilidad. Puede hacer crecer fácilmente su sistema para que procese más datos son sólo agregar nodos. Se requiere poca administración.
¿Cuáles son los retos de usar Hadoop?
La programación MapReduce no es una opción adecuada para todos los problemas. stepEs adecuada para simples solicitudes de información y problemas que se pueden dividir en unidades independientes, pero no es eficiente para realizar tareas analíticas iterativas e interactivas. MapReduce trabaja con muchos archivos. Como los nodos no se intercomunican salvo a través de procesos de clasificación y mezcla, los algoritmos iterativos requieren múltiples fases de mapeo-mezcla/clasificación-reducción para completarse. Esto da origen a múltiples archivos entre fases de MapReduce y no es eficiente para el cómputo analítico avanzado.
Existe una brecha de talento ampliamente reconocida. Puede ser difícil conseguir programadores principiantes con suficientes conocimientos de Java para que sean productivos con MapReduce. Ésa es una razón por la que los proveedores de distribución se apresuran para colocar tecnología relacional (SQL) sobre Hadoop. Es mucho más fácil encontrar programadores con conocimientos de SQL que con conocimientos de MapReduce. Y la administración de Hadoop parece ser parte arte y parte ciencia, por lo que requiere conocimientos básicos de sistemas operativos, hardware y configuración del kérnel de Hadoop.
Seguridad de datos. Otro reto se centra alrededor de aspectos de seguridad de datos fragmentados, aunque están surgiendo nuevas herramientas y tecnologías. El protocolo de autenticación Kerberos es un paso importante para volver seguros los entornos Hadoop.
Gestión y gobierno de datos completo. Hadoop no tiene herramientas fáciles de usar y repletas de características para la gestión de datos, depuración de datos, gobierno y metadatos. Se carece en especial de herramientas para asegurar la calidad y la estandarización de los datos.