Estoy planeando construir una aplicación interactiva hadoop que se implementará en el servidor, ¿en qué tecnología debo crear la interfaz de usuario y por qué?

Recientemente desarrollé una aplicación interactiva de Hadoop para optimizar HBase, que es algo inspirado en Hannibal en lo que respecta a la interfaz de usuario, pero con mejoras de la interfaz de usuario y que también permite realizar una optimización inteligente del clúster siguiendo varios algoritmos. Por cierto, Hannibal fue codificado usando The Play Framework que puede dar algunas ideas a su pregunta:

sentric / hannibal

Así que yo mismo tuve que responder a esta pregunta y le daré lo que he hecho o lo que haría en función de mis investigaciones y experiencia.

En primer lugar, supondré que estás hablando de una GUI para usuarios normales y no de una línea de comando para personas geek. Entonces, la opción de hoy aquí es crear una interfaz basada en la web y ni siquiera consideraría una aplicación de escritorio a menos que tenga buenas razones para ello. Esta es la opción más común y así es como se construyen todas las demás GUI en el ecosistema de Hadoop, por lo que parece ser una opción segura.

Le recomiendo utilizar un marco web que garantice la calidad de su arquitectura. Básicamente, tiene tres posibilidades en términos de marco para hacer una GUI basada en la web (de hecho, existen muchas más, pero doy aquí las más populares y de mayor confianza):

  • Django (Python)
  • Ruby on Rails (Rubí)
  • El marco de juego (Java o Scala)

Revisé un cierto número de puntos de referencia y artículos, y siempre estos tres marcos se estaban logrando por delante de cualquier otro, así que no consideraría personalmente otro a menos que ya tenga una gran habilidad en otra tecnología. En caso de que esté aprendiendo o esté dispuesto a aprender, le aconsejaría que elija uno de estos marcos que también se puede reutilizar en muchos otros proyectos.

Entonces, ¿cuál elegir entre esos? Personalmente quería elegir The Play Framework para mi propio proyecto. Creo que esto es muy adecuado para desarrollar una interfaz para el ecosistema de Hadoop porque también está en Java y tanto Front como Back End se pueden escribir en Java simple (o Scala si te sientes cómodo con este lenguaje). El marco está diseñado de manera inteligente y tiene buenas críticas en su mayoría. Aún así, en mi caso, esto no fue posible porque estoy ejecutando una pequeña versión antigua de HBase que no es compatible con Java 8 y The Play Framework en la versión reciente solo funciona en Java 8 (al menos me cuesta mucho pero no pude hacerlo) funciona correctamente con Java 7).

Según los puntos de referencia, existe bastante consenso de que Ruby on Rails es el mejor y más elegante marco web. Como no fui por este porque no conozco a Ruby y de alguna manera no estaba dispuesto a aprender. Mi razón es que Ruby podría ser un lenguaje excelente pero no está tan relacionado con el ecosistema Hadoop y Big Data en general, por lo que diría que los idiomas más importantes para dominar en Big Data son Java y Python (tal vez Scala como extra). Por lo tanto, tiene sentido seguir con estos lenguajes cuando desarrollas algo dentro del ecosistema Hadoop.

Ya estaba cómodo en Python, así que finalmente fui a Python y elegí el framework Django. Mi experiencia con este es realmente buena y podría lograr crear una GUI fácilmente sin mucho esfuerzo utilizando también la plantilla HTML SB Admin 2 basada en Bootstrap.

Tengo que explicar también que no me estoy conectando directamente al código Back End de la aplicación Hadoop desde el código Python, sino que estoy usando una API RESTful porque mi Back End está escrito en Java. La conexión directa desde Python a Java podría hacerse usando Jython, pero quería mantener las cosas simples, por lo que esta solución buscaba agregar más complejidad.

Entonces, la pila general de mi aplicación interactiva Hadoop es la siguiente:

  • Front End usando Django Framework con el cliente RESTful (Python)
  • API RESTful (Jersey con servidor web simple)
  • Back End usando la API de HBase (Java)

