Mais conteúdo relacionado Semelhante a Hortonworks Technical Workshop - build a yarn ready application with apache slider feb. 26 - 2015.pptx (20) Hortonworks Technical Workshop - build a yarn ready application with apache slider feb. 26 - 2015.pptx1. © Hortonworks Inc. 2015
Build a YARN Ready
Application with Apache Slider
February 2015
4. © Hortonworks Inc. 2015
log
Background: Modern applications
front end
web
phones
devices
feeds log
stream
processing
front end
front end
log
database
analytics
5. © Hortonworks Inc. 2015
Fun operational problems
Placement: where to run?
Installation
Configuration & Binding
Client configuration
Lifecycle
Failure handing and recovery
Logging
Upgrading
Metrics & Monitoring
Start/Stop
Reconfigure
Scale up/down
Rolling-restart
Decommission/Recommission
6. © Hortonworks Inc. 2015
Getting your code to work across a set
of fairly reliable machines
7. © Hortonworks Inc. 2015
Apache Slider
Deploying and managing
applications on Apache Hadoop YARN
http://slider.incubator.apache.org/
8. © Hortonworks Inc. 2015
HDFS
YARN Node Manager
HDFS
YARN Node Manager
HDFS
YARN Resource Manager
“The RM”
HDFS
YARN Node Manager
• Servers run YARN Node Managers (NM)
• NM's heartbeat to Resource Manager (RM)
• RM schedules work over cluster
• RM allocates containers to apps
• NMs start containers
• NMs report container health
YARN schedules work
9. © Hortonworks Inc. 2015
Client creates Slider App Master
HDFS
YARN Node Manager
HDFS
YARN Node Manager
HDFS
YARN Resource Manager
“The RM”
HDFS
YARN Node Manager
Client
Slider Application Master
10. © Hortonworks Inc. 2015
Slider App Master runs the application
HDFS
YARN Node Manager
HDFS
YARN Node Manager
HDFS
YARN Resource Manager
HDFS
YARN Node Manager
Slider Application Master
HBase Master
HBase Region Server
HBase Region Server
11. © Hortonworks Inc.
An application consists of
“Application Package”
JSON configuration files: YARN resources + config
Data persisted in HDFS
Placement history in HDFS
Page 11
12. © Hortonworks Inc
resources.json
{
"schema":
"http://example.org/specification/v2.0.0",
"global":
{
"yarn.memory":
"512"
},
"components":
{
"HBASE_MASTER":
{
"yarn.role.priority":
"1",
"yarn.component.instances":
"1",
"yarn.vcores":
"1",
},
"HBASE_REGIONSERVER":
{
"yarn.role.priority":
"2",
"yarn.component.instances":
"1"
}
}
}
13. configure: app_config.json
{
"application.def":
"/slider/hbase_v096.zip",
"site.global.app_log_dir":
"${AGENT_LOG_ROOT}/app/log",
"site.global.app_pid_dir":
"${AGENT_WORK_ROOT}/app/run",
"site.global.hbase_master_heapsize":
"1024m",
"site.global.ganglia_server_host":
"${NN_HOST}",
"site.global.ganglia_server_port":
"8667",
"site.global.ganglia_server_id":
"Application1",
"site.hbase-‐site.hbase.tmp.dir":
"${AGENT_WORK_ROOT}/work/app/tmp",
"site.hbase-‐site.hbase.master.info.port":
"${HBASE_MASTER.ALLOCATED_PORT}",
"site.hbase-‐site.hbase.regionserver.port":
"0",
"site.hbase-‐site.hbase.zookeeper.quorum":
"${ZK_HOST}",
"site.core-‐site.fs.defaultFS":
"${NN_URI}",
}
Configurations needed by
Slider
Named variables
Site variables for
application
Named variables
for cluster details
Allocate and
advertise
Variables for the
application scripts
14. © Hortonworks Inc
create, start, stop, destroy
$
slider
create
hbase1
-‐-‐resources
resources.json
-‐-‐template
config.json
$
slider
list
$
slider
status
hbase1
$
slider
stop
hbase1
$
slider
start
hbase1
$
slider
destroy
hbase1
15. © Hortonworks Inc. 2015
Dynamic application resize
slider
flex
hbase1
-‐-‐component
HBASE_REGIONSERVER
2
17. © Hortonworks Inc. 2015
Failures
HDFS
YARN Node Manager
HDFS
YARN Node Manager
HDFS
YARN Resource Manager
HDFS
YARN Node Manager
Slider App Master
HBase Master
HBase Region Server
HBase Region Server
18. © Hortonworks Inc. 2015
YARN notifies AM
HDFS
YARN Node Manager
HDFS
YARN Node Manager
HDFS
YARN Resource Manager
HDFS
YARN Node Manager
Slider App Master
HBase Master
HBase Region Server
19. © Hortonworks Inc. 2015
AM requests replacement
HDFS
YARN Node Manager
HDFS
YARN Node Manager
HDFS
YARN Resource Manager
HDFS
YARN Node Manager
Slider App Master
HBase Master
HBase Region Server
HBase Region Server
23. © Hortonworks Inc.
Project Status
• In ASF incubation
• 0.70-incubating release this month
• Growing set of application packages
• Working in simplifying packaging
• HDP 2.2 added long-lived service support for Slider and
other services
24. © Hortonworks Inc. 2015
ü Labelled nodes & queues
ü Log aggregation
ü Container retention over Application Master restart
ü Service registration & discovery
ü Kerberos token renewal
ü Windowed Application failure tracking
HDP2.2 features for Slider
—essential for all long-lived YARN services
26. © Hortonworks Inc 2015
Meetup March 4
http://www.meetup.com/HSquared-Hadoop-
Hortonworks-User-Group/events/220422211/
Page 26
27. © Hortonworks Inc. 2015
Authoring Applications
Sumit Mohanty
smohanty at hortonworks.com
Feb 25, 2015
28. © Hortonworks Inc.
Agenda
• A Simple Program
• Simple Program that Advertises
• Bring your own binaries
• A Minimal Application Package
Page 28
29. © Hortonworks Inc.
A Simple Program
Page 29
• All dependencies installed
• Default configuration
• Well-known endpoints
• Long running
30. © Hortonworks Inc.
A Simple Program : Recap
Page 30
• create
– slider
create
memcachedmin
-‐-‐metainfo
metainfo.json
-‐-‐resources
resources.json
• metainfo:
{
"schemaVersion":
"2.1",
"application":
{
"name":
"MEMCACHED",
"components":
[
{
"name":
"MEMCACHED",
"commands":
[
{
"exec":
"/usr/jdk64/jdk1.7.0_67/bin/java
…",
"name":
"START",
"type":
"SHELL",
}
...
31. © Hortonworks Inc.
A Simple Program : Recap
Page 31
• resources:
{
"schema"
:
"http://example.org/specification/v2.0.0",
"metadata"
:
{
},
"global"
:
{
},
"components":
{
"MEMCACHED":
{
"yarn.role.priority":
"1",
"yarn.component.instances":
"1",
"yarn.memory":
"256"
}
}
}
32. © Hortonworks Inc.
Simple Program that Advertises
Page 32
• All dependencies installed
• Portable – advertises the endpoints
• Long running
33. © Hortonworks Inc.
Simple Program that Advertises : Recap
Page 33
• command
– slider
create
memcachedexp
-‐-‐metainfo
metainfo.json
-‐-‐resources
resources.json
-‐-‐template
appConfig.json
• metainfo:
"application":
{
"name":
"MEMCACHED",
"exportGroups":
[
{
"name":
"Servers",
"exports":
[
{
"name":
"host_port",
"value":
"${MEMCACHED_HOST}:${site.global.port}”
...,
"components":
[
{
"compExports":
"Servers-‐host_port",
"exec":
"...
-‐-‐port={$conf:@//site/global/port}",
34. © Hortonworks Inc.
Simple Program that Advertises : Recap
Page 34
• appConfig
{
"schema":
"http://example.org/specification/v2.0.0",
"metadata":
{
},
"global":
{
"site.global.port":
"${MEMCACHED.ALLOCATED_PORT}{PER_CONTAINER}”
}
}
35. © Hortonworks Inc.
Simple Program that Advertises : Recap
Page 35
• from
registry
http://RM-‐HOST:8088/proxy/app_id/ws/v1/slider/publisher/exports/servers
{
"description":
"Servers",
"updatedTime":
"Thu
Feb
26
06:11:49
UTC
2015",
"entries":
{
"host_port":
[
{
"value":
"c6403.ambari.apache.org:43292",
"containerId":
"container_1424910595794_0008_01_000002",
"tag":
"1",
"level":
"component",
"updatedTime":
"Thu
Feb
26
06:11:49
UTC
2015"
...
36. © Hortonworks Inc.
Bring your own Binaries
Page 36
• Dependencies deployed by the app instance
• Portable – advertises the endpoints
• Long running
37. © Hortonworks Inc.
Bring your own Binaries: Recap
Page 37
• command
– slider
create
memcachedjar
–appdef
/usr/work/memcached-‐jar
-‐-‐resources
resources.json
-‐-‐template
appConfig.json
• metainfo:
"application":
{
"name":
"MEMCACHED",
"exportGroups":
[...],
"components":
[
{
"exec":
"java
-‐classpath
{$conf:@//site/global/app_root}/*:..."
...,
"packages":
[
{
"type":
"folder",
"name":
"files/jmemcached-‐1.0.0"
}
]
...
38. © Hortonworks Inc.
Bring your own Binaries: Recap
Page 38
• folder
contents:
– ./package
– ./package/files
– ./package/files/jmemcached-‐1.0.0
– ./package/files/jmemcached-‐1.0.0/jmemcached-‐cli-‐1.0.0.jar
– ./package/files/jmemcached-‐1.0.0/jmemcached-‐core-‐1.0.0.jar
– ./metainfo.json
39. © Hortonworks Inc.
Minimal Application Package
Page 39
• Why might I need a package?
– Easier to share
– Versioned
– Default configs
– Easier to upgrade
– admins may install blessed versions
– May package a client
– slider client install --package … --client-config …
40. © Hortonworks Inc.
Minimal Application Package: Recap
Page 40
• Package content
Archive:
jmemcached-‐1.0.0.zip
Length
Date
Time
Name
-‐-‐-‐-‐-‐-‐-‐-‐-‐
-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐
-‐-‐-‐-‐-‐
-‐-‐-‐-‐
472
02-‐26-‐2015
02:49
appConfig-‐default.json
2029
11-‐23-‐2014
14:11
metainfo.xml
0
08-‐27-‐2014
20:54
package/
0
01-‐09-‐2015
01:34
package/files/
118272
01-‐09-‐2015
01:33
package/files/jmemcached-‐1.0.0.tar
0
11-‐23-‐2014
14:11
package/scripts/
1659
11-‐23-‐2014
14:11
package/scripts/memcached.py
1346
11-‐23-‐2014
14:11
package/scripts/params.py
1823
11-‐23-‐2014
14:11
README.txt
280
11-‐23-‐2014
14:11
resources-‐default.json
1100
02-‐26-‐2015
02:59
metainfo.json
-‐-‐-‐-‐-‐-‐-‐-‐-‐
-‐-‐-‐-‐-‐-‐-‐
126981
11
files
41. © Hortonworks Inc. 2015
Secure Hbase Deployment
Jonathan Maron
jmaron at hortonworks.com
2015
42. © Hortonworks Inc.
Agenda
• HBase Application Package
• Application Deployment
• Secure Deployment
• Application Management
• Demo
• Debugging/Diagnosis
• Q&A
Page 42
43. © Hortonworks Inc.
HBase Application Package - Structure
Page 43
appConfig-default.json
appConfig-secured-default.json
metainfo.xml
package/files/hbase-0.98.4.2.2.1.0-2085-hadoop2.tar.gz
jmx_metrics.json
package/templates/...
package/scripts/. . .
resources-default.json
ganglia_metrics.json
get-hbase-site.sh
get-hbase-site.py
44. © Hortonworks Inc.
HBase Application Package - metainfo
Page 44
<metainfo>
<schemaVersion>2.0</schemaVersion>
<application>
<name>HBASE</name>
<version>0.98.4.2.2.1.0-2085-hadoop2</version>
<type>YARN-APP</type>
<minHadoopVersion>2.1.0</minHadoopVersion>
<exportedConfigs>hbase-site</exportedConfigs>
<exportGroups>
<exportGroup>
<name>QuickLinks</name>
<exports>
<export>
<name>org.apache.slider.jmx</name>
<value>http://${HBASE_MASTER_HOST}:${site.hbase-site.hbase.master.info.port}/jmx</value>
</export>
. . .
</exports>
</exportGroup>
</exportGroups>
<components>
<component>
<name>HBASE_MASTER</name>
<category>MASTER</category>
<minInstanceCount>1</minInstanceCount>
<appExports>QuickLinks-org.apache.slider.jmx</appExports>
<componentExports>
<componentExport>
<name>org.apache.slider.jmx</name>
<value>${THIS_HOST}:${site.hbase-site.hbase.master.info.port}/jmx</value>
</componentExport>
</componentExports>
<commandScript>
<script>scripts/hbase_master.py</script>
<scriptType>PYTHON</scriptType>
<timeout>600</timeout>
</commandScript>
</component>
. . .
</components>
<configFiles>
<configFile>
<type>xml</type>
<fileName>hbase-site.xml</fileName>
<dictionaryName>hbase-site</dictionaryName>
</configFile>
. . .
</configFiles>
</application>
</metainfo>
45. © Hortonworks Inc.
HBase Application Package - Configuration
Page 45
{
"schema": "http://example.org/specification/v2.0.0",
"metadata": {
},
"global": {
"application.def": ".slider/package/HBASE/slider-hbase-app-package-0.98.4.2.2.1.0-2085-hadoop2.zip",
"create.default.zookeeper.node": "true",
"java_home": "/usr/jdk64/jdk1.7.0_67",
"system_configs": "core-site,hdfs-site",
"site.global.app_user": "${USER}",
"site.global.app_root": "${AGENT_WORK_ROOT}/app/install/hbase-0.98.4.2.2.1.0-2085-hadoop2",
. . .
"site.hbase-site.hbase.security.authentication": "kerberos",
"site.hbase-site.hbase.security.authorization": "true",
"site.hbase-site.hbase.security.access.early_out": "true",
"site.hbase-site.hbase.coprocessor.master.classes": ”. . .",
"site.hbase-site.hbase.coprocessor.region.classes": ”. . .",
"site.hbase-site.hbase.regionserver.kerberos.principal": "${USER}/_HOST@EXAMPLE.COM",
"site.hbase-site.hbase.regionserver.keytab.file": "/etc/security/keytabs/hbase.keytab",
"site.hbase-site.hbase.master.kerberos.principal": "${USER}/_HOST@EXAMPLE.COM",
"site.hbase-site.hbase.master.keytab.file": "/etc/security/keytabs/hbase.keytab",
"site.hbase-site.hbase.rest.kerberos.principal": "${USER}/_HOST@EXAMPLE.COM",
"site.hbase-site.hbase.rest.keytab.file": "/etc/security/keytabs/hbase.keytab",
"site.hbase-site.hbase.thrift.kerberos.principal": "${USER}/_HOST@EXAMPLE.COM",
"site.hbase-site.hbase.thrift.keytab.file": "/etc/security/keytabs/hbase.keytab",
"site.hbase-site.hbase.master.keystore.password": "myPasswordForTheKeystore",
"site.hbase-site.hbase.regionserver.truststore.password": "myPasswordForTheTruststore"
},
"components": {
"slider-appmaster": {
"jvm.heapsize": "1024M",
"slider.hdfs.keytab.dir": ".slider/keytabs/hbase",
"slider.am.login.keytab.name": "hbase.headless.keytab",
"slider.keytab.principal.name": "hbase"
}
}
}
46. © Hortonworks Inc.
Application Deployment - CLI
• Package Installation
– slider package –install –package package.zip –name HBASE
• Application creation
– slider create myApp –template appConfig.json –resources
resources.json
Page 46
47. © Hortonworks Inc.
Secure Deployment
• Login as application owner
• Keytab required for application owner
– E.g. hbase.headless.keytab
– Referenced by configuration properties:
– Manually distributed
– Configuration:
- slider.am.keytab.local.path
- slider.keytab.principal.name
– Application keytab properties reference the local path on NM hosts
– Distributed by Slider
– Configuration:
- slider.hdfs.keytab.dir
- slider.am.login.keytab.name
- slider.keytab.principal.name
– Application keytab properties reference the localization path on NM hosts
- E.g. “${AGENT_WORK_ROOT}/keytabs/hbase.service.keytab”
• More information at http://slider.incubator.apache.org/docs/security.html
– Keystore/Truststore generation
Page 47
48. © Hortonworks Inc.
Application Management
• Flex
– Increase or decrease number of application component instances
• Stop
– Halt an application instance
• Start
– Start an instance of a defined application
• Destroy
– Remove an application definition
Page 48
49. © Hortonworks Inc.
Demo
• Application Package Contents
• Cluster description
• Review security setup
– Login
– Keytab availability
• Install package
• Deploy Application
• Flex
• Stop
• Destroy
Page 49
50. © Hortonworks Inc.
Debugging/Diagnosis
• Log aggregation
– Provides a mechanism for retrieving all log files associated with
application instance
– yarn logs –applicationId <application ID>
• Other mechanisms to leverage are provided on Slider
incubator web site
– http://slider.incubator.apache.org/developing/debugging.html
Page 50
51. © Hortonworks Inc.
Additional Information
• Meetup
– Long Running Services on YARN Using Slider
– Wednesday, March 4th, 6:30 to 8:30 PM @ HWX HQ
– http://www.meetup.com/HSquared-Hadoop-Hortonworks-User-
Group/events/220422211/
• http://slider.incubator.apache.org/index.html
Page 51
53. © Hortonworks Inc 2015
Meetup March 4
http://www.meetup.com/HSquared-Hadoop-
Hortonworks-User-Group/events/220422211/
Page 53