giovedì 23 ottobre 2014

12 cose che odio di Hadoop

Amo l'elefante. L'elefante mi ama. Niente è perfetto, però, ea volte gli amici a combattere.

Qui ci sono le cose che lotta con Hadoop su.


Non è possibile utilizzare Hive UDF in Pig. Devi usare HCatalog per accedere alle tabelle alveare in Pig. Non è possibile utilizzare Pig UDF in Hive. Che si tratti di un po 'di funzionalità in più ho bisogno, mentre in Hive, ma in realtà non voglia di scrivere un full-on script di maiale o è il "Accidenti, ho potuto facilmente fare questo se fossi solo in Hive" mentre sto scrivendo Pig script, ho spesso pensano: "abbatta questo muro!" quando scrivo in entrambi.

2 Essere costretti a memorizzare tutte le mie librerie condivise in HDFS

Questo è un tema ricorrente in Hadoop. Se si memorizza il vostro script maiale su HDFS, quindi assume automaticamente tutti i file JAR saranno anche lì (sto lavorando sulla fissazione che io stesso). Questo tema generale ripete in Oozie e altri strumenti. Di solito è ragionevole, ma a volte, avere una versione libreria condivisa organizzazione a livello forzata è doloroso. Inoltre, più della metà del tempo, questi sono gli stessi file JAR installati ovunque è installato il client, quindi perché li memorizzano due volte? Questa  viene fissata in Pig . Come tutto il resto?

3 Oozie

Si Debug non è divertente, in modo che i documenti hanno un sacco di esempi con il vecchio schema. Quando si verifica un errore, di solito ha nulla a che fare con tutto ciò che hai fatto di sbagliato. Può essere un "errore di protocollo" per un errore di battitura configurazione o di un errore di convalida dello schema per uno schema che convalida utilizzando il validatore schema, ma non sul server. Per una grande misura, Oozie è come Ant o Maven, tranne distribuito, senza utensili e un po 'fragile.

4. Messaggi di errore

Stai scherzando, vero? Parlando di messaggi di errore. La mia preferita è quella in cui uno degli strumenti di Hadoop dicono, "il fallimento, nessun errore restituito", che si traduce in "qualcosa è successo, buona fortuna trovarlo."

5. Kerberos


'Nuff ha detto? Se si desidera proteggere Hadoop in un modo che è stato relativamente pensato, si arriva a utilizzare Kerberos. Ricordate Kerberos e quanto divertimento e antiquato è? Così si va dritti LDAP, tranne che nulla in Hadoop è integrato: no single sign-on, no SAML, no OAuth, e nulla passa le credenziali in giro (invece, si ri-ri-autentica e autorizza). Ancora più divertente, ogni parte dell'ecosistema Hadoop ha scritto il proprio supporto LDAP, quindi è incoerente.

6. Knox

Perché scrivere un connettore adeguato LDAP deve essere fatto almeno 100 volte di più in Java prima di arrivare nel modo giusto. Gosh, andare a vedere quel codice. Realmente non piscina connessioni correttamente. In realtà, io penso che tipo di Knox è stato creato da un zelo per Java o qualcosa del genere. Si potrebbe fare lo stesso con un ben scritto Apache config,  mod_proxy ,  mod_rewrite . In realtà, questo è fondamentalmente ciò che Knox è, tranne in Java. Per avviare, dopo che autentica e autorizza, non passa le informazioni al Hive o WebHDFS o qualsiasi cosa tu stia accedendo, e ottiene di farlo di nuovo.

7 Hive non mi lascia la mia tabella esterna ed eliminarlo troppo

Se si lascia Hive gestire tabelle, li cancella automaticamente se si elimina la tabella. Se si dispone di una tabella esterna, non è così. Perché non può esserci un "DROP TABLE esterno troppo" o qualcosa del genere? Perché devo fare questo fuori se voglio davvero? Inoltre, mentre Hive è  praticamente evolvendo  in un RDBMS, perché non si ha Update e Delete?

8 NameNode fallire

Oozie, Knox, e diverse altre parti del Hadoop non obbediscono il nuovo materiale NameNode HA. Si può avere HA Hadoop, finché non si utilizza qualsiasi altra cosa con esso.

RECENTI JAVA HOW-TO s
sul bersaglio
Modelli di stabilità applicate in un'architettura RESTful
ChoiceFormat: formattazione intervallo numerico
Google Go
Guida rapida alla programmazione Google Go
9 Documentazione

E 'luogo comune lamentarsi, ma check this out.  Linea 37 è sbagliato  - peggio, è sbagliato in ogni post in tutto il Internet. Ciò dimostra che nessuno nemmeno preso la briga di eseguire l'esempio prima del check-in. La documentazione Oozie è ancora più terribile, e la maggior parte degli esempi non passerà la convalida dello schema della versione è destinata.

