Vous êtes sur la page 1sur 23

El caso para el muestreo en sistemas de archivos muy grandes

George Goldberg, Danny Harnik, Dmitry Sotnikov


IBM Research – Haifa , { georgeg, dannyh, dmitrys } @ il.ibm.com

Resumen: El muestreo ha sido durante mucho tiempo una herramienta destacada en


estadística
y analítica, ante todo cuando hay grandes cantidades de
los datos están involucrados En el ámbito de los sistemas de archivos muy grandes (y
almacenes de datos jerárquicos en general), sin embargo, el muestreo tiene
principalmente
sido ignorado y por varias buenas razones. Principalmente corriendo
el muestreo en un entorno de este tipo presenta desafíos técnicos
que hacen que todo el proceso de muestreo no sea beneficioso. En esto
trabajamos demostramos que hay casos para los cuales el muestreo
vale mucho la pena en sistemas de archivos muy grandes. Abordamos esto
tema en dos aspectos: (a) el lado técnico donde diseñamos y
implementar soluciones para un muestreo ponderado eficiente que también sea
distribuido, de un solo paso y aborda múltiples aspectos de eficiencia;
y (b) el aspecto de usabilidad en el que demostramos varios
casos de uso en los que el muestreo ponderado sobre sistemas de archivos grandes es
extremadamente beneficioso En particular, mostramos casos de uso con respecto a
estimación de relaciones de compresión, pruebas y auditorías y fuera de línea
recopilación de estadísticas sobre almacenes de datos muy grandes.
I. I NTRODUCCIÓN
El uso del muestreo para obtener resultados significativos y precisos.
las estadísticas son abundantes en muchos aspectos de nuestras vidas y ha sido
metódicamente utilizado durante al menos dos siglos. Encuestas sobre grandes
poblaciones, experimentos científicos y mediciones físicas
todos construyen abren el poder del muestreo aleatorio para estimar
cifras en casos en los que revisar todo el espacio disponible es
simplemente demasiado grande o demasiado caro para ser práctico. En el Reino
de almacenamiento, el muestreo se ha utilizado típicamente en bases de datos como
un medio para acelerar algunos de los análisis disponibles.
En los sistemas de archivos, sin embargo, se ha evitado en gran medida el muestreo.
Esto también es cierto para casos extremadamente grandes donde la cizalla
el tamaño del sistema de archivos requiere considerar medios para acelerar
El proceso de adquisición de análisis de los datos. También tiene
para otros almacenes jerárquicos de datos heterogéneos, como objetos
almacenamiento. Esta evasión no es casual ya que hay múltiples
razones y desafíos que hacen que el muestreo en este entorno sea
más duro y menos beneficioso En particular, los siguientes problemas
surgen al intentar realizar estimaciones basadas en muestreo:
• Mientras muestrea un subconjunto aleatorio de un espacio plano de
elementos es sencillo (por ejemplo, muestrear un bloque de un
volumen), un sistema de archivos no permite un acceso aleatorio verdadero
a los datos ya que los archivos se encuentran en una compleja jerarquía
estructura y el acceso a los datos es a través de un árbol de directorios.
• La estructura jerárquica de los sistemas de archivos o el almacenamiento de objetos.
y la alta varianza en tamaños de archivos, objetos y direcciones
tories, pueden causar una situación en la que la cantidad a granel
de datos en el sistema reside solo en una pequeña porción de
La investigación que conduce a estos resultados es parcialmente apoyada por el europeo
Séptimo Programa Marco de las Comunidades (7PM / 2001-2013) bajo subvención
acuerdo n 257019 - VISION Cloud Project.
Los archivos. Como resultado, uno tiene que escanear los metadatos del
repositorio completo para dar cuenta de toda la totalidad de
los datos. En un sistema de archivos esto equivale a un costo total
árbol de directorio transversal.
• El costo de un recorrido completo del directorio en un sistema de archivos grande
es prohibitivamente alto y además tal recorrido
permite recopilar estadísticas precisas sobre metadatos, por lo tanto,
dejando casi ningún beneficio en hacer una estimación usando
muestreo.
Los problemas antes mencionados crean una situación por la cual es
no está claro que haya algún punto en el uso de muestreo aleatorio para
análisis en la configuración de sistemas de archivos muy grandes.
A. Nuestras contribuciones
En este trabajo discutimos el caso para usar el muestreo como una media
para lograr análisis significativos en una gran jerarquía
almacenes de datos y sistemas de archivos en particular. Nuestras contribuciones
abordar dos preocupaciones principales al hacerlo.
1) El primero es el aspecto técnico del muestreo. Formalizando
la distribución de muestreo correcta en tales sistemas, idear
ing e implementando algoritmos que realmente funcionan
Este muestreo con una sobrecarga mínima. Producimos un
interfaz general que se puede llamar durante cualquier recorrido
de los metadatos y producir una breve lista de muestras
archivos de acuerdo con la distribución deseada. Nuestro diseño
aborda los desafíos de correr en un solo pase y
en un entorno distribuido multiproceso. Estos son
características cruciales ya que el rendimiento de la poligonal es
altamente influenciado por correr de manera distribuida.
2) La segunda preocupación es identificar los casos de uso para los cuales
El muestreo es realmente beneficioso. Nuestros casos de uso incluyen
procesos que requieren una inspección profunda de datos (como
estimación de las relaciones de compresión), pruebas y auditorías
y recopilación de estadísticas fuera de línea en archivos muy grandes
sistemas.
Notamos que nuestro marco es general y su usabilidad
trasciende mucho más allá del ámbito de los sistemas de archivos y es relevante
a casi cualquier forma de almacenamiento, como almacenes de objetos, archivos y
otros. Sin embargo, en este documento, nos centramos principalmente en nuestra
implementación
ción para el importante caso de uso de sistemas de archivos a gran escala
(como el almacenamiento conectado a la red o un sistema de archivos en clúster).
B. Casos de uso
a) Alcance de la analítica :: El hecho de que hacemos muestreo
limita los tipos de análisis que podemos soportar con éxito.
Todavía hay un amplio y útil alcance de análisis que puede
se logrará en base al muestreo. En general, apoyamos cualquier
medida que puede describirse como un promedio o suma sobre local
978-1-4799-5671-5 / 14 / $ 31.00 c ⃝ 2014 IEEE

