Fixed bug in launch script
[mo641-rlp.git] / presentacion / common.tex
blob56c1cdab07b8fc47b8ce006f78803c943c400838
1 \section{Common}
3 \begin{frame}{Common}
4 É um conjunto de ferramentas que suportam os sub-projetos do Hadoop:
5 \begin{itemize}
6 \item<1-> integridade de dados com CRC32
7 \item<2-> compressão de arquivos
8 \item<3-> serialização de dados
9 \item<3-> RPC
10 \end{itemize}
11 \end{frame}
13 \begin{frame}{Integridade de dados\cite{HUFA:2010,HOMP:2010}}
14 \begin{itemize}
15 \item<1-> Hadoop usa \emph{checksum} (CRC32) para validar dados:
16 \begin{itemize}
17 \item<2-> operações sobre os arquivos
18 \item<3-> operações em \emph{background}
19 \end{itemize}
20 \end{itemize}
21 \end{frame}
23 \begin{frame}{Integridade de dados\cite{HUFA:2010,HOMP:2010,Shvachko:2010}}
24 \begin{itemize}
25 \item<1-> operações sobre os arquivos:
26 \begin{itemize}
27 \item<2-> na criação do arquivo: cliente computa \emph{checksum} para cada 512 bytes (default) e DataNode armazena o \emph{checksum}; cliente pode receber ChecksumException
28 \item<3-> no acesso ao arquivo: cliente recupera dados e \emph{checksum} do DataNode e se a validação falha, cliente tenta outras réplicas
29 \item<4-> API ChecksumFileSystem: operações como copyFromLocalFile, copyToLocalFile, open, append, rename, delete
30 \item<5-> documentação: http://hadoop.apache.org/common/docs/current/api/org/apache/\\hadoop/fs/ChecksumFileSystem.html
31 \item<6-> fontes: hadoop-common/src/java/org/apache/hadoop/fs
32 \end{itemize}
33 \end{itemize}
34 \end{frame}
36 \begin{frame}{Integridade de dados\cite{HUFA:2010,HOMP:2010,Shvachko:2010}}
37 \begin{itemize}
38 \item<1-> operações em \emph{background}:
39 \begin{itemize}
40 \item<2-> cada DataNode executa DataBlockScanner periodicamente; frequencia definida por dfs.datanode.scan.period.hours
41 \item<3-> fontes: hadoop-hdfs/src/java/org/apache/hadoop/hdfs/server/datanode
42 \item<4-> Web interface para \emph{block scanner}: http://machine:50075/blockScannerReport
43 \end{itemize}
44 \end{itemize}
45 \end{frame}
47 \begin{frame}
48 \begin{figure}
49 \centering
50 \includegraphics[scale=0.5]{blockscanner.jpg}
51 \end{figure}
52 \end{frame}
54 \begin{frame}{Compressão de arquivos\cite{NLIG:2010}}
56 Codecs de compressão nativos:
57 \begin{itemize}
58 \item<1-> zlib http://www.zlib.net/
59 \item<2-> gzip http://www.gzip.org/
60 \end{itemize}
62 \end{frame}
64 \begin{frame}{Compressão de arquivos\cite{NLIG:2010}}
66 Compressão de arquivos (no conjunto total do tamanho de petabytes) traz duas vantagens:
67 \begin{itemize}
68 \item<1-> reduz o espaço para armazenamento
69 \item<2-> aumenta a velocidade (\emph{speed up}) de transferência de dados pela rede, do disco ou para o disco
70 \end{itemize}
72 \end{frame}
74 \begin{frame}{Compressão de arquivos}
76 Indexação de arquivos (no conjunto total do tamanho de petabytes) traz várias desvantagens:
77 \begin{itemize}
78 \item<1-> seria necessário "desnormalizar" o banco de dados, pois o esquema é dinâmico e a integridade é baixa
79 \item<2-> é mais lento que usar um algoritmo de ordenação (\emph{sort}/\emph{merge}) para:
80 \begin{itemize}
81 \item<3-> analisar um grande volume de dados do tamanho de petabytes
82 \item<4-> reconstruir toda a base de dados
83 \end{itemize}
84 \end{itemize}
86 \end{frame}
88 % \begin{frame}{Serialização de dados \cite{RSHT:2010}}
90 % \begin{itemize}
91 % \item<1-> Hadoop usa a classe Writables como formato de serialização de programas do MapReduce
92 % \item<2-> Writables não armazena o tipo da representação serializada, pois o tipo é esperado na "desserialização"
93 % \end{itemize}
95 % \end{frame}
97 \begin{frame}{RPC \cite{MJDPC:2010}}
99 \begin{itemize}
100 \item<1-> um mecanismo simples que é da época que o hdfs era parte do Nutch
101 \item<2-> implementa muito controle sobre como os objetos são escritos e lidos
102 \item<3-> \emph{daemons} conversam um com outro através de RPC: o DataNode se comunica com o NameNode usando o DatanodeProtocol
103 \item<4-> é unicast: um cliente e um servidor
104 \item<5-> usa Java dynamic proxy, classe especial que pode escolher quais interfaces serão implementadas em tempo de execução (classes java implementam interfaces conhecidas em tempo de compilação)
105 \item<6-> para o programa cliente parece ser uma interface java
106 \item<7-> implementa um abstração única para objetos locais e remotos
107 \end{itemize}
108 \end{frame}
111 \begin{frame}{Serialização de dados e RPC por T. White \cite{RSHT:2010}}
113 \begin{itemize}
114 \item<1-> "Protocols are defined using Java interfaces whose arguments and return types are primitives, Strings, Writables, or arrays. These types can all be serialized using Hadoop's specialized serialization format, based on Writable.
115 \item<2-> Combined with the magic of Java dynamic proxies, we get a simple RPC mechanism which for the caller appears to be a Java interface".
116 \end{itemize}
118 \end{frame}
120 %%% Local Variables:
121 %%% mode: latex
122 %%% TeX-master: "apresenta"
123 %%% End: