Skip to content

Árboles de decisión para Regresión Lineal

CART -> Classification and Regressión Tree

Una vez ejecutamos nuestro algoritmo árbol de decisión, el conjunto de datos de las variables independientes quedará dividido en segmentos.

Arbol de decision.png

Básicamente se fija en la entropia de los puntos para poder agruparlos, cada una de estas divisiones aporta una información realmente buena.

Arbol decision2.png

Podemos ver en verda la media de los segmentos y en la imagen de abajo el árbol de decisiones

Arbol decision3.png

 
 

Regresión con máquina de soporte vectorial

Regresión con máquina de soporte vectorial SVR

Sirven tanto para regresiones lineales como no lineales. La idea es ajustar una calle, he intentar mantener cuántas más obvervaciones posibles del conjunto de datos dentro de la calle, limitando unos márgenes máximos.

Hyper parámetro épsilon

La anchura del pasillo se controla mediante un hiper parámetro, épsilon. Cuánto mayor es ese valor, mayor es la anchura de la calle.

Objetivo

En la regresión lineal se intenta minimizar el error entre la predicción y los datos. En SVR el objetivo es que los errores no superen el umbral establecido.

Regresión Lineal Multiple

Restriciones de la Regresión Lineal

  1. Linealidad
  2. Homoceadasticidad
  3. Normalidad Multivariable
  4. Independencia de los errores
  5. Ausencia de multicolinealidad. El modelo es incapaz de distinguir los efectos de una variable dummy.

Variable Dummy

Cuando necesitemos construir un modelo con variables ficticias (variables dummy), hay que omitir uno de los factores, uno de los niveles de la variable ficticia. Es decir, si tenemos 100 países como variables ficticias, solo colocaríamos como dummy 99 en el modelo de regresión.

P-Valor

Que no es

  • El p-valor no es la probabilidad de que la afirmación sea cierta.
  • El p-valor no es la probabilidad de que la hipótesis nula sea cierta.

Nos indica que tan probable es obtener un resultado con una hipótesis nula verdadera.

[[1]]

Paso a paso en la regresión lineal multiple

Añadir todas las variables independientes

No, por dos razones:

  1. NO por añadir más variables vamos a tener más información. In Basura = Out Basura.
  2. Si el número de variables va creciendo hace díficil la explicación lógica del proceso.

5 métodos obtención de variables relevantes

Tenemos 5 métodos disponibles para obtener las variables importantes y que tendrán relevancia en el algoritmo de regresión lineal multiple.

Exhaustivo (All-in)

Metemos todas las variables en el modelo, razones por las que hacer esto:

  • Conocimiento previo de todas las variables. Todas son variables predictoras.
  • Por necesidad, nos obligan a utilizar todas las variables.
  • Preparación previa para realizar la eliminación hacia atrás.

Eliminación hacia atrás

  1. Selección del el nivel de significación en el modelo, normalmente SL=0.05
  2. Se calcula el modelo con todas las variables
  3. Se obtiene la variable predictoras con el p-valor más grande. Si P > SL, entonces pasamos al paso 4, sino vamos a fin.
  4. Se elimina la variable predictora.
  5. Reajuste del modelo sin dicha variable.

Con el nuevo modelo creado, las variables de ese tendrán una seria de p-valores y por tanto repetimos el paso 3, consideramos la variable predictora con p-valor más grande, si el p-valor es todavía mayor que el nivel de significación, se elimina y se reajusta el modelo otra vez.

Selección hacia adelante

  1. Seleccionamos un nivel de significación, pero en este caso será para entrar en el modelo.
  2. Ajustamos todos los modelos de regresión lineal simple. Elegimos el que tiene el menor p-valor.
  3. Conservamos esta variables y ajustamos todos los modelos con la variable extra añadida a la que ya tenga el modelo en ese momento.
  4. Consideramos la variable predictora con el menor p-valor. Si P < SL volvemos al paso 3.

Seguiremos sucesivamente añadiendo variables mientras el p-valor sean inferior al nivel de siginificación, en el caso que la variable que se acaba de añadir ya supere el SL, daremos por terminado el trabajo y conservaremos el modelo anterior como el correcto.

Eliminación bidireccional o regresión dual

  1. Seleccionamos dos niveles de significación para entrar y salir del modelo.
  2. Selección hacía delante p-valor < SLEnter
  3. Selección hacía atrás p-valor < SLStay
  4. No hay nuevas variables para entrar ni tampoco variables antiguas para salir