Página 2
pruebas, donde local significa una función que se puede calcular en un
Granularidad relativamente pequeña del conjunto de datos, como en un solo
archivos o en partes de archivos. Nuestras garantías son estadísticas y
Asegurar que cualquier fenómeno que sea notable en el sistema de archivos
será detectado en la muestra con muy alta probabilidad (el
los parámetros exactos están vinculados al tamaño de la muestra). Describimos
estos conceptos más formalmente en el Apéndice A.
b) Los beneficios del muestreo: el muestreo aleatorio es ben-
oficial en que permite inspeccionar muchos menos datos durante
el analisis. Dicho esto, hay configuraciones donde el
Los beneficios reales no siempre son claros. Como se mencionó anteriormente, el
El proceso de muestreo probablemente implica iterar todos los elementos en los datos
set (recorrido completo del árbol de directorios), y durante tal pase muchos
de las estadísticas se pueden calcular con una sobrecarga insignificante.
Entonces, por ejemplo, para responder una consulta como "¿cuál es el
tamaño total de imágenes jpeg en el sistema de archivos "una lata transversal completa
simplemente mantenga un contador y responda esta consulta con precisión. En
Por otro lado, hay otros casos que hacen que el muestreo sea muy
atractivo y estos son el foco de nuestro trabajo. Por ejemplo, si
la consulta involucrada requiere leer realmente los datos en los archivos
desde el disco, luego recopilar estos datos es mucho más agotador
que ejecutar un recorrido y puede convertir una tarea factible en una
escaneo de datos completo inviable.
Describimos varios ejemplos específicos de los beneficios de nuestro
marco de referencia. Estos son solo la punta del iceberg en términos de
aplicaciones:
1) Estimación de las relaciones de compresión: compresión para archivo
sistemas está ganando popularidad y hay varios tales
ofertas actuales de compresión incorporada para archivos a gran escala
sistemas (por ejemplo, [22], [20], [15]). Una herramienta para predecir el beneficio.
de usar dicha compresión en un archivo (actualmente) sin comprimir
El sistema sería altamente beneficioso. Desde la migración de un muy
El sistema de archivos grandes en forma comprimida es prohibitivamente largo
En cuanto al tiempo y los impuestos en términos de uso de la CPU (tanto durante
compresión y durante la descompresión), es primordial
comprender cuánto hay que ganar antes de decidir
seguir adelante con la migración. Además, la estimación precisa
La relación de esta relación de compresión puede resultar valiosa financieramente
a través de una planificación más estricta de la capacidad de un sistema comprimido.
La estimación de la compresión por muestreo se estudió recientemente.
en [11], pero este trabajo no fue suficiente para proporcionar una práctica
implementación para sistemas de archivos a gran escala (pero más bien enfocados
en la interfaz de bloque o una lista dada de objetos). En nuestro trabajo nosotros
implementar un recorrido distribuido eficiente con herramienta de muestreo
que culmina ejecutando una estimación de compresión basada
en la muestra elegida. El principal atractivo de este método es
la cantidad mínima de datos reales que deben leerse
desde el disco para la estimación, pero logra una precisión de sonido
garantías El rendimiento está directamente relacionado con el tiempo de
el recorrido con una sobrecarga muy pequeña para muestreo y
Se requiere una sobrecarga constante de menos de un minuto para leer
los bits de los archivos de muestra elegidos del disco y evaluar
compresión sobre ellos. En la Sección IV presentamos precisión
y pruebas de rendimiento de nuestra implementación. Por ejemplo,
estimamos con precisión la relación de compresión en 1.8TB por
leer solo 320 MB de datos mientras requiere solo el 3% del
tiempo de ejecución de evaluación exhaustiva altamente distribuida. Nuestro
La solución se está integrando actualmente como una evaluación del cliente
y herramienta de dimensionamiento para un producto de compresión prominente, y en
De hecho, esta aplicación fue la motivación original para este estudio.
2) Mecanismos de prueba y auditoría: en el anterior
ejemplo, el cuello de botella estaba leyendo principalmente datos del disco
(y también comprimiéndolo). En otros escenarios, la cantidad de
los datos pueden no ser excesivos, pero el procesamiento que tiene
sufrir es muy pesado. Ejemplos son varios análisis y
algoritmos de aprendizaje como procesamiento de video o agrupamiento
algoritmos En dicho entorno, se minimiza el conjunto de archivos.
que requieren procesamiento es una optimización valiosa.
Un ejemplo es para auditorías que requieren cálculos pesados.
ción El muestreo siempre ha jugado un papel clave en la auditoría, y
por ejemplo, verificar ese contenido de TV de ciertos tipos (por ejemplo,
anuncios) no excede un cierto porcentaje de la
el tiempo de emisión puede ser difícil de lograr de manera exhaustiva y puede
beneficiarse enormemente del muestreo. Otra área de relevancia está en
probando el éxito de los algoritmos. Por ejemplo, un caso de uso
Lo que hemos explorado es la prueba de los algoritmos de voz a texto.
Dados varios algoritmos y un gran conjunto de datos, la elección de
el mejor algoritmo no está claro y generalmente es la única forma
para verificar el resultado de dicho algoritmo de traducción es para un
ser humano para escucharlo y traducirlo. Entonces el cuello de botella aquí
no es el algoritmo de texto a voz sino la cantidad
de datos que un humano revisa. En este caso de uso, los archivos son
ponderada de acuerdo con su duración de grabación (contada
por tiempo o por el número de palabras grabadas) y la muestra
permite que un revisor humano revise un número fijo de grabaciones
unidades de tiempo y producir una estimación de la tasa de éxito de
Un algoritmo de voz a texto. Tenga en cuenta que para la tarea específica de
probando la tasa de éxito de los algoritmos, nuestra estimación resulta ser
sea especialmente estricto para algoritmos altamente exitosos. Esto es
ya que la varianza de un algoritmo muy exitoso es muy pequeña
(ver discusión en la Sección B).
3) Análisis fuera de línea de las distribuciones del sistema de archivos :: El uso
los casos hasta ahora consideran situaciones en las que el directorio completo
el recorrido no fue el cuello de botella en el sistema sino que es
la lectura y el procesamiento de datos, que es la tarea más pesada. En
En este caso de uso consideramos los beneficios en situaciones donde el
El recorrido es el eslabón más pesado de la cadena. Hay varios
métodos para tratar análisis en directorios tan grandes, por
ejemplo por distribución de la poligonal [17], o haciendo
solo un recorrido parcial [13] (un enfoque que puede poner en peligro
precisión pero funciona bien en muchos casos). La deficiencia
de estos enfoques es que las consultas en cuestión deben ser
definido antes de ejecutar el recorrido para recoger el derecho
estadísticas durante el recorrido. Alternativamente, uno puede recoger
todos los metadatos para cada uno de los millones de registros y
consultar estos metadatos sin conexión (por ejemplo, poniendo todos los metadatos
en una base de datos separada), pero para sistemas muy grandes esto puede
resultan ser una sobrecarga excesiva. En cambio nuestro mecanismo
complementa cualquier enfoque de recorrido rápido creando un corto
"Boceto" del conjunto de datos, del cual se pueden deducir numerosos
estadísticas y consultas una vez finalizada la travesía. Una travesía
de un sistema muy grande puede tomar muchas horas y quizás días

