Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este inicio rápido se usa Bicep para crear un clúster de Apache Spark en Azure HDInsight. Luego se crea un archivo de Jupyter Notebook y se usa para ejecutar consultas de Spark SQL en tablas de Apache Hive. Azure HDInsight es un servicio administrado, de espectro completo y de análisis de código abierto para empresas. El marco de Apache Spark para HDInsight permite un análisis de datos y un procesamiento de clústeres rápidos mediante el procesamiento en memoria. Jupyter Notebook permite interactuar con los datos, combinar código con texto Markdown y realizar visualizaciones simples.
Si usa varios clústeres juntos, querrá crear una red virtual y, si está usando un clúster de Spark, también querrá usar Hive Warehouse Connector. Para más información, consulte Planificación de una red virtual para Azure HDInsight e Integración de Apache Spark y Apache Hive con el conector de Hive Warehouse.
Bicep es un lenguaje específico de dominio (DSL) que usa una sintaxis declarativa para implementar recursos de Azure. Brinda sintaxis concisa, seguridad de tipos confiable y compatibilidad con la reutilización de código. Bicep ofrece la mejor experiencia de creación para sus soluciones de infraestructura como código en Azure.
Requisitos previos
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Revisión del archivo de Bicep
El archivo de Bicep usado en este inicio rápido forma parte de las plantillas de inicio rápido de Azure.
@description('The name of the HDInsight cluster to create.')
param clusterName string
@description('These credentials can be used to submit jobs to the cluster and to log into cluster dashboards. The username must consist of digits, upper or lowercase letters, and/or the following special characters: (!#$%&\'()-^_`{}~).')
@minLength(2)
@maxLength(20)
param clusterLoginUserName string
@description('The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character except (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username.')
@minLength(10)
@secure()
param clusterLoginPassword string
@description('These credentials can be used to remotely access the cluster. The sshUserName can only consit of digits, upper or lowercase letters, and/or the following special characters (%&\'^_`{}~). Also, it cannot be the same as the cluster login username or a reserved word')
@minLength(2)
param sshUserName string
@description('SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name')
@minLength(6)
@maxLength(72)
@secure()
param sshPassword string
@description('Location for all resources.')
param location string = resourceGroup().location
@description('This is the headnode Azure Virtual Machine size, and will affect the cost. If you don\'t know, just leave the default value.')
@allowed([
'Standard_A4_v2'
'Standard_A8_v2'
'Standard_E2_v3'
'Standard_E4_v3'
'Standard_E8_v3'
'Standard_E16_v3'
'Standard_E20_v3'
'Standard_E32_v3'
'Standard_E48_v3'
])
param headNodeVirtualMachineSize string = 'Standard_E8_v3'
@description('This is the workernode Azure Virtual Machine size, and will affect the cost. If you don\'t know, just leave the default value.')
@allowed([
'Standard_A4_v2'
'Standard_A8_v2'
'Standard_E2_v3'
'Standard_E4_v3'
'Standard_E8_v3'
'Standard_E16_v3'
'Standard_E20_v3'
'Standard_E32_v3'
'Standard_E48_v3'
])
param workerNodeVirtualMachineSize string = 'Standard_E8_v3'
resource defaultStorageAccount 'Microsoft.Storage/storageAccounts@2021-08-01' = {
name: 'storage${uniqueString(resourceGroup().id)}'
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}
resource cluster 'Microsoft.HDInsight/clusters@2021-06-01' = {
name: clusterName
location: location
properties: {
clusterVersion: '4.0'
osType: 'Linux'
tier: 'Standard'
clusterDefinition: {
kind: 'spark'
configurations: {
gateway: {
'restAuthCredential.isEnabled': true
'restAuthCredential.username': clusterLoginUserName
'restAuthCredential.password': clusterLoginPassword
}
}
}
storageProfile: {
storageaccounts: [
{
name: replace(replace(defaultStorageAccount.properties.primaryEndpoints.blob, 'https://', ''), '/', '')
isDefault: true
container: clusterName
key: defaultStorageAccount.listKeys('2021-08-01').keys[0].value
}
]
}
computeProfile: {
roles: [
{
name: 'headnode'
targetInstanceCount: 2
hardwareProfile: {
vmSize: headNodeVirtualMachineSize
}
osProfile: {
linuxOperatingSystemProfile: {
username: sshUserName
password: sshPassword
}
}
}
{
name: 'workernode'
targetInstanceCount: 2
hardwareProfile: {
vmSize: workerNodeVirtualMachineSize
}
osProfile: {
linuxOperatingSystemProfile: {
username: sshUserName
password: sshPassword
}
}
}
]
}
}
}
output storage object = defaultStorageAccount.properties
output cluster object = cluster.properties
En el archivo Bicep, se definen dos recursos de Azure:
- Microsoft.Storage/storageAccounts: permite crear una cuenta de Azure Storage.
- Microsoft.HDInsight/cluster: permite crear un clúster de HDInsight.
Implementación del archivo de Bicep
Guarde el archivo de Bicep como main.bicep en el equipo local.
Implemente el archivo de Bicep mediante la CLI de Azure o Azure PowerShell.
az group create --name exampleRG --location eastus az deployment group create --resource-group exampleRG --template-file main.bicep --parameters clusterName=<cluster-name> clusterLoginUserName=<cluster-username> sshUserName=<ssh-username>
Debe proporcionar valores para los siguientes parámetros:
- Reemplace <cluster-name> por el nombre del clúster de HDInsight para crearlo.
- Reemplace <cluster-username> por las credenciales usadas para enviar trabajos al clúster y para iniciar sesión en los paneles del clúster. El nombre de usuario tiene una longitud mínima de 2 caracteres y una máxima de 20. Debe constar de dígitos, letras mayúsculas o minúsculas y/o los siguientes caracteres especiales: (!#$%&'()-^_`{}~).').
- Reemplace <ssh-username> por las credenciales usadas para acceder de forma remota al clúster. El nombre de usuario tiene una longitud mínima de dos caracteres. Debe constar de dígitos, letras mayúsculas o minúsculas y/o los siguientes caracteres especiales: (%&'^_`{}~). No puede ser el mismo que el nombre de usuario del clúster.
Se le pedirá que escriba lo siguiente:
- clusterLoginPassword, que debe tener al menos 10 caracteres y debe contener al menos un dígito, una letra mayúscula, una letra minúscula y un carácter no alfanumérico que no sea comillas simples, comillas dobles, barra diagonal inversa, corchete derecho o punto. Tampoco debe contener tres caracteres consecutivos del nombre de usuario del clúster o del nombre de usuario SSH.
- sshPassword, que debe tener entre 6 y 72 caracteres y debe contener al menos un dígito, una letra mayúscula y una letra minúscula. No debe contener tres caracteres consecutivos que estén presentes en el nombre de inicio de sesión del clúster.
Nota
Una vez finalizada la implementación, debería mostrarse un mensaje indicando que la implementación se realizó correctamente.
Si surge algún problema al crear clústeres de HDInsight, podría deberse a que no tiene los permisos adecuados para hacerlo. Para más información, consulte Requisitos de control de acceso.
Revisión de los recursos implementados
Use los Azure Portal, CLI de Azure o Azure PowerShell para enumerar los recursos implementados en el grupo de recursos.
az resource list --resource-group exampleRG
Creación de un archivo Jupyter Notebook
Jupyter Notebook es un entorno de cuaderno interactivo que admite varios lenguajes de programación. Puede usar un archivo de Jupyter Notebook para interactuar con los datos, combinar código con texto Markdown y realizar visualizaciones simples.
Abra Azure Portal.
Seleccione Clústeres de HDInsight y, a continuación, seleccione el clúster que creó.
En el portal, en la sección Paneles de clúster, seleccione Jupyter Notebook. Cuando se le solicite, escriba las credenciales de inicio de sesión del clúster.
Seleccione Nuevo>PySpark para crear un cuaderno.
Se crea y se abre un nuevo cuaderno con el nombre Untitled(Untitled.pynb).
Ejecución de instrucciones de Apache Spark SQL
SQL (Lenguaje de consulta estructurado) es el lenguaje más común y ampliamente usado para la consulta y la transformación de datos. Spark SQL funciona como una extensión de Apache Spark para procesar datos estructurados, mediante la conocida sintaxis de SQL.
Compruebe que el kernel esté preparado. El kernel está preparado cuando aparece un círculo vacío junto al nombre del kernel en el cuaderno. Un círculo sólido indica que el kernel está ocupado.
Al iniciar el cuaderno por primera vez, el kernel realiza tareas en segundo plano. Espere a que el kernel esté preparado.
Pegue el código siguiente en una celda vacía y presione MAYÚS + ENTRAR para ejecutar el código. El comando muestra las tablas Hive del clúster:
%%sql SHOW TABLES
Si usa un archivo de Jupyter Notebook con su clúster de HDInsight, obtiene una sesión de
spark
preestablecida que puede usar para ejecutar consultas de Hive mediante Spark SQL.%%sql
indica a Jupyter Notebook que use la sesiónspark
preestablecida para ejecutar la consulta de Hive. La consulta recupera las 10 primeras filas de una tabla de Hive (hivesampletable) que se incluye de forma predeterminada en todos los clústeres de HDInsight. La primera vez que se envíe la consulta, Jupyter creará una aplicación de Spark para el cuaderno. La operación tarda unos 30 segundos en completarse. Cuando la aplicación de Spark está preparada, la consulta se ejecuta aproximadamente en un segundo y genera los resultados. El resultado tendrá una apariencia similar a la siguiente:Cada vez que se ejecuta una consulta en Jupyter, el título de la ventana del explorador web muestra el estado (Busy) (Ocupado) junto con el título del cuaderno. También verá un círculo sólido junto al texto PySpark en la esquina superior derecha.
Ejecute otra consulta para ver los datos en
hivesampletable
.%%sql SELECT * FROM hivesampletable LIMIT 10
Debe actualizar la pantalla para mostrar el resultado de la consulta.
En el menú File (Archivo) del cuaderno, seleccione Close and Halt (Cerrar y detener). Al cerrar el cuaderno se liberan los recursos del clúster, lo que incluye la aplicación de Spark.
Limpieza de recursos
Cuando ya no los necesite, use Azure Portal, la CLI de Azure o Azure PowerShell para eliminar el grupo de recursos y sus recursos.
az group delete --name exampleRG
Pasos siguientes
En este inicio rápido, ha aprendido a crear un clúster de Apache Spark en HDInsight y a ejecutar una consulta básica de Spark SQL. Pase al siguiente tutorial, donde aprenderá a usar un clúster de HDInsight para ejecutar consultas interactivas en datos de ejemplo.