Comparaciones de puntos

  1. Seleccionar un criterio de la bondad de ajuste. Cuando un modelo será mejor que otro.
  2. Construir todos los Modelos: 2N – 1
  3. Selección del modelo con mejor criterio

OJO! -> 10 columnas de datos = 1023 modelos

Linux – Bash

Bash Script

Un Shell Script no es más que un fichero con sentencias para el intérprete que se vaya a utilizar. Entre los intérpretes más utilizados se encuentran: Bash,Perl, Python y PHP para los entornos web.

Argumentos posicionales

En un script se pueden especificar argumentos en una línea de comando, es decir un nombre_de_script+un directorio o más un número o una letra. El script en bash accede a estos parámetros mediante las variables $0, $1, etc.:

  • $0 Nombre del script
  • $1 Argumento uno
  • $2 Argumento dos
  • $3 Argumento tres, así hasta el nueve.
  • $# Número de argumentos total
  • $* Cadena con todos los argumentos
  • shift Desplaza hacia la izquierda los arguementos, el 10 pasa a ser 9 y así posteriormente.
  • $? Código de retorno

El código de retorno

Cada programa que se ejecuta en el shell cuando termina guarda su código de retorno en la variable $?. Este código es un valor numérico que determina si el programa ha terminado de forma correcta. El código de retorno de valor 0 para la correcta ejecucción, cualquier otra valor para la incorrecta ejecucción.ç

  • $? Código de retorno

Algunos scripts con los principales operadores de bash. comprobar ficheros y directorios, condicionales, bucles, while, until, funciones, etc.:

Redirecciones de entrada y salida

Redirección de salida estándar a un archivo

*hace que el descriptor de archivo 6 sea una copia de stdout (descriptor archivo 1)
exec 6>&1
*abre el archivo "test.data" para escritura
exec 1>test.data
*genera algún contenido
echo "data:data:data"
*recupera stdout original, al hacer que sea una copia del descriptor de archivo 6
exec 1>&6
*Cierra el descriptor de archivo 6
exec 6>&-

Abre y cierra archivos

# abre el archivo test.data para lectura
exec 6<test.data
# lee hasta el final del archivo
while read -u 6 dta
do
  echo "$dta" 
done
# cierra el archivo test.data
exec 6<&-

Salida de órdenes externas

VAR=$(find . -name "*h")

Condicionales con números

  • -lt menor que <
  • -gt mayor que >
  • -le menor o igual que <=
  • -gr mayor o igual que >=
  • -eq igual ==
  • -ne no igual !=

Condionales con texto

  • = cadenas de texto exactemente iguales

!= cadenas de texto no iguales

  • <
  • >
  • -n la cadena no está vacía
  • -z la cadena está vacía

Condicionales con archivos

  • -e existe
  • -f archivo normal, no es un directorio
  • -s no tiene tamaño 0
  • -d es un directorio
  • -r tiene permiso de lectura para el usuario que lanza el script
  • -w permiso de escritura para el usua…
  • -x permiso de ejecución

Manipulación de texto

${cadena:posicion:longitud}
Por ejemplo en la cadena string=abcABC123ABCabc:
echo ${string:0} : abcABC123ABCabc
echo ${string:0:1} : a (primer caracter)
echo ${string:7} : 23ABCabc
echo ${string:7:3} : 23A (3 caracteres desde posición 7)
echo ${string:7:-3} : 23ABCabc (desde posición 7 hasta el final)
echo ${string: -4} : Cabc (atención al espacio antes del menos)
echo ${string: -4:2} : Ca (atención al espacio antes del menos)

Linux – Comando Sed

Trucos de consola usando sed

Finales de linea tipo DOS (CR/LF) a formato Unix.

sed ‘s/.$//’ # asume que todas las lineas terminan con CR/LF sed ‘s/\x0D$//’ # funciona con ssed, gsed 3.02.80 o superior