Página 3
y analizándolo uno puede aprender varias propiedades como
tipos de archivos populares, bibliotecas o propiedades de archivos. En muchos casos,
basado en este primer análisis, uno quisiera refinar la consulta,
pero esto requeriría un nuevo recorrido para recopilar nuevas estadísticas.
Usando muestreo ponderado, uno puede recolectar una lista relativamente corta
de archivos de muestra, que se ponderan según los parámetros clave.
Por ejemplo, de acuerdo con la longitud del archivo o cualquier otra información relevante
medida. Ahora se pueden ejecutar estadísticas y mediciones en el
lista corta, que proporciona resultados demostrablemente precisos, pero sin
que requiere un recorrido adicional del conjunto de datos.
Demostramos esta metodología al escanear una vida real
conjunto de datos de 17.5 millones de archivos, con 7.25 TB de datos y
analizando algunas de sus propiedades fuera de línea, finalmente comparando
estos resultados a los números exactos de exploración completa. La apelación
es mantener incluso una lista relativamente grande (digamos de 100,000
muestras) sigue siendo un orden de magnitud menor que administrar todos
de los metadatos del sistema de archivos, pero proporciona una precisión extrema
estimaciones
C. Trabajo relacionado
El muestreo ha sido durante mucho tiempo una herramienta central en estadísticas (ver,
por ejemplo [14]). En el mundo del almacenamiento ha sido principalmente
empleado en bases de datos. Hay muchas obras que intentan
para estimar los tamaños de las consultas mediante muestreo para optimizar
operaciones de bases de datos. Algunos ejemplos que consideran uniforme
el muestreo sobre los elementos de la base de datos son [9], [10], [8], [5], [3]. En
en general, la interfaz proporcionada por la base de datos es mucho más amigable
para distribuciones de muestreo que la de los sistemas de archivos. Debería ser
Sin embargo, señaló que también en las bases de datos, el muestreo uniforme puede
causar dificultades, como se señaló en [4], principalmente porque el
los elementos son demasiado finos y no se correlacionan bien
con la forma en que los datos se almacenan en el back-end.
En el contexto de sistemas de archivos y estructuras de datos jerárquicos.
en general, el muestreo y el análisis en general se vuelven más difíciles
conseguir. De hecho, existe una tendencia a modificar el diseño de
sistemas de archivos para admitir una estructura diferente a su
manejo de metadatos [16], [19] (y así lograr un análisis más rápido
en metadatos) o una estructura completamente diferente [21].
El muestreo aleatorio ponderado se estudió en [7] (ver también
referencias dentro). Mientras que el de las formas de muestreo utilizadas
aquí se ajusta a nuestro marco, los algoritmos subyacentes difieren de
la nuestra, y en particular utilizamos muchas más invocaciones de la
función de aleatoriedad que nuestra técnica (ver discusión en
Sección III).
Análisis en sistemas de archivos muy grandes donde se estudió en [13]
y en [17]. Ambos trabajos consideran solo análisis en
metadatos de los archivos (a diferencia del contenido, como el
ejemplo de compresión). El primer trabajo aborda el largo tiempo para
hacer un recorrido completo del directorio haciendo un recorrido parcial al azar
en el árbol (y por lo tanto no puede tener garantías de precisión en el
estadística). El segundo trabajo mejora la velocidad transversal al
distribución más inteligente Tenga en cuenta que nuestro trabajo es complementario a
ambas técnicas, y se pueden aplicar sobre estas más rápido
atravesar.
Finalmente, la estimación de la compresión se estudió en [6] y [11].
El primer papel muestreó partes de cada archivo que equivale a
peor rendimiento que nuestro método y sin precisión
garantías El segundo artículo sienta las bases para nuestro
La precisión garantiza la compresión, pero no proporciona
interfaz para trabajar de manera eficiente con el sistema de archivos.
II E STIMATION VIA S UESTREO - P RELIMINARIES
El objetivo principal de este trabajo es apoyar la estimación.
mediante muestreo sobre un gran conjunto de datos. Como se describe en el uso
sección de casos, existe una amplia motivación para reducir el tamaño de
los datos disponibles que pueden reducir las E / S de disco, la CPU y el tiempo para
obtener estadísticas (por nombrar algunos recursos). Sin embargo, al azar
muestrear archivos en un sistema de archivos conlleva una dificultad inherente
porque normalmente se accede a los datos a través de un árbol de directorios
(algunos sistemas de archivos tienen otros medios de acceso a los datos,
como el recorrido del nodo i, pero estos también están sujetos a algunos de
las dificultades que se describirán en la siguiente sección).
El problema con los árboles de directorios es que la mayoría de los archivos
posiblemente puede residir en un solo subdirectorio, y encontrar esto
El subdirectorio puede requerir una exploración completa del árbol de directorios. Incluso
más aún, una observación clave es que el muestreo aleatorio ingenuo de
los archivos pueden terminar dando una aproximación extremadamente inexacta.
Esto se debe al hecho de que los tamaños de archivo pueden ser muy diversos.
La investigación (por ejemplo, [6], [24]) ha demostrado que, en gran escala
sistemas de archivos, los archivos pequeños representan una gran cantidad de archivos
pero solo una pequeña porción de la capacidad total (en algunos casos 99%
de los archivos representaron menos del 10% de la capacidad). Asi que
el muestreo aleatorio de la lista completa de archivos puede generar un
conjunto de muestra con un número desproporcionado de archivos pequeños que
en realidad tienen muy poco efecto en la capacidad general. Es
por lo tanto claro que los archivos deben ser muestreados de acuerdo a su
capacidad para garantizar una buena analítica. El enfoque natural en
este caso es muestrear archivos con probabilidad de acuerdo a su
longitud. Es decir, un archivo de 2 MB de longitud tiene el doble de probabilidades de ser
elegido que un archivo de longitud 1 MB. Sin embargo, hay una sutileza.
aquí: esta linealidad en la probabilidad es para cada elección de un archivo
en el conjunto de muestra (y no para una sola opción).
A continuación describimos la distribución a la que apuntamos
en nuestro muestreo, una distribución que nos permite probar
declaraciones sobre la precisión de la estimación. Nosotros complementamos
con un modelo para generalizar el tipo de estadística para el cual
Podemos lograr garantías de precisión.
A. Notación básica
A lo largo del artículo consideramos un sistema de archivos con N archivos
(sin pérdida de generalidad, esto podría ser elementos en cualquier tipo
de conjunto de datos, como objetos en un almacén de objetos o columnas en
una base de datos). A cada archivo i ∈ { 1 , ..., N} se le asigna un peso w i
y denotar por
W=
norte

i=1
wi
El peso total en el sistema. Es instructivo pensar en el
peso como el tamaño del archivo, pero esto se puede generalizar a numerosos
Diferentes medidas.