Copertura 10 Ambari

Ho problemi a criticare Ambari; dato quello che so di architettura Hadoop, è incredibile Ambari funziona a tutti. Detto questo, dove Ambari ha difetti, possono essere fastidioso. Ad esempio, Ambari non installa - o in alcuni casi, non viene installato correttamente - molti elementi, tra cui le varie impostazioni HA, Knox, e molto, molto di più. Sono sicuro che andrà meglio, ma "installare manualmente dopo" o "dovremo creare uno script marionette per il resto" non dovrebbe apparire nella mia e-mail o la documentazione più.

11 Gestione Repository

Parlando di Ambari, hai mai fatto una installazione mentre i repository sono in fase di aggiornamento? Ho - che non  non  si comporta bene. In realtà, a volte si trova il più veloce (e la maggior parte di data) specchio. Non importa se ciò che si tira verso il basso è in alcun modo compatibile. È possibile configurare la tua via d'uscita da quella parte, ma è ancora fastidioso la prima volta che si installa pezzi incoerenti di Hadoop attraverso qualche centinaio di nodi.

12. puntatore eccezioni Null

Mi sembra di trovarli. Spesso sono errori di analisi o di altri difetti che ho causato. Detto questo, che comunque non dovrebbero essere esposte come NPE a Pig, Hive, HDFS, e così via.

La risposta ad alcuna lista analoga dei reclami sarà ovviamente "patch benvenuto!" O "hey, sto  lavorando su di esso . " Hadoop è venuto un senso lungo ed è sicuramente uno dei miei strumenti preferiti, ma ragazzo, quei bordi taglienti infastidirmi.

Qual è il tuo bug Hadoop preferito o funzione a sei zampe? Cosa stai facendo per renderlo migliore?

mercoledì 8 ottobre 2014

Single Sign-On con il pattern delegato Access Control

L' Enterprise Integration Zone è portato a voi in partnership con MuleSoft . Ulteriori informazioni su come utilizzare il toolchain java con SAP .
 Supponiamo che un'azienda di medie dimensioni ha un numero limitato di API RESTful. Dipendenti della Società sono autorizzati ad accedere a queste API tramite applicazioni web mentre sono dietro il firewall aziendale. Tutti i dati utente vengono memorizzate in un Microsoft Active Directory, e tutte le applicazioni Web sono collegati ad un Security Assertion Markup Language (SAML) provider di 2,0 identità per autenticare gli utenti. Le applicazioni web hanno bisogno di accedere alle API di back-end per conto dell'utente loggato.


La cattura è questa ultima affermazione: "Le applicazioni web hanno bisogno di accedere alle API di back-end per conto dell'utente loggato." Questo suggerisce la necessità di un protocollo di accesso-delega: OAuth. Tuttavia, gli utenti non presentano le loro credenziali direttamente all'applicazione web-si autenticano attraverso un provider di SAML 2.0 di identità. In questo caso, è necessario trovare un modo per scambiare il SAML Token ricevuto nel protocollo SSO SAML 2.0 Web per un OAuth token di accesso, che è definito nel tipo di sovvenzione per la specifica SAML OAuth 2.0. Una volta che l'applicazione Web riceve il token SAML, come indicato al punto 3 della figura di cui sopra, deve scambiare con un token di accesso a parlare con il server di autorizzazione OAuth. Il server di autorizzazione deve fidarsi del provider di identità SAML 2.0. Una volta che l'applicazione web ottiene il token di accesso, è possibile utilizzarlo per accedere alle API di back-end. Il tipo di sovvenzione per SAML OAuth non fornisce un token di aggiornamento. La durata del token di accesso rilasciata dal autorizzazione OAuth deve corrispondere alla durata del token SAML utilizzata nella concessione dell'autorizzazione. Dopo l'utente accede all'applicazione web con un token SAML valido, la web app crea una sessione per l'utente da lì in avanti, e non preoccuparti per la durata del token SAML. Questo può portare ad alcuni problemi. Dire il token SAML scade, ma l'utente ha ancora una sessione del browser valido nell'applicazione web. Poiché il token SAML è scaduto, ci si può aspettare che il token di accesso OAuth corrispondente ottenuto al momento della login utente è scaduto pure. Ora, se l'applicazione Web tenta di accedere a una API di back-end, la richiesta verrà respinta perché il token di accesso è scaduto. In un tale scenario, l'applicazione web deve reindirizzare l'utente alla provider di identità SAML 2.0, ottenere un nuovo token SAML, e di scambio che token per un nuovo token di accesso. Se la sessione al provider di identità SAML 2.0 è ancora vivo, allora questo reindirizzamento può essere reso trasparente per l'utente finale. Questo è uno dei dieci modelli di protezione API trattati nel mio libro Avanzata API di sicurezza . Potete trovare maggiori dettagli su questo dal libro.