Borrarado espacios en blanco al principio y el final de cada linea
sed 's/^[ \t]*//;s/[ \t]*$//'
Alineando el texto a una anchura de 79 columnas
sed -e :a -e 's/^.\{1,78\}$/ &/;ta'  # set at 78 plus 1 space
Substituciones «foo» por «bar» en cada linea
  • sustituir solo la primera ocurrencia en la linea
    • sed ‘s/foo/bar/’
  • sustituir solo la cuarta ocurrencia en la linea
    • sed ‘s/foo/bar/4’
  • sustituir todas las veces que se encuentre
    • sed ‘s/foo/bar/g’
  • sustituir solo la anteultima ocurrencia
    • sed ‘s/\(.*\)foo\(.*foo\)/\1bar\2/’
  • sustituir solo la ultima ocurrencia
    • sed ‘s/\(.*\)foo/\1bar/’
  • sustituir "foo" por "bar" SOLO en las lineas que contengan "baz"
    • sed ‘/baz/s/foo/bar/g’
  • sustituir "foo" por "bar" EXCEPTO en las lineas que contengan "baz"
    • sed '/baz/!s/foo/bar/g'
Mostrar la linea numero 52
sed -n '52p'                 # metodo 1
sed '52!d'                   # metodo 2

sed '52q;d' # metodo 3, eficiente para ficheros grander

Quitar la mayoria de los tags HTML (reconoce tags multilinea)
sed -e :a -e 's/<[^>]*>//g;/</N;//ba'

Emulación algunos comandos

Contar lineas (emula «wc -l»)
sed -n '$='
Ordenar lineas al reves (emula «tac»)
sed '1!G;h;$!d'               # metodo 1
sed -n '1!G;h;$p'             # metodo 2
Invierta cada caracter de la linea (emula «rev»)
sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
Une pares de lineas lado a lado (emula «paste»)
sed '$!N;s/\n/ /'
Muestra las 10 primeras lineas (emula «head»)
sed 10q
Muestra la 10 ultimas filas (emula «tail»)
sed -e :a -e '$q;N;11,$D;ba'
Muestra solo las lineas que se ajustan a la expresion regular (emula «grep»)
sed -n '/regexp/p'           # metodo 1
sed '/regexp/!d'             # metodo 2
Borra lineas duplicadas consecutivas (emula «uniq»)
sed '$!N; /^\(.*\)\n\1$/!P; D'

Referencias:

http://sed.sourceforge.net/sed1line.txt
http://sed.sourceforge.net/sedfaq.html
https://www.gnu.org/software/sed/manual/sed.html  

Hadoop y Spark

Hadoop

Apache Hadoop es un framework de software que soporta aplicaciones distribuidas. Permite a las aplicaciones trabajar con miles de nodos y petabytes de dtos.

Arquitectura Hadoop

El Hadoop Distributed File System (HDFS) es un sistema de archivos distribuido, escalable y portátil escrito en Java para el framework Hadoop. Cada nodo en una instancia Hadoop típicamente tiene un único nodo de datos; un clúster de datos forma el clúster HDFS.

Spark

Descripción Spark

Spark es un sistema de computación en clúster de propósito general. Puede implementar y ejecutar aplicaciones paralelas en clústeres que van desde un solo nodo hasta miles de nodos distribuidos. Spark fue diseñado originalmente para ejecutar aplicaciones Scala, pero también es compatible con Java, Python y R

Este cluster de Spark correrá bajo el protocolo Yarn de HADOOP. Los trabajos de Spark pueden ejecutarse en YARN en dos modos: modo de clúster y modo de cliente. Comprender la diferencia entre los dos modos es importante para elegir una configuración de asignación de memoria adecuada y para enviar trabajos como se espera.

Los trabajos de Spark constan de dos partes:

  • Ejecutores Spark. Ejecutan las tareas reales.
  • Controlador Spark. Organiza los ejecutores.

Modo Clúster Todo se ejecuta dentro del clúster. Puede iniciar un trabajo desde cualquier equipo y el trabajo continuará ejecutándose incluso si se cierra el equipo desde donde se lanzo el trabajo. En este modo el controlador Spark se encapsula dentro del YARN Application Master.

Modo Cliente El controlador se ejecuta en el equipo cliente, si el equipo cliente se apaga el trabajo falla. El modo cliente es adecuado para trabajos interactivos pero para trabajos de larga ejecución, el modo el clúster es más apropiado.

Funcionamiento Las aplicaciones Spark se ejecutan como conjuntos independientes de procesos en un clúster, coordinados por el objeto SparkContext (Progama controlador).