Página 4
B. La distribución muestral
Nuestro objetivo es muestrear archivos M en el sistema con el
propiedad de que cada muestra se toma de manera uniforme al azar
de todos los archivos cuando se ajusta de acuerdo con el peso del archivo
w i . Por ejemplo, si w 1 = 1000 yw 2 = 200, entonces cada muestra
es cinco veces más probable que sea el primer archivo que el segundo archivo.
Sin embargo, tenga en cuenta que esto no significa que el primer archivo sea cinco
veces más probabilidades de ser parte del conjunto de muestras, ya que este conjunto
contiene M puntos y la proporción de cinco solo se mantiene para un solo
punto de salida del M . Más precisamente, la probabilidad de que un archivo
i aparece en el conjunto de la muestra tiene una distribución muy cerca de la
distribución binomial con M ensayos y probabilidad de éxito
wi
W . A saber, el archivo i obtiene el valor k i ∼ B ( M, w i
W ) (para ser exactos,
nuestro algoritmo genera una distribución multinomial con ensayos M
y N categorías con probabilidades w 1
W , ···, w N
W , una distribución
que tiende a la colección de distribución binomial como N y
M crecer). Tenga en cuenta que el valor k i es un número entero (no solo 0 y
1) para que el i- ésimo archivo tenga asignada una variable aleatoria k i para que el
el archivo i no está en la muestra si k i = 0 y de lo contrario aparece en
la muestra k i veces. Como resultado, un solo archivo puede aparecer más
de una vez en la muestra y esto es muy intuitivo ya que en caso
que un solo archivo es tan grande que su capacidad es igual, digamos, 1
2
de la capacidad total, entonces nos gustaría aproximadamente la mitad
de los puntos de muestra para pertenecer a este enorme archivo. Nos referimos a
la distribución que estamos muestreando como el multinomio ponderado
distribución.
en el Apéndice A damos una explicación más rigurosa de
estadísticas que se pueden obtener mediante muestreo ponderado y qué
Hay algunas garantías que se pueden obtener.
III. T HE S UESTREO M ÉTODO
Hasta ahora hemos discutido el marco general, su aplicación
aplicabilidad y definió la distribución en los archivos que pretendemos
muestra. Esta sección está dedicada a los algoritmos y métodos.
que desarrollamos para llevar a cabo el muestreo
parte sobre un sistema de archivos (u otro conjunto de datos). Desde la distribución
está bien definido y lo suficientemente simple, seleccionando un subconjunto aleatorio
de archivos de una colección dada es bastante sencillo
ejercicio de programación Sin embargo, una vez que tengamos en cuenta la escala
del conjunto de datos y la interfaz a los archivos, entonces las cosas se vuelven
menos obvio y necesita ser diseñado con más cuidado. En esto
respete nuestro diseño e intento de implementación para optimizar todo
los factores involucrados en el proceso, aunque en algunos casos de uso
Esto puede ser un exceso porque algunos de los recursos que
optimizar para podría ser abundante y no plantear ningún problema. Todavía,
Hay otros casos, por ejemplo, cuando el árbol de directorios está en
el caché o los metadatos se administran en SSD rápidos en los que
el rendimiento de las herramientas de muestreo puede convertirse en un cuello de botella
si
no diseñado cuidadosamente (consulte la Sección IV-B para ver un ejemplo de este tipo).
Dado que nuestro trabajo tiene como objetivo abordar el alcance más amplio posible,
Abordamos todos los recursos lo mejor que pudimos. En el
En la siguiente sección describimos la interfaz que proporcionamos
con una lista de requisitos clave y consideraciones de
proceso de muestreo
A. La interfaz y las consideraciones clave
La interfaz del proceso de muestreo debe intercalar con
un recorrido completo del conjunto de datos disponible (en nuestros ejemplos esto
es un recorrido completo del árbol de directorios. Implementamos tres procesos.
eso puede ser llamado por cualquier recorrido de iterador sobre archivos:
1) Inicia la muestra: Inicializa las estructuras de datos (se llama una vez al
principio del recorrido).
2) Actualizar muestra: llamado para cada archivo durante el recorrido,
toma como entrada el peso del archivo, su id y cualquier adicional
metadatos que están disponibles. Este proceso es seguro para subprocesos
y puede ser llamado por múltiples procesos en paralelo.
3) Proceso posterior: finalice y muestre la lista de muestras.
En general, se espera que sea el momento de ejecutar el recorrido
dominará el tiempo del proceso de muestreo. Sin embargo,
intentamos hacer la sobrecarga del proceso de muestreo
Lo más mínimo posible. La filosofía se aplica a los principales
recursos de memoria y utilización de CPU. Otra nota digna
las consideraciones incluyen:
• Aleatoriedad: elegir una distribución aleatoria naturalmente
requiere el uso de generación aleatoria. Si bien esto es
no es un recurso pesado, observamos que es un límite
uno cuando varios procesos se ejecutan simultáneamente (ver
Sección III-B). Por lo tanto, intentamos usar solo la misma cantidad
aleatoriedad como realmente se requiere.
• Cerraduras multiproceso y comunicación - multiprocesamiento
es un habilitador crucial para mejorar los recorridos de directorio (ver
[17])) y, por lo tanto, es compatible con varios subprocesos
necesidad. Queremos nuestro soporte de multiprocesamiento para
tener el menor impacto posible y evitar un notable
ralentizar debido a la sincronización de múltiples procesos.
• Conocimiento de caché: otro factor crítico en la velocidad de un
El recorrido es el contenido de su caché. Como se ve en la Sección IV
Si el árbol de directorios o partes de él están en caché, esto permite
tremenda aceleración Es crucial que el muestreo (o
análisis) se abstendrá de memoria extensa
uso para evitar desalojar esos datos útiles de la memoria caché.
B. La técnica central
Dado que el proceso de muestreo es parte de una iteración sobre el archivo
y aceptar un archivo a la vez, el primer enfoque natural es
tomar una decisión independiente por archivo de si
el archivo debe o no debe incluirse en la muestra (y
en caso afirmativo, ¿cuántas veces debería estar en la muestra? los
El problema es que para generar una distribución binomial por
cada archivo, uno debe lanzar una moneda sesgada varias veces por archivo
(suponiendo que el sesgo correcto se conoce de antemano). Existen
Hay varias formas de abordar esto, pero la conclusión es que el
cantidad de lanzamientos de monedas (llamadas a la función de aleatoriedad) necesita
ser al menos el peso total W del sistema de archivos. Si el
peso es la longitud de un archivo, la mejor optimización sería
para contar la longitud en trozos de tamaño 4KB (tamaño de página típico
de sistemas de archivos modernos). Entonces, la cantidad de llamadas aleatorias
termina en torno al número de trozos de 4KB en todo
sistema de archivos Tal cantidad grande de llamadas aleatorias puede ser
muy exigente para el sistema (ver Figura 2 en la Sección IV).

Página 5
En su lugar, adoptamos un enfoque diferente, que requerirá
exactamente M llama a la función de aleatoriedad (recuerde que M
es el número de muestras) Describimos esta técnica central
ahora, bajo el supuesto de que W se conoce de antemano. En
Sección III-C ampliamos nuestra implementación al caso de que
W no se conoce de antemano.
Nuestra técnica primero realiza un paso de preprocesamiento que selecciona
las "posiciones" aleatorias elegidas para la muestra de antemano.
Durante el recorrido, mapeamos nuestros puntos elegidos en reales
archivos, tal como los encontramos. En pocas palabras, el preprocesamiento
considera todo el sistema de archivos como un espacio secuencial plano
que abarca el rango entre 1 y W y elige M al azar
ubicaciones dentro de este rango (simplemente llamando a la aleatoriedad
función M veces). Cuando se ejecuta el recorrido real, un contador
se mantiene la cantidad de capacidad que se ha encontrado
lejos (por todos los archivos vistos hasta este punto de la poligonal). Cuando
llega un nuevo archivo, el contador avanza según el
tamaño de archivo, por ejemplo, del punto D al punto D + w . Ahora
si alguno de los M puntos de muestra preseleccionados pasó a residir
en el área abarcada por este archivo, este archivo se agrega a
muestra. Si hubiera más de un punto de muestra entre D
y D + w , el archivo se agrega varias veces (de acuerdo con
número de esos golpes). A continuación se muestra un pseudocódigo que implementa
la técnica.
Muestra de núcleo ( M, W ):
Preparar:
1) escogerán aleatoriamente M números entre 1 a W .
Póngalos en una matriz Sample_Index
2) Ordenar los números M en Sample_Index
3) Mantener un contador D de bytes de datos escaneados para
lejos. Inicialice a 0 (eventualmente debería llegar a W ).
4) Mantener un contador k de puntos de muestra manejados
hasta aquí. Inicializar a 0 (eventualmente debería alcanzar
M)
Traverse: revisa todos los archivos del sistema (cualquier lista
o la orden es suficiente). Para cada archivo i en el recorrido:
1) Incremente D por w i (el tamaño del archivo)
2) Si D> Índice de muestra [ k ] entonces
a. Agregue el archivo a la lista de muestra
segundo. k ++
do. Si k = M entonces termina
re. Else goto 2
3) De lo contrario, continúe con el siguiente archivo y pase a 1
Cabe destacar que, si bien se toman decisiones aleatorias
antes del recorrido, los archivos se determinan solo durante el
transversal, y de hecho un orden diferente de la transversal producirá
Una lista diferente de archivos.
C. Manejo del tamaño del sistema de archivos desconocido: muestreo de una pasada
Nuestra técnica central (así como los otros enfoques que
mencionado en la Sección III-B) supone el conocimiento de la
tamaño total W del sistema de archivos antes de que comience el proceso. Esta
es una suposición razonable en muchos entornos, ya que los sistemas de archivos
normalmente mantienen el contador de su tamaño actual (y número
de archivos) y este contador se puede consultar directamente (por ejemplo
con el comando df). Sin embargo, estos contadores se mantienen solo
para la raíz del sistema de archivos y contar todos los archivos en el sistema,
mientras que nuestro análisis a menudo quisiera centrarse en un tema específico
subárbol o familia de archivos (por ejemplo, archivos de una lista parcial de
tipos de archivo). En tales casos, la única forma de calcular W es
en realidad ejecute el recorrido completo en el directorio en cuestión, y
sobrecarga que es inaceptable (ya que típicamente la transversal es
la parte más pesada de todo el proceso).
En esta sección describimos nuestra solución para correr con
tamaño desconocido Utiliza la técnica CoreSample de Sec-
ción III-B como su componente básico y emplea algunos
métodos convencionales del ámbito de los algoritmos de transmisión.
El proceso general se describe en el siguiente pseudocódigo:
Muestra ( M )
• Sea S 1 un tamaño de segmento inicial con el guar-
antea que S 1 <W
• Deje que Samp sea una lista de archivos en la muestra actual
Primera iteración:
1) Llame a CoreSample ( M, S 1 ) → Samp
2) Establecer S = S 1
Bucle principal principal (hasta que se alcanza el final de la poligonal):
1) Llame a CoreSample ( M, S ) → Samp (fusionar con
lista existente en Samp )
2) Si se alcanza el extremo transversal, vaya al final
3) De lo contrario, S = 2 · S
4) diluir aleatoriamente Samp por licencia M azar
puntos (de 2 M )
5) Ir a 1
Final:
Diluir Samp a M puntos de muestra.
La idea básica es comenzar con un tamaño preliminar S que
no debe ser mayor que el tamaño final (se puede comenzar con
una pequeña capacidad, por ejemplo, incluso 1 MB). Uno puede ejecutar el núcleo
técnica con parámetros S en lugar de W y recibir M
puntos de muestra de los primeros S bytes que se encontraron
durante el recorrido. Ahora se puede continuar de la misma manera.
pero establece el límite S a más alto que antes. Sin embargo, hay
ahora son más de M puntos de muestra recogidos, pero peor
sin embargo, los primeros M puntos fueron elegidos más densamente que los
descanso (suponiendo que el rango realmente creció). Entonces antes
continuando reuniendo puntos de muestra, uno necesita diluir el
conjunto de puntos elegidos hasta ahora. Es posible ejecutar este proceso.
de diluir para cada nuevo punto elegido en el conjunto. Sin embargo,
para una implementación más simple, lo hacemos en fragmentos que llamamos
segmentos En cada paso, el nuevo segmento es igual en tamaño a
el total de todos los segmentos vistos hasta ahora (para permitir exponencial
crecimiento). Una vez que se termina un segmento, sus puntos de muestra son
primero se fusionó con el conjunto anterior y luego se diluyó al azar
por la mitad.
Tenga en cuenta que el pseudocódigo anterior es de alto nivel y en realidad
implementación hay detalles adicionales que deben ser
manejado con cuidado. Uno de esos puntos centrales es que es poco probable

Página 6
que los archivos se ajustarán exactamente en segmentos y siempre que un archivo
llena un segmento se divide y su resto se desbordaría
al siguiente segmento. Se puede elegir un archivo dividido para la muestra
establecido desde dos segmentos consecutivos (o desde ninguno).
El proceso de dilución toma varias muestras más grandes que
M y selecciona M archivos aleatorios para mantener en la lista. Darse cuenta de
somos cuidadosos en el algoritmo para fusionar solo listas que tienen
la misma densidad a las muestras y, por lo tanto, simplemente elegir un
un subconjunto aleatorio es suficiente para dar un nuevo conjunto de muestras con el
distribución correcta pero con menor densidad. En la práctica usamos
la técnica de "muestreo de yacimientos" [23] (una técnica para seleccionar
M muestras en la misma estructura de datos sin tener que copiar
todos los archivos M elegidos a una nueva estructura de datos).
Como el tamaño del segmento se duplica en cada iteración, el
los segmentos crecen exponencialmente y el número de iteraciones
permanece bajo Para ser exactos, nuestro método funcionará exactamente
r
log 2
W
S1
yo
Llamadas + 1 al procedimiento CoreSample. Cuando
incluidos los procesos de dilución, la cantidad de llamadas a la red
la función domness no será más de 2 M · (
r
log 2
W
S1
yo
+ 1).
Nuestras pruebas muestran que ejecutar nuestro algoritmo de una pasada sin
conocimiento previo del tamaño total tiene gastos generales muy pequeños
en comparación con la ejecución de la técnica central con un tamaño conocido
(Ver la Sección IV para la evaluación).
D. Muestreo distribuido: ejecución con múltiples procesos
El soporte de múltiples procesos se realizó mediante stan-
Dard mecanismos de bloqueo. Al CoreSample agregamos un
Mutex en los contadores D y k . Desde la operación en cuestión
son algunas operaciones simples de comparación y avance, la cerradura es
Lanzado muy rápidamente y tiene poco efecto sobre el rendimiento. UNA
un diseño supuestamente más eficiente puede repartir diferentes sub
segmentos a diferentes procesos y así reducir el número de
llamadas mutex, pero dado que la operación subyacente es extremadamente
rápido, el diseño más simple demostró ser suficiente. El unico mas pesado
la operación es una vez que los segmentos se agotan y un nuevo segmento
se genera (a través de una nueva llamada a CoreSample). En este caso
El proceso que agotó el segmento es responsable de
generar el nuevo segmento y la nueva lista Sample_Index y
no libera el mutex hasta que se completa esta operación.
1) La opción para la ejecución paralela: el enfoque anterior
para la distribución resulta adecuada en muchos casos, pero se queda corta
en algunos escenarios Una es cuando el conjunto de datos que se estudia
se encuentra en varios puntos de montaje a los que no se puede acceder desde
Un solo servidor. Otra es cuando los sistemas escalan a
escalas informáticas de alto rendimiento y la distribución puede
se benefician enormemente para múltiples nodos que ejecutan el recorrido (como
opuesto a procesos múltiples en la misma computadora). UNA
estudio reciente [17] sobre alegaciones transversales distribuidas de que existe
una desaceleración importante causada por la sobrecarga de comunicación para
sincronización entre los procesos en un recorrido que se ejecuta en
escala muy alta (del orden de 0,5 PB y superior). En lugar
idean un recorrido que se ejecuta principalmente en paralelo con
requisitos de comunicación y sincronización mucho más bajos.
Cuando se utiliza este recorrido, nuestro mecanismo de muestreo se convierte en
problemático ya que está centralizado y se basa en la comunicación
y cerraduras.
Para apoyar tales recorridos y muestreo paralelo, sugerimos
El siguiente mecanismo. Cada nodo que participa en el
Traverse lo ejecutará un proceso de muestreo separado que comienza con
un tamaño de segmento relativamente pequeño (la ejecución en cada nodo puede
ser multiproceso o subproceso único). Al final de
recorridos respectivos, cada nodo proporciona una lista de muestra M
archivos para sus respectivos archivos. Finalmente, como un paso posterior al
procesamiento,
todas las listas se fusionan en una sola muestra representativa
lista (de longitud M ). El problema es que a diferencia de la fusión y
operaciones diluidas discutidas en la Sección III-C, la fusión aquí
toma listas que pueden representar capacidades totales muy diferentes
y, por lo tanto, los puntos de muestra para diferentes nodos donde se muestrearon
con diferentes densidades.
Más formalmente, nuestro objetivo es fusionar ℓ listas L 1 , ···, L ℓ de M
puntos que representan diferentes pesos totales W 1 , ···, W ℓ .
Nuestra solución es ejecutar un pequeño proceso que selecciona aleatoriamente
cuántos puntos M se eliminarán de cada lista
(según una distribución multinomial en las listas con
probabilidades respectivas W 1
W , ···, W ℓ
W ) y luego elegir el
número requerido de puntos uniformemente al azar desde dentro
cada una de las listas Este proceso da como resultado una distribución que
es idéntico al del algoritmo de muestreo básico.
IV. E VALORACIÓN
A. El entorno de prueba y los datos
Implementamos nuestro muestreo de todas las versiones enumeradas en
Sección III en C y esperamos hacer público este código en
el futuro cercano. Además, para apoyar nuestra evaluación
implementamos un recorrido de directorio distribuido (a lo largo del
líneas de [2] con algunas optimizaciones de memoria para el manejo
recorridos a gran escala) y una herramienta de estimación de compresión (ver
Sección IV-C).
Realizamos nuestras pruebas en varios sistemas de archivos que se enumeran a
continuación:
• Impresiones FS: este sistema de archivos sintéticos consta de
aproximadamente 4.9 millones de archivos y 1.86 TB de datos.
Lo creamos utilizando las herramientas de impresiones [1] con el
aumento que reemplazamos archivos ficticios con real
contenido que coincida con el tipo de archivo (según la extensión).
Esto se hizo para hacer que nuestra compresión sea
pruebas de mation significativas. El sistema de archivos reside en un
controlador de almacenamiento de rango medio empresarial conectado a la
máquina de prueba por canal de fibra.
• Repositorio del proyecto: este sistema de archivos consta de la vida real
datos de un repositorio de proyectos compartidos de una gran I + D
unidad. Debido a problemas de control de acceso, tuvimos acceso a 17.6
Millones de archivos que constituyen 7.8 TB de datos (de un total
de 30 TB en todo el repositorio). Los datos residen en un
sistema de archivos en clúster y se accede a través de NFS. Está hecho
Hasta 3 puntos de montaje diferentes de diferentes tamaños.
• Colección de compresión: esta es una colección de 430 GB
de datos (en 21,500 archivos) de varios tipos de datos utilizados para
productos de referencia relacionados con la compresión. Reside en un
sistema de archivos en clúster y acceso a través de NFS.
• Repositorio hinchado: para probar nuestro código en mucho
a mayor escala, simulamos un sistema de archivos grande al incluir

Página 7
instantáneas en el árbol de directorios de parte del proyecto
repositorio. Esto equivalía a atravesar un sistema de archivos
con 220 millones de archivos y 93 TB de datos.
Las mediciones de rendimiento se llevaron a cabo en un servidor.
con una CPU Intel Xeon X5570 de 4 núcleos 2.93GHz con 8GB de
RAM.
Hasta el final de esta sección describimos nuestra evaluación.
del método de muestreo en sí, y de dos de los casos de uso
(estimación de compresión y análisis fuera de línea).
B. Evaluación del proceso de muestreo
Nuestra primera prueba es ver el rendimiento de nuestro recorrido y
muestreo en las impresiones FS. Lo corremos con el aumento
número de subprocesos y ver una mejora constante en la ejecución
tiempo que se iguala en alrededor de 32 hilos. La figura 1 muestra
los resultados y enfatiza la mejora dramática que el
atravesar cuando se emplea multihilo.
Fig. 1. Tiempo de ejecución de una poligonal y muestra en Impressions FS como
función del número de hilos.
Caché versus sin caché El tiempo de ejecución en la prueba anterior
estaba con un caché limpio (dejamos caer el caché antes de cada
ejecución). Esto es crucial para una evaluación justa ya que observamos
que una mejora mucho más dramática en el tiempo de ejecución
ocurre cuando el árbol de directorios está en la caché de las máquinas.
Los tiempos de funcionamiento pueden caer muy por debajo de un minuto en lugar de
a 15 minutos en el mejor de los casos con múltiples subprocesos múltiples. Mientras
esto está fuera de nuestro control cuando se ejecuta un recorrido en un tercero
máquina de fiesta, nos da una idea de la fluctuación
resultados que vemos en los tiempos de ejecución.
Ejecutar con el árbol de directorios en caché da muy alto
rendimiento al atravesar y es un escenario ideal para probar
la sobrecarga de nuestras herramientas de muestreo en la parte superior de la
poligonal. En
La figura 2 vemos los tiempos de ejecución de la poligonal como un soporte
solo, versus el mismo recorrido con nuestro mecanismo de muestreo
encima. Vemos que la sobrecarga es muy pequeña y por casi
todos los puntos se suman a 10 segundos de ralentización. Para rematar esto, nosotros
también ejecutó una prueba que simplemente agrega llamadas a la aleatoriedad
función por cada bloque de 4 KB en el archivo, una prueba que imita
un enfoque más simple que el nuestro pero requiere una cantidad lineal de
llamadas de aleatoriedad (ver discusión en la Sección III-B). Este gráfico
justifica nuestra insistencia de minimizar las llamadas aleatorias como
de hecho, somos testigos de un cuello de botella en la capacidad de ejecutar intensivo
Invocaciones múltiples de la función de aleatoriedad.
Fig. 2. Comparación del tiempo de ejecución de la poligonal solo con la poligonal
con nuestro muestreo y un método de muestreo pesado de aleatoriedad. Corrió en el
Sistema de archivos de impresiones con árbol de directorios en caché.
El efecto de muchos segmentos. A continuación estudiamos el efecto de
funcionando con una capacidad total desconocida W (ver Sección III-C).
El efecto fue imperceptible en la mayoría de las pruebas que realizamos.
(especialmente si el caché estaba apagado). Solo logramos
vemos un efecto al llevar el proceso al extremo: ejecutamos un
prueba muy rápida (en la colección de compresión, con caché) y
tomó una cantidad relativamente grande de muestras (1,000,000 de muestras
puntos). La Figura 3 muestra los gastos generales al hacer varios segmentos
cruces a lo largo del recorrido. Como se ve, el efecto se mide
en segundos individuales que se vuelven insignificantes en travesías más grandes.
Fig. 3. Tiempo de ejecución en el conjunto de compresión con caché habilitado como
función
del tamaño del segmento inicial con respecto al tamaño total (es decir, S 1
W con 1
lo que significa que la capacidad total se conocía de antemano).
C. La evaluación de la estimación de la compresión
Un caso de uso central para este estudio fue la relación de compresión
Estimacion. Para esto implementamos un proceso que toma como
ingrese una lista de muestra de archivo y para cada aparición de archivo en el
la lista selecciona un fragmento de compresión aleatorio, lee y comprime
para evaluar la compresibilidad del fragmento (si aparece un archivo
más de una vez en la lista, se elige un fragmento adicional
y comprimido para cada aparición). Al final el proceso.
devuelve la relación de compresión promedio en todos los fragmentos que
se comprimió
En la Tabla I vemos los claros beneficios de ejecutar la estimación.
procesar durante un escaneo completo de los datos. El muestreo basado
la estimación lee solo 320 MB de datos del disco (independientemente

Página 8
Conjunto de datos
Total
Capacidad de lectura
Exhaustivo
Muestreo + Estimación
Capacidad (GB)
para la estimación
Tiempo (seg)
Tiempo (seg)
Impresiones
1905 GB
320 MB
49248
1560
Compresión
428 GB
320 MB
6032
42
TABLA I
C OMPARACIÓN DEL EJERCICIO EXHAUSTIVO VS MUESTREO PARA LA
ESTIMACIÓN DE COMPRESIÓN . B OTH RAN CON 32 HILOS .
del tamaño completo del sistema de archivos) y devuelve una estimación con
sonido garantizado
Los tiempos de ejecución en la tabla incluyen tanto el tiempo de
el recorrido con muestreo y el tiempo para leer y comprimir
esos datos en las muestras. En la Fig. 4 vemos solo el tiempo de la
partes de estimación de compresión, sin la transversal. Esta parte
permanece relativamente constante, oscilando entre 4 minutos y menos
de un minuto (dependiendo del número de hilos). En caso
de un gran recorrido, esto es sobrecarga es insignificante, para un rápido
atravesarlo puede convertirse en la parte más pesada de la estimación.
Aparte del subprocesamiento múltiple, la mejor manera de acortar esta parte
es reducir el número de muestras (a costa de reducir
exactitud).
Fig. 4. Tiempo de ejecución de la parte de estimación de compresión del proceso.
(sin la poligonal) con 10.000 muestras.
Luego evaluamos la precisión de la estimación. Para esto nosotros
ejecutó la estimación en Impressions FS para 300 independientes
veces (con nuevas opciones al azar). Los resultados (en la Figura 5)
están muy bien centrados en la relación de compresión real en
La forma de una distribución normal. Vemos que el maximo
sesgar en 300 carreras fue 1 . 1% y la abrumadora mayoría
de las carreras arrojó una estimación mucho mejor. En términos de
aplicabilidad, esta es una estimación excelente, lo suficientemente buena como para
tomar todas las decisiones necesarias relacionadas con la compresión.
D. Evaluación del caso de uso del análisis fuera de línea
En esta sección mostramos algunas de las aplicaciones
de nuestro mecanismo de muestreo como herramienta para poca memoria y
herramienta de análisis de recursos fuera de línea para comprender las tendencias y
distribuciones dentro del sistema de archivos. Para este fin, ejecutamos nuestro
atravesar y muestrear sobre el Repositorio del Proyecto y el
Repositorio hinchado , que recopila una lista de 100,000 muestras de
cada uno de ellos. Tenga en cuenta que esto está muy por debajo del número general
de archivos en el repositorio. La travesía en realidad devolvió dos
listas: una ponderada según la longitud del archivo (para capacidad basada
análisis) y el otro con cada archivo obteniendo peso 1 (para
análisis sobre el número de archivos). Tenga en cuenta que recopilamos el
Fig. 5. El histograma muestra cuántas pruebas de 300 ejecuciones independientes
cayó en cada rango de inclinación.
muestras por separado en cada uno de los tres puntos de montaje de este
sistema de archivos y los fusionó utilizando el método descrito en
Sección III-D1.
Una primera prueba fue identificar las extensiones de archivo populares
de acuerdo con la muestra de capacidad, y compare su estimación
capacidades a las que fueron recolectadas exhaustivamente. los
resultados, se muestran en la Figura 6.
Otra prueba fue aprender las relaciones de compresión de cada uno de
Estos tipos de archivos por separado. Mientras un tipo de archivo fuera popular
suficiente, tenemos suficientes puntos de muestra para proporcionar garantías
en la precisión de la figura de compresión que le adjuntamos.
Ejemplos de algunos de los resultados se encuentran en la Figura 7.
Fig. 7. Relaciones de compresión para varios tipos de extensión en los proyectos
Repositorio.
La Figura 8 muestra las capacidades de los archivos para diferentes profundidades.
en el árbol de directorios (esto se ejecutó en uno de los 3 montajes
puntos del sistema de archivos del repositorio de proyectos). Vemos eso
la estimación logró obtener resultados extremadamente precisos con
100.000 puntos de muestra. Hicimos el mismo experimento también con
10,000 y 1000 puntos de muestra. Naturalmente, el sesgo en esto
los casos crecieron, pero curiosamente, incluso para 1000 puntos de muestra todos

Página 9
Fig. 6. Capacidades de los tipos de archivos populares en el repositorio de proyectos de
acuerdo con la estimación y los números reales de una evaluación exhaustiva.
Fig. 8. La distribución de la capacidad en la profundidad del árbol de
directorios. Exhaustivo
vs análisis fuera de línea en 100,000 muestras.
Fig. 9. El sesgo de la estimación de capacidades por profundidad para diferentes
muestras
Tamaños.
de las estimaciones donde dentro del 1% del valor real. Esta
se muestra en la Figura 9
Finalmente ejecutamos una prueba sobre el árbol de directorio de Proyectos hinchados
(93 TB, 220 millones de archivos). El tiempo de ejecución de la travesía.
en este gran set fueron más de 70 horas. Logramos probar
para numerosas propiedades simples mirando el ejemplo de archivo
lista. Quizás lo más interesante fue mirar instantáneas
tamaños estimados a lo largo del tiempo. Todas las instantáneas tomadas en
las últimas 2 semanas mostraron un tamaño consistente del repositorio del proyecto
durante este tiempo. Sin embargo, 2 instantáneas tomadas hace más de un año
muestran que el repositorio ha crecido aproximadamente un 46% en
este marco de tiempo Vea la Figura 10 para más detalles.
Fig. 10. Evolución de la capacidad de las instantáneas en el sistema de archivos Bloated
Repository.
V. C ONCLUSIONES
En este trabajo exploramos aplicaciones de muestreo basadas
estimaciones en el dominio de sistemas de archivos (y jerárquicas
almacenes de datos en general). Empleando la metodología de muestreo
en este ámbito trajo nuevos desafíos que debían ser
abordado con el fin de que sea práctico para su uso en muy grandes
escalar sistemas de archivos. Vemos nuestras herramientas como un punto de entrada
fácil
para realizar análisis en diversas configuraciones y creer que
las aplicaciones presentadas en el documento son solo la punta de
el iceberg en términos de usabilidad del muestreo ponderado
paradigma en almacenes de datos jerárquicos.