Esta arquitectura funciona bien en general y estoy satisfecho con ella. También me gustó el concepto de tener una API RESTful entre Back End y Front End que permite programar fácilmente otra GUI para cualquier otro dispositivo (de escritorio o móvil) en cualquier idioma, incluida una GUI de JavaScript completa. En caso de que considere javascript completo, puede usar uno de los marcos famosos como AngularJS, ReactJS o BackboneJS o cualquier otro de moda. De hecho, esta arquitectura desacopla completamente la GUI del Back End que contiene la lógica real de Hadoop. Yo mismo no quería apostar por JS completo porque, en mi opinión, estos marcos JS modernos están cambiando demasiado a un ritmo rápido, por lo que quería algo más estable y confiable a largo plazo. Todavía utilicé dentro del código de la plantilla de Django varias bibliotecas javascript específicas para mejorar la GUI general.

Aún así, en caso de que haya posibilidad de codificación en Java 8 (que es el caso de las versiones más recientes de Hadoop), consideraría The Play Framework. Este tiene buen nombre y se basa también en la API RESTful entre el Front y Back End, que es parte del marco.

Estas son mis propias experiencias, pero luego considero tus propias necesidades, qué tecnología ya dominas y si tienes voluntad (y tiempo) para aprender una tecnología completamente nueva o si quieres seguir con lo que ya sabes.

Las siguientes preguntas deben responderse primero:

  1. ¿Quiénes son sus usuarios? Si son el público en general, probablemente necesite una GUI. Si provienen de un entorno informático como ingeniería informática o CS, también funciona un acceso remoto de línea de comandos.
  2. Cual es tu experiencia Mira lo que sabes antes de probar algo nuevo.
  3. ¿Cuáles son sus detalles de alojamiento, los detalles del servidor, el método de interacción es a través de software, aplicación web, una API o terminal?
  4. Detalles a presentar. Si se van a cargar datos, presentados desde el lado del cliente, cómo se debe hacer eso, a través de FTP o arrastrar y soltar, dependiendo del tamaño de los datos.

More Interesting

He estado utilizando unidades de estado sólido durante algún tiempo y estoy vendida por esta tecnología. ¿Me pregunto por qué no hay más rumores al respecto?

¿Por qué veo una gran cantidad de videos de cámaras policiales, teléfonos celulares personales, cámaras corporales y otras fuentes que muestran solo 1/3 de la imagen completa?

Mi hija está en el primer año de la escuela secundaria e irá a Suecia para su último año. Necesitamos comprarle una nueva computadora portátil o un ipad. No sé qué comprar porque irá a la universidad en 2 años y necesitará algo entonces. ¿Qué debo comprar ahora?

Estoy trabajando en ITIS en TCS con 3 años de experiencia, si quiero cambiar mi perfil a TI, ¿qué tecnología debo aprender? ¿Por favor avise?

Necesito la versión moderna de una máquina de escribir: solo escribir en un teclado sin distracciones. ¿Existe tal dispositivo en el mercado?

Voy a China por un mes. ¿Hay alguna forma de usar Instagram mientras estás en China?

Estoy usando Sony Xperia Neo L. ¿Hay alguna posibilidad de mover las aplicaciones de mi sistema como Facebook, Gmail, etc., a una tarjeta SD?

¿Cuál es la carpeta de la aplicación en la aplicación Rails?

Las luces LED de mi HDD siguen parpadeando incluso si mi computadora portátil está apagada. ¿Por qué pasó esto?

Tengo 16 años y me encanta la tecnología. Quiero hacer algo que ayude a otros y me haga ganar un buen dinero. ¿Que puedo hacer?

Tengo $ 50,000 ahorrados y estoy ganando $ 130,000 al año. ¿Debo abandonar la universidad?

Soy un desarrollador de software BPM que utiliza la herramienta PEGA PRPC desde el comienzo de mi carrera, es decir, 9 años y planeo cambiar a una tecnología nueva y que no sea BPM. ¿Cuáles son las últimas tecnologías más fáciles y mejor pagadas disponibles en el mercado para aprender?

¿Sería posible acceder a Internet fuera de los Estados Unidos si la infraestructura de Internet de los Estados Unidos ha sido destruida?

¿Todos existimos en la matriz?

Mi disco duro externo se siente cálido. ¿Es esto algo para estar preocupado?