Siendo más específico, SparkContext para ejecutarse en el clúster puede conectarse a varios tipos de administradores de clúster (el propio Spark , Mesos o Yarn, siendo este último el de nuestra instalación), que asigna recursos entre las aplicaciones. Una vez conectado, Spark adquiere ejecutores en nodos de clúster, que son procesos que ejecutan cálculos y almacenan datos para su aplicación. A continuación, envía su código de aplicación (definido por los archivos JAR o Python pasados a SparkContext) a los ejecutores. Finalmente, SparkContext envía tareas a los ejecutores para ejecutar.

Funcionamiento-spark.png

Instalación Hadoop

Para la instalación de Hadoop hemos seguido el siguiente tutorial: https://www.linode.com/docs/databases/hadoop/how-to-install-and-set-up-hadoop-cluster/

Equipos para la instalación TEST Spark -> 45.79.207.240 (Maestro y Esclavo) cool-ad14 -> 172.104.214.142 (Esclavo)

Paso 1 Creación de /etc/hosts. Debemos añadir a cada /etc/hosts todos las máquinas que participan en el clúster

45.79.207.240 spark
172.104.214.142 node-ad14

Paso 2 Creación del usuario hadoop y clave pública. Debemos crear un usuario con el nombre hadoop en cada máquina.

   User: hadoop
   Pass: passwd

Solo nos faltará crear una clave pública en el maestro y compartilo con el propio maestro y los esclavos.

   Máquina Spark / Usuario hadoop
   ssk-keygen -b 4096
   ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@spark
   ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@node-ad14

Paso 3 En el Master. Dentro de la carpeta /home/hadoop con el usuario hadoop nos descargamos el fichero.tar.gz que contiene hadoop.

https://hadoop.apache.org/
https://archive.apache.org/dist/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz
   Descomprimimos   / tar -xvzf hadoop-3.1.2.tar.gz
   Cambio de nombre / mv hadoop-3.2.1 hadoop


Paso 4 Variables de entorno. En el fichero /home/hadoop/.profile añadimos la siguiente línea. Si el fichero no existe hemos de crearlo:

PATH=/home/hadoop/hadoop/bin:/home/hadoop/hadoop/sbin:$PATH

Paso 5 Configuración de JAVA. Si no tenemos java instalado debemos instalarlo

yum install jdk-1.8.0-devel

Una vez instalado debemos conocer la ubicación de la carpeta jre, para saberlo utilizamos el siguiente comando:

   update-alternatives --display java

Una vez obtenemos la ruta de java, hacemos un export de la variable JAVA_HOME en hadoop-env.sh

/home/hadoop/hadoop/etc/hadoop/hadoop-env.sh

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre


Paso 6 Archivos de configuración. Establecemos el master. /home/hadoop/hadoop/etc/hadoop/core-site.xml

<configuration>
       <property>
           <name>fs.default.name</name>
           <value>hdfs://node-master:9000</value>
       </property>
</configuration>


Establecemos los path para hdfs. /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml

<configuration>
   <property>
           <name>dfs.namenode.name.dir</name>
           <value>/home/hadoop/data/nameNode</value>
   </property>
   <property>
           <name>dfs.datanode.data.dir</name>
           <value>/home/hadoop/data/dataNode</value>
   </property>
   <property>
           <name>dfs.replication</name>
           <value>1</value>
   </property>
</configuration>

La última propiedad dfs.replication, indica cuántas veces se replican los datos en el clúster. Por ejemplo podríamos configurar con 2 para que todos los datos se duplicasen en ambos nodos, NO INGRESAR UN VALOR MÁS ALTO QUE EL NÚMERO DE NODOS ESCLAVOS.


Establecemos Yarn como el framework por defecto para las operaciones de Mapreduce. /home/hadoop/hadoop/etc/hadoop/mapred-site.xml

<configuration>
   <property>
           <name>mapreduce.framework.name</name>
           <value>yarn</value>
   </property>
</configuration>


Configuración Yarn ~/hadoop/etc/hadoop/yarn-site.xml

<configuration>
   <property>
           <name>yarn.acl.enable</name>
           <value>0</value>
   </property>
   <property>
           <name>yarn.resourcemanager.hostname</name>
           <value>node-master</value>
   </property>
   <property>
           <name>yarn.nodemanager.aux-services</name>
           <value>mapreduce_shuffle</value>
   </property>
</configuration>


Configuración de esclavos. En la documentación que hemos leído se utiliza un fichero llamado slaves, pero actualmente se está utilizando un fichero que se llama workers.

Dentro del fichero /home/hadoop/hadoop/etc/hadoop/workers
localhost
node-ad14


Configuración de la asignación memoria. La asignación de memoria puede ser complicada en nodos de RAM baja porque los valores predeterminados no son adecuados para nodos con menos de 8GB de RAM. Vamos a destacar como funciona la asignación de memoria para los trabajos de MapReduce y veremos una configuración para nodos de 2GB de RAM.


Propiedades de la asignación de memoria. Un operación con Yarn tiene dos tipos de procesos:

  • Application Master(AM) Responsable de monitorizar la aplicación y coordinar los ejecutores distribuidos por el clúster.
  • Ejecutores propios para realizar los actuales trabajos.

Ambos tipos de procesos se ejecutan en los nodos esclavos. Cada nodo esclavo ejecuta un demonio NodeManager que es responsable de la creación del contenedor en el nodo. Todo el clúster es administrado por un ResourceManager que programa la asignación de contenedores en todos los nodos esclavos, según los requisitos de capacidad y el cargo actual.

Tenemos cuatro tipos de asignación deben configurarse para el clúster funcione correctamente.

Cuánta memoria se puede asignar para los contenedores YARN en un solo nodo. Este límite debe ser más alto que todos los demás, de lo contrario la asignación de contenedores será rechazada y las aplicaciones fallan. Sin embargo no debe ser la cantidad total de RAM en el Nodo.

yarn.nodemanager.resource.memory-mb

Cuánta memoria puede consumir un contenedor y la asignación de memoria mínima permitida. Un contenedor nunca será más grande que el máximo, o la asignación fallará y siempre se asignará como un múltiplo de la cantidad mínima de RAM.

yarn.scheduler.maximum-allocation-mb
yarn.scheduler.minimum-allocation-mb


Cuánta memoria se le asignará al AplicationMaster. Este es un valor constante que debe ser inferior al de tamaño máximo del contenedor.

yarn.app.mapreduce.am.resource.mb


Cuańta memoria se le asignará a cada mapa.

mapreduce.map.memory.mb
mapreduce.reduce.memory.mb

   

Ejemplo de configuración de 2GB de RAM por NODO.

yarn.nodemanager.resource.memory-mb    1536
yarn.scheduler.maximum-allocation-mb    1536
yarn.scheduler.minimum-allocation-mb    128
yarn.app.mapreduce.am.resource.mb    512
mapreduce.map.memory.mb            256
mapreduce.reduce.memory.mb        256

~/hadoop/etc/hadoop/yarn-site.xml

<property>
       <name>yarn.nodemanager.resource.memory-mb</name>
       <value>1536</value>
</property>
<property>
       <name>yarn.scheduler.maximum-allocation-mb</name>
       <value>1536</value>
</property>
<property>
       <name>yarn.scheduler.minimum-allocation-mb</name>
       <value>128</value>
</property>
<property>
       <name>yarn.nodemanager.vmem-check-enabled</name>
       <value>false</value>
</property>

~/hadoop/etc/hadoop/mapred-site.xml

<property>
       <name>yarn.app.mapreduce.am.resource.mb</name>
       <value>512</value>
</property>
<property>
       <name>mapreduce.map.memory.mb</name>
       <value>256</value>
</property>
<property>
       <name>mapreduce.reduce.memory.mb</name>
       <value>256</value>
</property>

Paso 7

Replicación de los binarios de hadoop y los archivos de configuración. Pasamos los binarios y las configuración que hicimos anteriormente en el maestro hacia los esclavos asignados.

Paso 8 Formatear HDFS. HDFS necesita ser formateado como cualquier clásico sistema de ficheros. En no nodo maestro ejecutar el siguiente comando:

   /home/hadoop/hadoop/bin/hdfs namenode -format

Una vez termina hadoop está listo para iniciarse.

Paso 9 y último Antes de levantar Hadoop vamos a securizar los puertos de escucha controlando las conexiones desde el iptables tanto del nodo-maestro como de los nodos-esclavos.

Lista de puertos a controlar en el< nodo maestro

9000 - 9684 -9866 - 9867 - 9868 - 9870
8040 - 8042 - 8088 - 8030 - 8031 - 8033 
40773 - 36550 - 27017

Preparamos el firewall y levantamos.

Arranque de Hadoop

Esta sección explicará cómo iniciar HDFS en NameNode y DataNodes, y controlará que todo funcione correctamente e interactúe con los datos HDFS.

Inicio y parada de HDFS En el nodo maestro lanzamos con el usuario hadoop:

/home/hadoop/hadoop/sbin/start-dfs.sh

Una vez finalizado la ejecución comprobamos los procesos java con el comando jps, tanto en el nodo maestro como en los esclavos, nos tiene que aparecer algo así:

NODO MAESTRO

21922 Jps
21603 NameNode
21787 SecondaryNameNode

NODO ESCLAVO

19728 DataNode
19819 Jps

Si queremos ver un reporte de los nodos conectados y del clúster utilizamos el comando

/home/hadoop/hadoop/bin/hdfs dfsadmin -report

Para parar el funcionamiento de hadoop:

/home/hadoop/hadoop/sbin/stop-dfs.sh

Inicio y parada de Yarn En el nodo maestro lanzamos con el usuario hadoop:

/home/hadoop/hadoop/sbin/start-yarn.sh


Para comprobar que los nodos están trabajando con yarn

/home/hadoop/hadoop/bin/yarn node -list

Plataforma web de yarn http://spark:8080

Instalación de Spark

Para la instalació de Apache Spark, simplemente necesitamos realizar la descarga de los ficheros de binarios y descomprimirlos, y clonar el repositorio para el conector con Cassandra.

Nos descargamos el tar de ficheros binarios de Apache Spark del siguiente enlace: http://apache.rediris.es/spark/spark-<version>/spark-<version>-bin-hadoop2.7.tgz P.e:

  1. cd /install
  2. wget http://apache.rediris.es/spark/spark-2.3.0/spark-2.3.0-bin-hadoop2.7.tgz

Ya solo debemos descomprimir el archivo en /usr/local (o en otra ruta si fuera mas pertinente):

  1. cd /usr/local
  2. tar -zxf /install/spark-2.3.0-bin-hadoop2.7.tgz

Hacemos un clone del repositorio de git del conector de Cassandra:

  1. git clone https://github.com/datastax/spark-cassandra-connector

Integración de Spark con Hadoop

Para la comunicación con el administrador de recursos YARN, Spark debe conocer la configuración de Hadoop. Esto se hace a través de la variable de entorno HADOOP_CONF_DIR

Editamos /home/hadoop/.profile

export HADOOP_CONF_DIR=/home/hadoop/hadoop/etc/hadoop
export SPARK_HOME=/usr/local/spark
export LD_LIBRARY_PATH=/home/hadoop/hadoop/lib/native:$LD_LIBRARY_PATH

Reiniciamos la sesión.

Renombramos el archivo spark-defaults.conf.template ha spark-defaults.conf Este archivo se encuentra en la ubicación de Spark, normalmente en:

/usr/local/spark

ASIGNACIÓN DE MEMORIA EN SPARK Como le hemos pasado la ruta de la configuración de Hadoop, Spark cogerá la configuración de memoria para contenedores y a se la aplicará, aún así hemos de configurar algunas asignaciones de memoria en spark y otras cosas, hago un breve resumen más abajo con las variables necesarias.

Editamos spark-defaults.conf, le añadimos la siguiente líneas al final del archivo:

  1. Para qué spark sepa que ha de funcionar con Yarn.
spark.master yarn
  1. Cantidad predeterminada de memoria asignada a Spark.driver en el clúster.
spark.driver.memory     512m
spark.yarn.am.memory    512m
spark.executor.memory   896m
  1. Monitorización
spark.eventLog.enabled false
spark.eventLog.dir hdfs://spark:9000/spark-logs
spark.history.provider            org.apache.spark.deploy.history.FsHistoryProvider
spark.history.fs.logDirectory     hdfs://spark:9000/spark-logs
spark.history.fs.update.interval  10s
spark.history.ui.port             18080

Diseño de Bases de Datos Relacionales

Tipos de diseño

  • DISEÑO CONCEPTUAL. Independiente del modelo de datos a utilizar.
    • Diagramas entidad-interrelación. El creador fue Peter Chen
    • Diagramas UML (Unified Modeling Language)
  • DISEÑO LÓGICO. Depende de los datos a utilizar.

Diagramas entidad interrelación / Diagramas Chen

Interelacion

Archivo:Conceptointerelacion.png

Entidad Reflexiva

Entidadreflexiva.png

Dependencia de existencia

Dependencia-existencia.png

Interrelaciones ternarias

Interrelaciones en las que intervienen 3 entidades Relacionternaria.png

Entidades débiles

En las entidades débiles el vínculo es doble. La entidad débil necesita la clave primaria de la entidad superior para poder crear una clave primaria funcional. Entidad-debil.png

Concepto de herencia

Conceptoherencia.png

Características.

Puede ser TOTAL o PARCIAL: En la total la entidad superior a de pertenecer a alguna de las entidades subclasse.

Disjunta o Solapada. La disjunta pertenece a un grupo o a otro, pero no los dos a la vez.

Entidad asociativa

Entidadasociativa.png

Software Malintencionado

Software Malicioso

 

Virus: se trata de un programa que se copia automáticamente para alterar el funcionamiento normal del sistema, sin el permiso ni el conocimiento del usuario. Ellos mismos se replican y se ejecutan.

Gusanos o worms: Se duplican como los virus pero no modifican los archivos. Se limitan a hacer copias de ellos mismos lo más rápido posible sin tocar ningún fichero. Pueden llegar a ocupar la memoria y ralentizar el ordenador. Además, también pueden colapsar por la saturación de las redes en las que se han infiltrado.

Caballos de Troya: no se consideran Virus, porque no infectan otros ficheros para reproducirse ni tampoco hacen copias de ellos mismos para propagarse ellos mismos, como hacen los gusanos. El objetivo principal que tienen es introducir e instalar otros programas en el ordenador, para que se puede controlar remotamente desde otros equipos. Es decir, llegan al ordenador como si fueran programas inofensivos, pero cuando se ejecutan instalan un segundo programa, el caballo de Troya.

Bombas lógicas: estrictamente, tampoco se consideran virus, ya que no se reproducen ni siquiera son programas independientes, sino que son segmentos camuflados dentro de otros programas.

Su objetivo es destruir los datos de un ordenador o causar otros tipos de daño que pueden llegar a ser muy destructivos.

Similitudes

Todos ellos se consideran software malintencionado y por lo tanto se tratan de programas que se instalan en nuestro ordenador , sin nuestro consentimiento ni el conocimiento, con la intención perjudicarlo o obtener un beneficio.

Principales Vías de Infección

  • Unidades de discos portátiles. (CD, USB). Medios de almacenamiento donde se guarda información del tipo de ficheros, documentos o archivos. Con estas unidades se puede trabajar en diferentes equipos y si el contenido está infectado pasaremos el software malintencionado al equipo donde usemos dicho contenido.
  • Redes de ordenadores. Si hubiese alguna información infectada que se transfiera de un ordenador a otro, este automáticamente quedaría infectado.
  • Internet. En internet muchas de las operaciones que realizamos tienen que ver con la transferencia de información (obtener información, enviar y recibir ficheros, descargar ficheros, etc.) por lo tanto cualquier programa malintencionado podría introducirse en nuestro equipo. Por medio de internet la infección se podría realizar por los siguientes caminos:
    • Correo Electrónico
    • Paginas Web
    • Descarga de ficheros o archivos
    • Grupos de mensajes.

Métodos del software malintencionado para introducirse en los equipos:

  • Iniciarse junto con un programa que el usuario instala voluntariamente.
  • Incrustarse en un programa, no infectado, para activarse cuando el usuario encienda el programa.
  • Aprovechar un sector de arranque de un disco de 3,5”, USB, o disco duro extraíble. El software malintencionado se ejecuta cuando se arranque el ordenador con este dispositivo puesto.

Métodos para evitar el software malintencionado.

 La instalación de un S.O. O de los programas posteriores se ha de realizar en un sistema limpio. (discos duros en blanco, CMOS de fábrica)

  • Utilizar para los S.O. Propietarios los discos originales del fabricante.
  • No se ha de dejar ningún disco, usb o disco extraíble conectado cuando apagamos el equipo.
  • No se debería descargar nunca sin el conocimiento real de procedencia de los archivos ejecutables.
  • No se debería abrir nunca sin e conocimiento real dela procedencia de los archivos ejecutables.
  • No dejar que otras personas, por ejemplo niños, ejecuten programas externos sin asegurar la fiabilidad.
  • El sistema informático siempre lo ha de utilizar una única persona y siempre ha de estar claro a quien hace falta consultar en cualquier situación.
  • Borrar Correo directamente, especialmente si viene con algún fichero adjunto.

También podemos aplicar una serie de consejos para que en caso de infección podamos recuperar el control rápidamente.

  • Realizar copias de seguridad regularmente en elementos externos como CD, dispositivo de almacenamiento o otros equipos.
  • Instalar un programa Antivirus
  • Actualizar frecuentemente.

Programas espías

La función del software espía es recompilar información que irá a parar a los servidores de especifícados. Después algunos proveedores te ofrecerán sus productos mediante correo electrónicos. Este proceso produce un retraso en la velocidad del sistema, ya que utiliza una gran cantidad de recursos. También puede provocar bloqueos y perdidas de conexión a Internet.

Tipos de espías:

  • Keylogger. Permiten monitorizar todo lo que el usuario haya tecleado.
  • Dialer. Conexiones telefónicas de muy elevado coste.
  • Hijacker. Cambia las páginas de inicio del navegador.
  • Tracking cookies. Permiten identificar visitas reiteradas a una misma web.
  • Adware. Hace aparecer plublicidad.
  • BHO. Asistente del navegador, se suele cargar al clicar sobre un enlace.
  • WebHancer. Recoge información sobre los hábitos del usuario.
  • HotBar. Regoce información sobre las páginas visitadas y la información solicitada a los buscadores.

Regresión Lineal Simple

Vamos a intentar predecir y crear un modelo lineal, regresión lineal simple. Buscará todas las rectas posibles y nos dirá cuál es la recta que más se acerca la distancia de la propia recta a los puntos de referencia.
Es la línea de tendencia que más se ajusta a los datos ofrecidos.

Variables

Categóricas

  • Nominales -> Rojo,verde,azul,… (Factores)
  • Ordinales -> Pequeño,Mediano,Grande, A,B,C (Tiene un orden)

Numéricas

  • Discretas -> 800 empleados (objetos que podemos contar sin usar decimales)
  • Continuas -> El peso, la altura, entran todo tipo de números.

La palabra regresión

LLamamos análisis de regresión al precio estadístico de estimar las relaciones que existen entre variables.
Se centra en estudiar las relaciones entre una variable dependiente de una o varias variables independientes.

Regresion.png

Regresión Lineal Simple

Regresion lineal.png

Lo que hará nuestro algoritmo de regresión lineal es sumar todas las diferencias, las rectas entre yî y ŷî, las elevará al cuadrado porque algunas serán positivas y otras negativas. De todas las rectas se que con aquella que minimiza los cuadrados de las diferencias entre el dato real y la predicción.

Reglas básicas para el posicionamiento SEO

En RomSolutions basamos nuestra estrategia de marketing online en posicionamiento SEO (Search Engine Optimization). Con las diferentes experiencias que hemos obtenido a lo largo de los años, hemos observado la obsesión que hay por saber que hace la competencia y como lo hace, pero pocos son los que comienzan preguntando que pueden mejorar en sus propias páginas.

Tenemos que comprender que posicionar una web de forma orgánica, de forma natural es lo mejor para nuestra empresa y nuestro futuro en el índice de Google. El SEO es tu mejor herramienta para:

  • Mostrarte a los usuarios que realmente están interesados en tu negocio.

  • Subir escalones en las páginas de google hasta aparecer en la primera página.

  • Ordenar nuestras ideas sobre la web y sus metadatos. Obtener un concepto más claro de lo que Google espera de nosotros como web.

Reglas básicas posicionamiento SEO

  1. Una palabra clave principal (keyword), y otra palabra clave secundaria, máximo dos palabras secundarias. Muy importante no exceder este límite si queremos que Google nos tome en serio.

  2. La palabra clave aparece en nuestra URL. Ya sea por dominios ccTLD o gcTLD.

  3. La palabra clave debe ser incluida en los encabezados de los artículos y las páginas.

  4. En caso de ser un artículo, el primer párrafo debe incluir la palabra clave.

  5. Deben ser artículos y textos propios. Los copiados no indexan.

  6. Generar Tráfico, ya sea hacia otras web o procedente desde otros dominios.

  7. SiteMap.

  8. Geolocalización web

  9. Utilización de Cache web.

  10. SSL -> https

  11. Web responsive

Y sobretodo, antes, después y siempre analítica y más analítica, todo esta sujeto a cambios.