Página 10
R EFERENCIAS
[1] N. Agrawal, A. Arpaci-Dusseau y R. Arpaci-Dusseau. Generando
impresiones realistas para la evaluación comparativa del sistema de archivos. En el 7º
USENIX
Conferencia sobre tecnologías de archivo y almacenamiento, (FAST '09) , páginas 125–
138, 2009.
[2] B. Awerbuch y R. Gallager. Un nuevo algoritmo distribuido para encontrar
amplitud primero busca árboles. IEEE Trans. Inf. Theor , 33 (3): 315–322, mayo
1987.
[3] M. Charikar, S. Chaudhuri, R. Motwani y V. Narasayya. Hacia
error de estimación garantiza valores distintos. En actas de la
Decimonovena ACM SIGMOD-SIGACT-SIGART Simposio sobre Principios
of Database Systems, (PODS '00) , páginas 268–279, 2000.
[4] S. Chaudhuri, G. Das y U. Srivastava. Uso efectivo de nivel de bloque
muestreo en estimación estadística. En los procedimientos de la ACM SIGMOD
Conferencia internacional sobre gestión de datos , páginas 287–298, 2004.
[5] S. Chaudhuri, R. Motwani y V. Narasayya. Muestreo aleatorio para
construcción del histograma: ¿cuánto es suficiente? En SIGMOD 1998,
Actas ACM SIGMOD Conferencia internacional sobre gestión
of Data , páginas 436–447, 1998.
[6] C. Constantinescu y M. Lu. Estimación rápida de compresión de datos
y Desduplicación para grandes sistemas de almacenamiento. En actas de la
2011 Primera Conferencia Internacional sobre Compresión de Datos, Comuni-
cationes y procesamiento , páginas 98–102. IEEE, 2011.
[7] P. Efraimidis. Muestreo aleatorio ponderado sobre flujos de datos. CoRR ,
abs / 1012.0256, 2010.
[8] P. Gibbons, Y. Matias y V. Poosala. Mantenimiento incremental rápido de
histogramas aproximados En VLDB'97, Actas de la 23ª Internacional
Conferencia sobre bases de datos muy grandes, 25-29 de agosto de 1997, Atenas,
Grecia , páginas 466–475, 1997.
[9] P. Haas y A. Swami. Procedimientos de muestreo secuencial para el tamaño de la
consulta.
Estimacion. En Actas de 1992 ACM SIGMOD International
Conferencia sobre gestión de datos, San Diego, California, del 2 al 5 de junio,
1992 , páginas 341–350, 1992.
[10] Peter J. Haas, Jeffrey F. Naughton, S. Seshadri y Lynne Stokes.
Estimación basada en muestreo del número de valores distintos de un
atributo. En VLDB'95, Actas de la 21ª Conferencia Internacional
sobre bases de datos muy grandes , páginas 311–322, 1995.
[11] D. Harnik, R. Kat, O. Margalit, D. Sotnikov y A. Traeger. Comprimir
o no comprimir: uso efectivo de recursos para la compresión en tiempo real.
En las actas de la 11ª conferencia de USENIX sobre archivos y almacenamiento
Tecnologías (FAST 2013) , páginas 229–241. Asociación USENIX, 2013.
[12] Wassily Hoeffding. Desigualdades de probabilidad para sumas de aleatorio acotado
variables Revista de la Asociación Americana de Estadística , 301 (58): 13–
30 de 1963.
[13] H. Huang, N. Zhang, W. Wang, G. Das y A. Szalay. Justo a tiempo
análisis en sistemas de archivos grandes. En la novena Conferencia USENIX sobre
Archivo y
Storage Technologies (FAST 2011) , páginas 217–230, 2011.
[14] J. Jiang. Técnicas de muestra grande para estadística . Textos de Springer en
Estadística. Springer, 2012.
[15] D. Kay. Oracle Solaris ZFS Storage Management. Reporte técnico
507914, Oracle Corporation, noviembre de 2011.
[16] J. Koren, A. Leung, Y. Zhang, C. Maltzahn, S. Ames y E. Miller.
Búsqueda y navegación de sistemas de archivos a escala de petabytes basados en
facetas. En
Actas del 2º Taller internacional de almacenamiento de datos petascale
(PDSW '07) , páginas 21–25, 2007.
[17] Jharrod LaFon, Satyajayant Misra y Jon Bringhurst. En distribuido
recorrido del árbol de archivos de sistemas de archivos paralelos. En SC Conferencia en
lo alto
Performance Computing Networking, Storage and Analysis, SC '12 ,
página 87, 2012.
[18] RJ Larsen y ML Marx. Una introducción a la estadística matemática
y sus aplicaciones . Manual de soluciones para estudiantes. Prentice Hall PTR, 2011.
[19] A. Leung, M. Shao, T. Bisson, S. Pasupathy y E. Miller. Catalejo:
Búsqueda de metadatos rápida y escalable para sistemas de almacenamiento a gran
escala. En séptimo
Conferencia USENIX sobre tecnologías de archivos y almacenamiento, (FAST '09) ,
páginas 153–166, 2009.
[20] S. Moulton y C. Alvarez. Compresión de datos y deduplicación de NetApp
Guía de implementación e implementación de cationes: datos ONTAP en funcionamiento
en modo de clúster. Informe técnico TR-3966, NetApp, junio de 2012.
[21] Margo I. Seltzer y Nicholas Murphy. Los sistemas de archivos jerárquicos son
muerto. En Proceedings of HotOS'09: 12th Workshop on Hot Topics in
Sistemas operativos , 2009.
[22] R. Tretau, M. Miletic, S. Pemberton, T. Provost y T. Setiawan.
Introducción a los dispositivos de compresión en tiempo real de IBM. Técnico
Informe SG24-7953-01, IBM, enero de 2012.
[23] Jeffrey Scott Vitter. Muestreo aleatorio con un reservorio. ACM Trans.
Mates. Softw. , 11 (1): 37–57, 1985.
[24] Brent Welch y Geoffrey Noer. Optimización de un hpc ssd / hdd híbrido
sistema de almacenamiento basado en distribuciones de tamaño de archivo. En el 29º
Simposio de IEEE
sobre sistemas y tecnologías de almacenamiento masivo, MSST 2013 , páginas 1–12,
2013
Un apéndice
A. Las estadísticas de interés.
El muestreo ponderado se describe anteriormente como nuestro objetivo, pero es
de hecho, solo un trampolín crucial para lograr el objetivo real
que es análisis en big data. A continuación definimos una familia de
funciona en datos que son adecuados para la estimación mediante muestreo.
Definición 1. Sea f ( i, j ) una medida definida en un archivo i ∈
{ 1 , ···, N} de peso w i y posición j ∈ { 1 , ···, w i } y
dejar W =
∑N
i = 1 w i . El promedio ponderado de f se define como
F=
1
W
norte

i=1
wi

j=1
f ( i, j )
O en palabras, la estadística F es una suma de una función que puede
ser calculado localmente en archivos (por supuesto, esto puede generalizarse
a una función sobre conjuntos de archivos, o sobre cualquier elemento abstracto
en un conjunto de datos). A continuación se presentan algunos ejemplos de esta noción
abstracta:
• Consulta 1: ¿cuál es la capacidad total de los archivos con tipo?
'jpeg'? El peso w i es igual a la longitud del archivo y
f ( i, j ) se establece en 1 si el i- ésimo archivo es una imagen jpeg y se establece
a 0 de lo contrario (para todo j ).
• Consulta 2: ¿Cuál es la fracción de archivos con permiso de escritura?
sion? El peso de cada archivo es constante w i = 1 y se establece
f ( i, j ) = 1 si el archivo está abierto para escrituras y 0 en caso contrario.
• Consulta 3: si cada archivo es un programa de televisión, ¿cuánto
de la época es publicidad? El peso w i se establece en
longitud del archivo en cuestión de segundos y f ( i, j ) = 1 si el j ésimo
segundo en la i ª archivo es un anuncio.
• Consulta 4: ¿Cuál es el beneficio potencial de ejecutar un
Algoritmo de compresión específico en todos los archivos en el archivo
¿sistema? El peso w i es igual a la longitud del archivo. por
posición j en el archivo i defino f ( i, j ) como la relación de compresión
de la "localidad" de compresión de esta ubicación en el archivo
(por ejemplo, si la compresión se realiza de forma independiente
comprimir fragmentos de entrada alineados, luego la localidad del
la posición j es la porción alineada a la que pertenece, y
f ( i, j ) es la relación de compresión de este bloque. Ver [11]
para una discusión en profundidad de tal formalización).
B. Poniéndolo todo junto
La formalización descrita anteriormente se pone en contexto cuando
utilizando muestreo ponderado. Defina el siguiente método de
aproximación:

Página 11
Estimación basada en muestreo:
1) Ejecute el algoritmo de muestreo ponderado para obtener
un conjunto de muestra S de archivos M en { 1 , ···, N}
2) Para cada i ∈ S tome elija j i uniformemente en
aleatorio en { 1 , ···, w i }
3) Salida de la estimación
F=
1
METRO

i∈S
f ( i, j i )
La técnica de estimación y el método se unen.
usando el siguiente teorema:
Teorema 1. Sea F un promedio ponderado como en la Definición 1
y F sea la salida del método de estimación de muestreo anterior
utilizando el conjunto S tomado de una distribución multinomial ponderada
(Ver Sección II-B). Supongamos que hay constantes a y b
tal que a ≤ f ( i, j ) ≤ b entonces por cada constante ε> 0 it
sostiene que
P rob [ | F - F | > ε ] < 2 e
- 2 Mε 2
(b−a)2
La prueba es un resultado directo de la desigualdad de Hoeffding [12],
al considerar las posiciones en los archivos como el azar básico
variables a la mano. La abstracción de mirar f ( i, j ) como un
medir las posiciones dentro de un archivo (en lugar de considerar un
medido definido en archivos) es muy útil para simplificar el
análisis (aunque para muchos de los casos de uso interesantes f
es solo una función de su archivo i y no de la posición j ). los
Se omite la prueba formal.
a) Uso del teorema 1: tenga en cuenta que el teorema 1 requiere un
limitado en el rango de la función f y de hecho si la varianza
de f es excesivo, entonces la precisión de la estimación no puede
Estar garantizado. En aplicaciones es típicamente posible considerar
medidas que están delimitadas en el rango [0 , 1] (como
visto en todos los ejemplos en la Sección A). Entonces el teorema
las garantías son del siguiente tipo: al tomar 5000
muestras para una función con f ( i, j ) ∈ [0 , 1] se garantiza que
el sesgo de estimación excederá 0 . 028 con probabilidad como máximo
Número de
Confianza
Hoeffding
Poisson
Muestras
Nivel
Inclinación ( ε )
Inclinación ( ε )
5000
10 - 3
0,028
0.0048
5000
10 - 6
0,038
0.0076
10000
10 - 3
0,019
0.0033
10000
10 - 6
0,027
0.0052
CUADRO II
C OMPARACIÓN ENTRE UTILIZANDO EL LÍMITE H OBSERVACIÓN ( TEMA 1)
CON b - a = 1 VS . UNA ESTIMACIÓN DE P OISSON PARA EL CASO DE QUE f ( i, j )
ES UNA PRUEBA B ERNOULI CON PROBABILIDAD p = 0 . 01. ES EVIDENTE QUE
CUANDO ES POSIBLE USAR LA ESTIMACIÓN P OISSON (B ERNOULI
PRUEBAS CON BAJA PROBABILIDAD ) ENTONCES LAS GARANTÍAS DE PRECISIÓN
SON MUCHO MEJORES QUE EN EL CASO GENERAL .
1
1000 y se sesgará en más de 0 . 038 solo con probabilidad
menos de 1 en un millón. En general, la probabilidad de que un
la estimación se sesgará en más de ε decae exponencialmente como
el número de muestras M crece. El hecho de que ε es cuadrado
significa que para reducir el sesgo por un factor de k uno
necesita aumentar el número de muestras en k 2 (por ejemplo, reducir a la mitad
la inclinación requiere 4 veces más muestras).
Un caso especial interesante es que todos los valores de f son 0
o 1, y que esto ocurre con baja probabilidad. Por ejemplo,
el caso de uso de prueba (Sección I-B2) espera una baja probabilidad
de errores ( f ( i, j ) = 1) o de lo contrario el método que se está probando es
muy mal. En este caso, usar el Teorema 1 no proporciona
suficientes garantías de precisión (por ejemplo, garantizar un sesgo
de ± 0 . 028 para valores dentro de 0 . 05 simplemente no es útil. los
La razón de esta deficiencia es que el Hoeffding subyacente
La desigualdad ignora la varianza de las variables aleatorias disponibles
y usa su rango para dar el peor de los casos vinculado a la varianza.
En este caso importante, vale la pena usar una aproximación
del promedio ponderado usando la distribución de Poisson - esto
la aproximación se conoce como "la ley de eventos raros" o "la
ley de los números pequeños ”(véase, por ejemplo, en [18], capítulo 4.2).
En la Tabla II damos un ejemplo numérico de la precisión.
eso puede garantizarse cuando se usa el Teorema 1 y cuando se usa
Una estimación de Poisson con probabilidad de error p = 0 . 01. As
visto que las garantías proporcionadas con este límite son mucho más estrictas
y haga que el método sea atractivo en estos rangos también

Vous aimerez peut-être aussi