0% found this document useful (0 votes)
87 views50 pages

Cloudera Ref Arch Metal

Uploaded by

svm2k20
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
87 views50 pages

Cloudera Ref Arch Metal

Uploaded by

svm2k20
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 50

 

 
 
 
Cloudera​ ​Enterprise 
Reference​ ​Architecture 
for​ ​Bare​ ​Metal 
Deployments 
 
 
 
   

 
 

Important​ ​Notice 
©​ ​2010-2017​ ​Cloudera,​ ​Inc.​ ​All​ ​rights​ ​reserved.  
 
Cloudera,​ ​the​ ​Cloudera​ ​logo,​ ​and​ ​any​ ​other​ ​product​ ​or​ ​service​ ​names​ ​or​ ​slogans​ ​contained​ ​in​ ​this 
document,​ ​except​ ​as​ ​otherwise​ ​disclaimed,​ ​are​ ​trademarks​ ​of​ ​Cloudera​ ​and​ ​its​ ​suppliers​ ​or​ ​licensors,​ ​and 
may​ ​not​ ​be​ ​copied,​ ​imitated​ ​or​ ​used,​ ​in​ ​whole​ ​or​ ​in​ ​part,​ ​without​ ​the​ ​prior​ ​written​ ​permission​ ​of​ ​Cloudera 
or​ ​the​ ​applicable​ ​trademark​ ​holder.  
 
Hadoop​ ​and​ ​the​ ​Hadoop​ ​elephant​ ​logo​ ​are​ ​trademarks​ ​of​ ​the​ ​Apache​ ​Software​ ​Foundation.​ ​All​ ​other 
trademarks,​ ​registered​ ​trademarks,​ ​product​ ​names​ ​and​ ​company​ ​names​ ​or​ ​logos​ ​mentioned​ ​in​ ​this 
document​ ​are​ ​the​ ​property​ ​of​ ​their​ ​respective​ ​owners​ ​to​ ​any​ ​products,​ ​services,​ ​processes​ ​or​ ​other 
information,​ ​by​ ​trade​ ​name,​ ​trademark,​ ​manufacturer,​ ​supplier​ ​or​ ​otherwise​ ​does​ ​not​ ​constitute​ ​or​ ​imply 
endorsement,​ ​sponsorship​ ​or​ ​recommendation​ ​thereof​ ​by​ ​us. 
 
Complying​ ​with​ ​all​ ​applicable​ ​copyright​ ​laws​ ​is​ ​the​ ​responsibility​ ​of​ ​the​ ​user.​ ​Without​ ​limiting​ ​the​ ​rights 
under​ ​copyright,​ ​no​ ​part​ ​of​ ​this​ ​document​ ​may​ ​be​ ​reproduced,​ ​stored​ ​in​ ​or​ ​introduced​ ​into​ ​a​ ​retrieval 
system,​ ​or​ ​transmitted​ ​in​ ​any​ ​form​ ​or​ ​by​ ​any​ ​means​ ​(electronic,​ ​mechanical,​ ​photocopying,​ ​recording,​ ​or 
otherwise),​ ​or​ ​for​ ​any​ ​purpose,​ ​without​ ​the​ ​express​ ​written​ ​permission​ ​of​ ​Cloudera. 
 
Cloudera​ ​may​ ​have​ ​patents,​ ​patent​ ​applications,​ ​trademarks,​ ​copyrights,​ ​or​ ​other​ ​intellectual​ ​property 
rights​ ​covering​ ​subject​ ​matter​ ​in​ ​this​ ​document.​ ​Except​ ​as​ ​expressly​ ​provided​ ​in​ ​any​ ​written​ ​license 
agreement​ ​from​ ​Cloudera,​ ​the​ ​furnishing​ ​of​ ​this​ ​document​ ​does​ ​not​ ​give​ ​you​ ​any​ ​license​ ​to​ ​these​ ​patents, 
trademarks​ ​copyrights,​ ​or​ ​other​ ​intellectual​ ​property. 
 
The​ ​information​ ​in​ ​this​ ​document​ ​is​ ​subject​ ​to​ ​change​ ​without​ ​notice.​ ​Cloudera​ ​shall​ ​not​ ​be​ ​liable​ ​for​ ​any 
damages​ ​resulting​ ​from​ ​technical​ ​errors​ ​or​ ​omissions​ ​which​ ​may​ ​be​ ​present​ ​in​ ​this​ ​document,​ ​or​ ​from 
use​ ​of​ ​this​ ​document. 
 
Cloudera,​ ​Inc. 
395​ ​Page​ ​Mill​ ​Road  
Palo​ ​Alto,​ ​CA​ ​94306 
info@cloudera.com 
US:​ ​1-888-789-1488 
Intl:​ ​1-650-362-0488 
www.cloudera.com 
 
Release​ ​Information 
Version:​ ​5.13​ ​(if​ ​applicable) 
Date:​ ​2017-10-27   

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​2


 

Table​ ​of​ ​Contents 


Abstract 

Infrastructure 
System​ ​Architecture​ ​Best​ ​Practices 
Java 
Right-size​ ​Server​ ​Configurations 
General​ ​Cluster​ ​Architecture 
Deployment​ ​Topology 
Physical​ ​Component​ ​List 
Network​ ​Specification 
Cloudera​ ​Manager 
Cluster​ ​Sizing​ ​Best​ ​Practices 
Cluster​ ​Hardware​ ​Selection​ ​Best​ ​Practices 
Number​ ​of​ ​Spindles 
Disk​ ​Layout 
Data​ ​Density​ ​Per​ ​Drive 
Number​ ​of​ ​Cores​ ​and​ ​Multithreading 
RAM 
Power​ ​Supplies 
Operating​ ​System​ ​Best​ ​Practices 
Hostname​ ​Naming​ ​Convention 
Hostname​ ​Resolution 
Functional​ ​Accounts 
Time 
Name​ ​Service​ ​Caching 
SELinux 
IPv6 
iptables 
Startup​ ​Services 
Process​ ​Memory 
Kernel​ ​and​ ​OS​ ​Tuning 
Filesystems 

Cluster​ ​Configuration 
Teragen​ ​and​ ​Terasort​ ​Performance​ ​Baseline 
Teragen​ ​and​ ​Terasort​ ​Command​ ​Examples 
Cluster​ ​Configuration​ ​Best​ ​Practices 
ZooKeeper 
HDFS 
YARN 
Impala 
Spark 
HBase 
Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​3
 

Search 
Oozie 
Kafka 
Flume 
Kudu 

Security​ ​Integration 
Security​ ​Integration​ ​Best​ ​Practices 
Security​ ​Pillars 
Kerberos 
LDAP 
Operating​ ​System​ ​Integration 
Role-Based​ ​Access​ ​Controls​ ​(RBAC) 
Wire​ ​Encryption 
Encryption-at-Rest​ ​and​ ​Key​ ​Management 
Cloudera​ ​Navigator 

Common​ ​Questions 
Multiple​ ​Data​ ​Centers 
Operating​ ​Systems 
Storage​ ​Options​ ​and​ ​Configuration 
Relational​ ​Databases 

References 
Cloudera​ ​Enterprise 

Acknowledgements 
   

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​4


 

Abstract 
An​ ​organization’s​ ​requirements​ ​for​ ​a​ ​big-data​ ​solution​ ​are​ ​simple:​ ​acquire​ ​and​ ​combine​ ​any​ ​amount​ ​or 
type​ ​of​ ​data​ ​in​ ​its​ ​original​ ​fidelity,​ ​in​ ​one​ ​place,​ ​for​ ​as​ ​long​ ​as​ ​necessary,​ ​and​ ​deliver​ ​insights​ ​to​ ​all​ ​kinds​ ​of 
users,​ ​as​ ​quickly​ ​as​ ​possible. 
 
Cloudera,​ ​an​ ​enterprise​ ​data​ ​management​ ​company,​ ​introduced​ ​the​ ​concept​ ​of​ ​the​ ​enterprise​ ​data​ ​hub 
(EDH):​ ​a​ ​central​ ​system​ ​to​ ​store​ ​and​ ​work​ ​with​ ​all​ ​data.​ ​The​ ​EDH​ ​has​ ​the​ ​flexibility​ ​to​ ​run​ ​a​ ​variety​ ​of 
enterprise​ ​workloads​ ​(for​ ​example,​ ​batch​ ​processing,​ ​interactive​ ​SQL,​ ​enterprise​ ​search,​ ​and​ ​advanced 
analytics)​ ​while​ ​meeting​ ​enterprise​ ​requirements​ ​such​ ​as​ ​integrations​ ​to​ ​existing​ ​systems,​ ​robust 
security,​ ​governance,​ ​data​ ​protection,​ ​and​ ​management.​ ​The​ ​EDH​ ​is​ ​the​ ​emerging​ ​center​ ​of​ ​enterprise 
data​ ​management.​ ​EDH​ ​builds​ ​on​ ​Cloudera​ ​Enterprise​,​ ​which​ ​consists​ ​of​ ​the​ ​open​ ​source​ ​Cloudera 
Distribution​ ​including​ ​Apache​ ​Hadoop​ ​(CDH),​ ​a​ ​suite​ ​of​ ​management​ ​software​ ​and​ ​enterprise-class 
support. 
 
As​ ​organizations​ ​embrace​ ​Hadoop-powered​ ​big​ ​data​ ​deployments,​ ​they​ ​also​ ​want​ ​enterprise-grade 
security,​ ​management​ ​tools,​ ​and​ ​technical​ ​support--all​ ​of​ ​which​ ​are​ ​part​ ​of​ ​Cloudera​ ​Enterprise. 
 
Cloudera​ ​Reference​ ​Architecture​ ​documents​​ ​illustrate​ ​example​ ​cluster​ ​configurations​ ​and​ ​certified 
partner​ ​products.​ ​The​ ​RAs​ ​are​ ​not​ ​replacements​ ​for​ o ​ fficial​ ​statements​ ​of​ ​supportability​,​ ​rather​ ​they’re 
guides​ ​to​ ​assist​ ​with​ ​deployment​ ​and​ ​sizing​ ​options.​ ​Statements​ ​regarding​ ​supported​ ​configurations​ ​in 
the​ ​RA​ ​are​ ​informational​ ​and​ ​should​ ​be​ ​cross-referenced​ ​with​ ​the​ ​latest​ ​documentation​. 
 
This​ ​document​ ​is​ ​a​ ​high-level​ ​design​ ​and​ ​best-practices​ ​guide​ ​for​ ​deploying​ ​Cloudera​ ​Enterprise​ ​on​ ​bare 
metal. 
 

 
   

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​5


 

Infrastructure 
System​ ​Architecture​ ​Best​ ​Practices 
This​ ​section​ ​describes​ ​Cloudera’s​ ​recommendations​ ​and​ ​best​ ​practices​ ​applicable​ ​to​ ​Hadoop​ ​cluster 
system​ ​architecture. 

Java 
Cloudera​ ​Manager​ ​and​ ​CDH​ ​are​ ​certified​ ​to​ ​run​ ​on​ ​Oracle​ ​JDK.​ ​At​ ​this​ ​time​ ​OpenJDK​ ​is​ ​not​ ​supported​.
Cloudera​ ​distributes​ ​a​ ​compatible​ ​version​ ​of​ ​the​ ​Oracle​ ​JDK​ ​through​ ​the​ ​Cloudera​ ​Manager​ ​repository. 
Customers​ ​are​ ​also​ ​free​ ​to​ ​install​ ​a​ ​compatible​ ​version​ ​of​ ​the​ ​Oracle​ ​JDK​ ​distributed​ ​by​ ​Oracle. 
 
Refer​ ​to​ C
​ DH​ ​and​ ​Cloudera​ ​Manager​ ​Supported​ ​JDK​ ​Versions​​ ​for​ ​a​ ​list​ ​of​ ​supported​ ​JDK​ ​versions. 

Right-size​ ​Server​ ​Configurations 


Cloudera​ ​recommends​ ​deploying​ ​three​ ​or​ ​four​ ​machine​ ​types​ ​into​ ​production: 
● Master​ ​Node.​​ ​Runs​ ​the​ ​Hadoop​ ​master​ ​daemons:​ ​NameNode,​ ​Standby​ ​NameNode,​ ​YARN 
Resource​ ​Manager​ ​and​ ​History​ ​Server,​ ​the​ ​HBase​ ​Master​ ​daemon,​ ​Sentry​ ​server,​ ​and​ ​the​ ​Impala 
StateStore​ ​Server​ ​and​ ​Catalog​ ​Server.​ ​ ​Master​ ​nodes​ ​are​ ​also​ ​the​ ​location​ ​where​ ​Zookeeper​ ​and 
JournalNodes​ ​are​ ​installed.​ ​ ​The​ ​daemons​ ​can​ ​often​ ​share​ ​single​ ​pool​ ​of​ ​servers.​ ​Depending​ ​on 
the​ ​cluster​ ​size,​ ​the​ ​roles​ ​can​ ​instead​ ​each​ ​be​ ​run​ ​on​ ​a​ ​dedicated​ ​server.​ ​Kudu​ ​Master​ ​Servers 
should​ ​also​ ​be​ ​deployed​ ​on​ ​master​ ​nodes. 
● Worker​ ​Node.​​ ​Runs​ ​the​ ​HDFS​ ​DataNode,​ ​YARN​ ​NodeManager,​ ​HBase​ ​RegionServer,​ ​Impala 
impalad,​ ​Search​ ​worker​ ​daemons​ ​and​ ​Kudu​ ​Tablet​ ​Servers. 
● Utility​ ​Node.​​ ​Runs​ ​Cloudera​ ​Manager​ ​and​ ​the​ ​Cloudera​ ​Management​ ​Services.​ ​ ​It​ ​can​ ​also​ ​host​ ​a 
MySQL​ ​(or​ ​another​ ​supported)​ ​database​ ​instance,​ ​which​ ​is​ ​used​ ​by​ ​Cloudera​ ​Manager,​ ​Hive, 
Sentry​ ​and​ ​other​ ​Hadoop-related​ ​projects. 
● Edge​ ​Node.​​ ​ ​Contains​ ​all​ ​client-facing​ ​configurations​ ​and​ ​services,​ ​including​ ​gateway 
configurations​ ​for​ ​HDFS,​ ​YARN,​ ​Impala,​ ​Hive,​ ​and​ ​HBase.​ ​ ​The​ ​edge​ ​node​ ​is​ ​also​ ​a​ ​good​ ​place​ ​for 
Hue,​ ​Oozie,​ ​HiveServer2,​ ​and​ ​Impala​ ​HAProxy.​ ​ ​HiveServer2​ ​and​ ​Impala​ ​HAProxy​ ​serve​ ​as​ ​a 
gateway​ ​to​ ​external​ ​applications​ ​such​ ​as​ ​Business​ ​Intelligence​ ​(BI)​ ​tools. 
 
For​ ​more​ ​information​ ​refer​ ​to​ ​Cluster​ ​Hosts​ ​and​ ​Role​ ​Assignments​. 
 
Note: 
The​ ​edge​ ​and​ ​utility​ ​nodes​ ​can​ ​be​ ​combined​ ​in​ ​smaller​ ​clusters. 

General​ ​Cluster​ ​Architecture 


This​ ​section​ ​contains​ ​general​ ​guidelines​ ​for​ ​cluster​ ​layout,​ ​assuming​ ​the​ ​usage​ ​of​ ​HDFS,​ ​YARN,​ ​Hive, 
Impala,​ ​Hue,​ ​Oozie,​ ​and​ ​ZooKeeper. 
 
In​ ​this​ ​reference​ ​architecture,​ ​we​ ​consider​ ​different​ ​kinds​ ​of​ ​workloads​ ​that​ ​are​ ​run​ ​on​ ​top​ ​of​ ​an 
Enterprise​ ​Data​ ​Hub.​ ​The​ ​initial​ ​requirements​ ​focus​ ​on​ ​host​ ​types​ ​that​ ​are​ ​suitable​ ​for​ ​a​ ​diverse​ ​set​ ​of 
workloads.​ ​As​ ​service​ ​offerings​ ​change,​ ​these​ ​requirements​ ​may​ ​change​ ​to​ ​specify​ ​host​ ​types​ ​that​ ​are 
unique​ ​to​ ​specific​ ​workloads.​ ​You​ ​choose​ ​host​ ​types​ ​based​ ​on​ ​the​ ​workload​ ​you​ ​run​ ​on​ ​the​ ​cluster.​ ​You 
should​ ​also​ ​do​ ​a​ ​cost-performance​ ​analysis. 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​6


 

Small​ ​Cluster​ ​(up​ ​to​ ​20​ ​worker​ ​nodes) 


● 2​ ​Master​ ​Nodes 
○ HDFS​ ​NameNode​ ​(2,​ ​HA) 
○ HDFS​ ​JournalNode​ ​(3) 
○ HDFS​ ​FailoverController​ ​(2,​ ​collocated​ ​with​ ​NN​ ​services) 
○ YARN​ ​Resource​ ​Manager​ ​(2,​ ​HA) 
○ YARN​ ​History​ ​Server 
○ HBase​ ​Master​ ​(2,​ ​HA) 
○ Impala​ ​StateStore​ ​Server   
○ Sentry​ ​Service 
○ ZooKeeper​ ​(2) 
○ Kudu​ ​Master​ ​Server​ ​(2) 
● 1​ ​Utility/Edge​ ​Node 
○ Cloudera​ ​Manager 
○ Cloudera​ ​Management​ ​Services 
○ HDFS​ ​JournalNode 
○ Hive​ ​Metastore​ ​Server 
○ HiveServer2 
○ HBase​ ​Thrift​ ​or​ ​REST​ ​Server 
○ Impala​ ​Catalog​ ​Server 
○ Hue 
○ Oozie 
○ Flume​ ​Agent 
○ Database​ ​server 
○ Gateway​ ​(client)​ ​configurations 
1
○ ZooKeeper​ ​Node  
○ Kudu​ ​Master​ ​Server​ ​(1) 
● 20​ ​Worker​ ​Nodes 
○ HDFS​ ​DataNode 
○ YARN​ ​NodeManager 
○ HBase​ ​Region​ ​Server 
○ Impalad 
○ Kudu​ ​Tablet​ ​Server

Medium​ ​Cluster​ ​(up​ ​to​ ​200​ ​worker​ ​nodes) 


● 3​ ​Master​ ​Nodes 
○ HDFS​ ​NameNode​ ​(2,​ ​HA) 
○ HDFS​ ​JournalNode​ ​(3) 
○ HDFS​ ​FailoverController​ ​(2,​ ​collocated​ ​with​ ​NN​ ​services) 
○ YARN​ ​Resource​ ​Manager​ ​(2,​ ​HA) 
○ YARN​ ​History​ ​Server 
○ HBase​ ​Master​ ​(3,​ ​HA) 
○ Sentry​ ​Service  
○ ZooKeeper​ ​(3) 

1
​ ​ZooKeeper​ ​Node​ ​and​ ​JournalNode​ ​should​ ​have​ ​their​ ​own​ ​dedicated​ ​spindle​ ​in​ ​this​ ​configuration. 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​7


 

○ Kudu​ ​Master​ ​Servers​ ​(3) 


● 2​ ​Utility​ ​Nodes 
○ Cloudera​ ​Manager​ ​(node​ ​1) 
○ Cloudera​ ​Management​ ​Services​ ​(node​ ​2) 
○ Hive​ ​Metastore​ ​Server​ ​(node​ ​1) 
○ Impala​ ​Catalog​ ​Server​ ​(node​ ​1) 
○ Oozie​ ​(node​ ​1) 
○ RDBMS​ ​servers​ ​(both) 
● 1+​ ​Edge​ ​Nodes 
○ Hue 
○ HiveServer2 
○ HBase​ ​Thrift​ ​or​ ​REST​ ​Server 
○ Flume​ ​Agent 
○ Gateway​ ​(Client)​ ​configurations 
● 200​ ​Worker​ ​Nodes 
○ HDFS​ ​DataNode 
○ YARN​ ​NodeManager 
○ HBase​ ​Region​ ​Server 
○ Impalad 
○ Kudu​ ​Tablet​ ​Server 

Large​ ​Cluster​ ​(up​ ​to​ ​500​ ​worker​ ​nodes) 


● 5​ ​Master​ ​Nodes 
○ HDFS​ ​NameNode​ ​(2,​ ​HA) 
○ HDFS​ ​JournalNode​ ​(5) 
○ HDFS​ ​FailoverController​ ​(collocated​ ​with​ ​NN​ ​services) 
○ YARN​ ​Resource​ ​Manager​ ​(2,​ ​HA) 
○ HBase​ ​Master​ ​(5,​ ​HA) 
○ Impala​ ​StateStore​ ​Server  
○ Sentry​ ​Service  
○ ZooKeeper​ ​Node​ ​(5) 
○ Kudu​ ​Master​ ​Server​ ​(5) 
● 2​ ​Utility​ ​Nodes 
○ Cloudera​ ​Manager​ ​(node​ ​1) 
○ Cloudera​ ​Management​ ​Services​ ​(node​ ​2) 
○ Hive​ ​Metastore​ ​Server​ ​(node​ ​1) 
○ Impala​ ​Catalog​ ​Server​ ​(node​ ​1) 
○ Oozie​ ​(node​ ​1) 
○ Database​ ​server​ ​(both) 
● 1+​ ​Edge​ ​Nodes 
○ Hue 
○ HiveServer2 
○ HBase​ ​Thrift​ ​or​ ​REST​ ​Server 
○ Flume​ ​Agent 
○ Gateway​ ​(Client)​ ​configurations 
● 500​ ​Worker​ ​Nodes 
○ HDFS​ ​DataNode 
○ YARN​ ​NodeManager 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​8


 

○ HBase​ ​Region​ ​Server 


○ Impalad 
○ Kudu​ ​Tablet​ ​Server 
 

Very​ ​Large​ ​Cluster​ ​(500+​ ​worker​ ​nodes) 


Very​ ​Large​ ​clusters​ ​have​ ​a​ ​layout​ ​similar​ ​to​ ​Large​ ​clusters​ ​but​ ​require​ ​detailed​ ​environment​ ​and​ ​workload 
analysis​ ​and​ ​custom​ ​configuration.​ ​Contact​ ​Cloudera​ ​for​ ​additional​ ​information. 

Encryption​ ​Infrastructure​ ​(for​ ​all​ ​cluster​ ​sizes) 


● 4​ ​Utility​ ​nodes 
○ Key​ ​Management​ ​Server​ ​(2) 
○ Key​ ​Trustee​ ​Server​ ​(2) 
 
Further​ ​detail​ ​can​ ​be​ ​found​ ​in​ ​the​ ​Encryption​​ ​discussion​ ​later​ ​in​ ​this​ ​document.
 
Note: 
Edge​ ​nodes​ ​in​ ​the​ ​medium​ ​and​ ​large​ ​cluster​ ​architectures​ ​are​ ​mostly​ ​driven​ ​by​ ​use​ ​cases.​ ​ ​Complex 
ingest​ ​pipelines​ ​and/or​ ​lots​ ​of​ ​client​ ​access​ ​will​ ​require​ ​more​ ​edge​ ​nodes​ ​to​ ​handle​ ​the​ ​load. 

 
Note: 
Without​ ​three​ ​master​ ​servers​ ​Kudu​ ​does​ ​not​ ​provide​ ​HA.​ ​Five​ ​masters​ ​can​ ​be​ ​utilized;​ ​in​ ​this​ ​case​ ​the 
loss​ ​of​ ​2​ ​Kudu​ ​Master​ ​Servers​ ​will​ ​be​ ​tolerated. 

   

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​9


 

Deployment​ ​Topology 
The​ ​graphic​ ​below​ ​depicts​ ​a​ ​cluster​ ​deployed​ ​across​ ​several​ ​racks​ ​(Rack​ ​1,​ ​Rack​ ​2,​ ​…​ ​Rack​ ​n)​ . 

Each​ ​host​ ​is​ ​networked​ ​to​ ​two​ ​top-of-rack​ ​(TOR)​ ​switches​ ​which​ ​are​ ​in​ ​turn​ ​connected​ ​to​ ​a​ ​collection​ ​of 
spine​ ​switches​ ​which​ ​are​ ​then​ ​connected​ ​to​ ​the​ ​enterprise​ ​network.​ ​This​ ​deployment​ ​model​ ​allows​ ​each 
host​ ​maximum​ ​throughput,​ ​minimize​ ​of​ ​latency,​ ​while​ ​encouraging​ ​scalability.​ ​The​ ​specifics​ ​of​ ​the 
network​ ​topology​ ​are​ ​described​ ​in​ ​the​ ​subsequent​ ​sections. 

   

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​10


 

Physical​ ​Component​ ​List 


The​ ​follow​ ​table​ ​describes​ ​the​ ​physical​ ​components​ ​recommended​ ​to​ ​deploy​ ​an​ ​EDH​ ​cluster. 
 
Component   Configuration  Description  Quantity 

Physical​ ​servers  Two-socket,​ ​8-14​ ​cores​ ​per  Hosts​ ​that​ ​house  Based​ ​on​ ​cluster 
socket​ ​>​ ​2​ ​GHz;​ ​minimally  the​ ​various​ ​cluster  design. 
128​ ​GB​ ​RAM.  components. 

NICs  10​ ​Gbps​ ​Ethernet​ ​NICs  Provide​ ​the​ ​data  At​ ​least​ ​one​ ​per 
preferred.  network​ ​services  server,​ ​although​ ​two 
  for​ ​the​ ​cluster.  NICs​ ​can​ ​be​ ​bonded 
for​ ​additional 
throughput.  

Internal​ ​HDDs  500​ ​GB​ ​HDD​ ​or​ ​SSD  These​ ​ensure  6-24​ ​disks​ ​per 
recommended​ ​for  continuity​ ​of  physical​ ​server. 
operating​ ​system​ ​and​ ​logs;  service​ ​on​ ​server 
HDD​ ​for​ ​data​ ​disks​ ​(size  resets​ ​and​ ​contain 
varies​ ​with​ ​data​ ​volume  the​ ​cluster​ ​data. 
requirements) 

Ethernet​ ​ToR/leaf  Minimally​ ​10​ ​Gbps  Although​ ​most  At​ ​least​ ​two​ ​per 
switches  switches​ ​with​ ​sufficient  enterprises​ ​have  rack. 
port​ ​density​ ​to  mature​ ​data 
accommodate​ ​the​ ​cluster.  network​ ​practices, 
These​ ​require​ ​enough​ ​ports  consider​ ​building​ ​a 
to​ ​create​ ​a​ ​realistic  dedicated​ ​data 
spine-leaf​ ​topology  network​ ​for​ ​the 
providing​ ​ISL​ ​bandwidth  Hadoop​ ​cluster. 
above​ ​a​ ​1:4 
oversubscription​ ​ratio 
(preferably​ ​1:1).  

Ethernet​ ​spine  Minimally​ ​10​ ​Gbps  Same  Depends​ ​on​ ​the 


switches  switches​ ​with​ ​sufficient  considerations​ ​as  number​ ​of​ ​racks. 
port​ ​density​ ​to  for​ ​ToR​ ​switches.  
accommodate​ ​incoming 
ISL​ ​links​ ​and​ ​ensure 
required​ ​throughput​ ​over 
the​ ​spine​ ​(for​ ​inter-rack 
traffic). 
 

   

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​11


 

Network​ ​Specification 

Dedicated​ ​Network​ ​Hardware 


Hadoop​ ​can​ ​consume​ ​all​ ​available​ ​network​ ​bandwidth.​ ​ ​For​ ​this​ ​reason,​ ​Cloudera​ ​recommends​ ​that 
Hadoop​ ​be​ ​placed​ ​in​ ​a​ ​separate​ ​physical​ ​network​ ​with​ ​its​ ​own​ ​core​ ​switch. 

Switch​ ​Per​ ​Rack 


Hadoop​ ​supports​ ​the​ ​concept​ ​of​ ​rack​ ​locality​ ​and​ ​takes​ ​advantage​ ​of​ ​the​ ​network​ ​topology​ ​to​ ​minimize 
network​ ​congestion.​ ​ ​Ideally,​ ​nodes​ ​in​ ​one​ ​rack​ ​should​ ​connect​ ​to​ ​a​ ​single​ ​physical​ ​switch.​ ​ ​Two​ ​top-​ ​of- 
rack​ ​(TOR)​ ​switches​ ​can​ ​be​ ​used​ ​for​ ​high​ ​availability.​ ​ ​Each​ ​rack​ ​switch​ ​(i.e.​ ​TOR​ ​switch)​ ​uplinks​ ​to​ ​a​ ​core 
switch​ ​with​ ​a​ ​significantly​ ​bigger​ ​backplane.​ ​Cloudera​ ​recommends​ ​10​ ​GbE​ ​(or​ ​faster)​ ​connections 
between​ ​the​ ​servers​ ​and​ ​TOR​ ​switches.​ ​ ​TOR​ ​uplink​ ​bandwidth​ ​to​ ​the​ ​core​ ​switch​ ​(two​ ​switches​ ​in​ ​a​ ​HA 
configuration)​ ​will​ ​often​ ​be​ ​oversubscribed​ ​to​ ​some​ ​extent.  

Uplink​ ​Oversubscription 
How​ ​much​ ​oversubscription​ ​is​ ​appropriate​ ​is​ ​workload​ ​dependent.​ ​Cloudera’s​ ​recommendation​ ​is​ ​that 
the​ ​ratio​ ​between​ ​the​ ​total​ ​access​ ​port​ ​bandwidth​ ​and​ ​uplink​ ​bandwidth​ ​be​ ​as​ ​close​ ​to​ ​1:1​ ​as​ ​is​ ​possible. 
This​ ​is​ ​especially​ ​important​ ​for​ ​heavy​ ​ETL​ ​workloads,​ ​and​ ​MapReduce​ ​jobs​ ​that​ ​have​ ​a​ ​lot​ ​of​ ​data​ ​sent​ ​to 
reducers. 
 
Oversubscription​ ​ratios​ ​up​ ​to​ ​4:1​ ​are​ ​generally​ ​fine​ ​for​ ​balanced​ ​workloads,​ ​but​ ​network​ ​monitoring​ ​is 
needed​ ​to​ ​ensure​ ​uplink​ ​bandwidth​ ​is​ ​not​ ​the​ ​bottleneck​ ​for​ ​Hadoop.​ ​The​ ​following​ ​table​ ​provides​ ​some 
examples​ ​as​ ​a​ ​point​ ​of​ ​reference: 
 
Access​ ​Port​ ​Bandwidth​ ​(In​ ​Use)  Uplink​ ​Port​ ​Bandwidth​ ​(Bonded)  Ratio 
48​ ​x​ ​1​ ​GbE​ ​=​ ​48​ ​Gbit/s  4​ ​x​ ​10​ ​GbE​ ​=​ ​40​ ​Gbit/s  1.2:1 
24​ ​x​ ​10​ ​GbE​ ​=​ ​240​ ​Gbit/s  2​ ​x​ ​40​ ​Gig​ ​CFP​ ​=​ ​80​ ​Gbit/s  3:1 
48​ ​x​ ​10​ ​GbE​ ​=​ ​480​ ​Gbit/s  4​ ​x​ ​40​ ​Gig​ ​CFP​ ​=​ ​160​ ​Gbit/s  3:1 
 
Important: 
Do​ ​not​ ​exceed​ ​4:1​ ​oversubscription​ ​ratio.​ ​For​ ​example,​ ​if​ ​a​ ​TOR​ ​has​ ​20​ ​x​ ​10​ ​GbE​ ​ports​ ​used,​ ​the​ ​uplink 
should​ ​be​ a​ t​ ​least​​ ​50​ ​Gbps.​ ​Different​ ​switches​ ​have​ ​dedicated​ ​uplink​ ​ports​ ​of​ ​specific​ ​bandwidth​ ​(often 
40​ ​Gbps​ ​or​ ​100​ ​Gbps)​ ​and​ ​therefore​ ​careful​ ​planning​ ​needs​ ​to​ ​be​ ​done​ ​in​ ​order​ ​to​ ​choose​ ​the​ ​right 
switch​ ​types. 
 

Redundant​ ​Network​ ​Switches 


Having​ ​redundant​ ​core​ ​switches​ ​in​ ​a​ ​full​ ​mesh​ ​configuration​ ​will​ ​allow​ ​the​ ​cluster​ ​to​ ​continue​ ​operating​ ​in 
the​ ​event​ ​of​ ​a​ ​core​ ​switch​ ​failure.​ ​ ​Redundant​ ​TOR​ ​switches​ ​will​ ​prevent​ ​the​ ​loss​ ​of​ ​an​ ​entire​ ​rack​ ​of 
processing​ ​and​ ​storage​ ​capacity​ ​in​ ​the​ ​event​ ​of​ ​a​ ​TOR​ ​switch​ ​failure.​ ​ ​General​ ​cluster​ ​availability​ ​can​ ​still 
be​ ​maintained​ ​in​ ​the​ ​event​ ​of​ ​the​ ​loss​ ​of​ ​a​ ​rack,​ ​as​ ​long​ ​as​ ​master​ ​nodes​ ​are​ ​distributed​ ​across​ ​multiple 
racks. 

Accessibility 
The​ ​accessibility​ ​of​ ​your​ ​Cloudera​ ​Enterprise​ ​cluster​ ​is​ ​defined​ ​by​ ​the​ ​network​ ​configuration​ ​and​ ​depends 
on​ ​the​ ​security​ ​requirements​ ​and​ ​the​ ​workload.​ ​Typically,​ ​there​ ​are​ ​edge/client​ ​nodes​ ​that​ ​have​ ​direct 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​12


 

access​ ​to​ ​the​ ​cluster.​ ​Users​ ​go​ ​through​ ​these​ ​edge​ ​nodes​ ​via​ ​client​ ​applications​ ​to​ ​interact​ ​with​ ​the 
cluster​ ​and​ ​the​ ​data​ ​residing​ ​there.​ ​These​ ​edge​ ​nodes​ ​could​ ​be​ ​running​ ​a​ ​web​ ​application​ ​for​ ​real-time 
serving​ ​workloads,​ ​BI​ ​tools,​ ​or​ ​simply​ ​the​ ​Hadoop​ ​command-line​ ​client​ ​used​ ​to​ ​submit​ ​or​ ​interact​ ​with 
HDFS. 
 
Cloudera​ ​recommends​ ​allowing​ ​access​ ​to​ ​the​ ​Cloudera​ ​Enterprise​ ​cluster​ ​via​ ​edge​ ​nodes​ ​only.​ ​You​ ​can 
configure​ ​this​ ​in​ ​the​ ​security​ ​groups​ ​for​ ​the​ ​hosts​ ​that​ ​you​ ​provision.​ ​The​ ​rest​ ​of​ ​this​ ​document​ ​describes 
the​ ​various​ ​options​ ​in​ ​detail. 

Internet​ ​Connectivity 
Clusters​ ​that​ ​do​ ​not​ ​require​ ​heavy​ ​data​ ​transfer​ ​between​ ​the​ ​Internet​ ​or​ ​services​ ​outside​ ​of​ ​the​ ​immediate 
network​ ​and​ ​HDFS​ ​still​ ​might​ ​need​ ​access​ ​to​ ​services​ ​like​ ​software​ ​repositories​ ​for​ ​updates​ ​or​ ​other 
low-volume​ ​outside​ ​data​ ​sources. 
 
If​ ​you​ ​completely​ ​disconnect​ ​the​ ​cluster​ ​from​ ​the​ ​Internet,​ ​you​ ​block​ ​access​ ​for​ ​software​ ​updates​ ​which 
makes​ ​maintenance​ ​difficult. 

Cloudera​ ​Manager 
Cloudera​ ​strongly​ ​recommends​ ​installing​ ​CDH​ ​using​ ​Cloudera​ ​Manager​ ​(CM).​ ​ During​ ​the​ ​CDH​ ​installation 
via​ ​CM​ ​there​ ​is​ ​the​ ​choice​ ​to​ ​install​ ​using​ ​parcels​ ​or​ ​native​ ​packages.​ ​ A​ ​parcel​ ​is​ ​a​ ​binary​ ​distribution 
format.​ ​Parcels​ ​offer​ ​a​ ​number​ ​of​ ​benefits​ ​including​ ​consistency,​ ​flexible​ ​installation​ ​location,​ ​installation 
without​ ​sudo,​ ​reduced​ ​upgrade​ ​downtime,​ ​rolling​ ​upgrades,​ ​and​ ​easy​ ​downgrades.​ ​ Cloudera 
recommends​ ​using​ ​parcels,​ ​though​ ​using​ ​packages​ ​is​ ​supported. 

   

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​13


 

Cluster​ ​Sizing​ ​Best​ ​Practices 


Each​ ​worker​ ​node​ ​typically​ ​has​ ​several​ ​physical​ ​disks​ ​dedicated​ ​to​ ​raw​ ​storage​ ​for​ ​Hadoop.​ ​ ​This​ ​number 
will​ ​be​ ​used​ ​to​ ​calculate​ ​the​ ​total​ ​available​ ​storage​ ​for​ ​each​ ​cluster.​ ​ ​Also,​ ​the​ ​calculations​ ​listed​ ​below 
assume​ ​10%​ ​disk​ ​space​ ​allocated​ ​for​ ​YARN​ ​temporary​ ​storage.​ ​ ​Cloudera​ ​recommends​ ​allocating 
between​ ​10-25%​ ​of​ ​the​ ​raw​ ​disk​ ​space​ ​for​ ​temporary​ ​storage​ ​as​ ​a​ ​general​ ​guideline.​ ​ ​This​ ​can​ ​be​ ​changed 
within​ ​Cloudera​ ​Manager​ ​and​ ​should​ ​be​ ​adjusted​ ​after​ ​analyzing​ ​production​ ​workloads.​ ​ ​For​ ​example, 
MapReduce​ ​jobs​ ​that​ ​send​ ​little​ ​data​ ​to​ ​reducers​ ​allow​ ​for​ ​adjusting​ ​this​ ​number​ ​percentage​ ​down 
considerably. 

The​ ​following​ ​table​ ​contains​ ​example​ ​calculations​ ​for​ ​a​ ​cluster​ ​that​ ​contains​ ​17​ ​worker​ ​nodes.​ ​ ​Each 
server​ ​has​ ​twelve​ ​3​ ​TB​ ​drives​ ​available​ ​for​ ​use​ ​by​ ​Hadoop.​ ​ ​The​ ​table​ ​below​ ​outlines​ ​the​ ​Hadoop​ ​storage 
available​ ​based​ ​upon​ ​the​ ​number​ ​of​ ​worker​ ​nodes: 

Raw​ ​Storage  612​ ​TB 


HDFS​ ​Storage​ ​(Configurable)  550.8​ ​TB 
HDFS​ ​Unique​ ​Storage​ ​(default​ ​replication​ ​factor)  183.6​ ​TB 
MapReduce​ ​Intermediate​ ​Storage​ ​(Configurable)  61.2​ ​TB 
 
Note: 
Compressing​ ​raw​ ​data​ ​can​ ​effectively​ ​increase​ ​HDFS​ ​storage​ ​capacity. 
 
While​ ​Cloudera​ ​Manager​ ​provides​ ​tools​ ​such​ ​as​ ​Static​ ​Resource​ ​Pools,​ ​which​ ​utilize​ ​Linux​ ​Cgroups,​ ​to 
allow​ ​multiple​ ​components​ ​to​ ​share​ ​hardware,​ ​in​ ​high​ ​volume​ ​production​ ​clusters​ ​it​ ​can​ ​be​ ​beneficial​ ​to 
allocate​ ​dedicated​ ​hosts​ ​for​ ​roles​ ​such​ ​as​ ​Solr,​ ​HBase,​ ​and​ ​Kafka. 

Cluster​ ​Hardware​ ​Selection​ ​Best​ ​Practices 


This​ ​section​ ​will​ ​give​ ​a​ ​high​ ​level​ ​overview​ ​of​ ​how​ ​different​ ​hardware​ ​component​ ​selections​ ​will​ ​impact 
the​ ​performance​ ​of​ ​a​ ​Hadoop​ ​cluster. 
 
Refer​ ​to​ ​the​ H
​ ardware​ ​Requirements​ ​Guide​​ ​for​ ​detailed​ ​workload-specific​ ​practices. 

Number​ ​of​ ​Spindles 


Traditionally​ ​Hadoop​ ​has​ ​been​ ​thought​ ​of​ ​as​ ​a​ ​large​ ​I/O​ ​platform.​ ​ ​While​ ​there​ ​are​ ​many​ ​new​ ​types​ ​of 
workloads​ ​being​ ​run​ ​on​ ​Cloudera​ ​clusters​ ​that​ ​may​ ​not​ ​be​ ​as​ ​I/O​ ​bound​ ​as​ ​traditional​ ​MapReduce 
applications,​ ​it​ ​is​ ​still​ ​useful​ ​to​ ​consider​ ​the​ ​I/O​ ​performance​ ​when​ ​architecting​ ​a​ ​Cloudera​ ​cluster. 
 
Unlike​ ​the​ ​number​ ​of​ ​cores​ ​in​ ​a​ ​CPU​ ​and​ ​the​ ​density​ ​of​ ​RAM,​ ​the​ ​speed​ ​at​ ​which​ ​data​ ​can​ ​be​ ​read​ ​from​ ​a 
2
spinning​ ​hard​ ​drive​ ​(spindle)​ ​has​ ​not​ ​changed​ ​much​ ​in​ ​the​ ​last​ ​10​ ​years .​ ​ ​In​ ​order​ ​to​ ​counter​ ​the​ ​limited 
performance​ ​of​ ​hard​ ​drive​ ​read/write​ ​operations,​ ​Hadoop​ ​reads​ ​and​ ​writes​ ​from​ ​many​ ​drives​ ​in​ ​parallel. 
Every​ ​additional​ ​spindle​ ​added​ ​per​ ​node​ ​increases​ ​the​ ​overall​ ​read/write​ ​speed​ ​of​ ​the​ ​cluster.  

2
​ ​SSDs​ ​have​ ​dramatically​ ​changed​ ​the​ ​persistent​ ​storage​ ​performance​ ​landscape,​ ​but​ ​the​ ​price​ ​per​ ​GB​ ​of 
spinning​ ​disks​ ​is​ ​still​ ​significantly​ ​less​ ​than​ ​that​ ​of​ ​SSD​ ​storage.​ ​ ​As​ ​SSDs​ ​come​ ​down​ ​in​ ​cost​ ​and 
technologies​ ​such​ ​as​ I​ ntel’s​ ​Optane™​​ ​enter​ ​the​ ​market,​ ​workloads​ ​may​ ​swing​ ​back​ ​towards​ ​being​ ​CPU 
bound.​ ​ ​Most​ ​Cloudera​ ​customers​ ​are​ ​still​ ​deploying​ ​clusters​ ​that​ ​store​ ​data​ ​on​ ​spinning​ ​hard​ ​disks. 
Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​14
 

Additional​ ​spindles​ ​also​ ​come​ ​with​ ​the​ ​likelihood​ ​of​ ​more​ ​network​ ​traffic​ ​in​ ​the​ ​cluster.​ ​ ​For​ ​the​ ​majority 
of​ ​cases,​ ​network​ ​traffic​ ​between​ ​nodes​ ​is​ ​generally​ ​limited​ ​by​ ​how​ ​fast​ ​data​ ​can​ ​be​ ​written​ ​to​ ​or​ ​read 
from​ ​a​ ​node.​ ​ ​Therefore,​ ​the​ ​rule​ ​normally​ ​follows​ ​that​ ​with​ ​more​ ​spindles​ ​network​ ​speed​ ​requirements 
increase. 
 
Generally​ ​speaking,​ ​the​ ​more​ ​spindles​ ​a​ ​node​ ​has,​ ​the​ ​lower​ ​the​ ​cost​ ​per​ ​TB.​ ​However,​ ​a​ ​larger​ ​the 
quantity​ ​of​ ​data​ ​stored​ ​on​ ​one​ ​node​ ​yields​ ​a​ ​longer​ ​re-replication​ ​time​ ​if​ ​that​ ​node​ ​goes​ ​down.​ ​ ​Hadoop 
clusters​ ​are​ ​designed​ ​to​ ​have​ ​many​ ​nodes.​ ​ ​It​ ​is​ ​generally​ ​better​ ​to​ ​have​ ​more​ ​average​ ​nodes​ ​than​ ​fewer 
super​ ​nodes.​ ​ ​This​ ​has​ ​a​ ​lot​ ​to​ ​do​ ​with​ ​both​ ​data​ ​protection,​ ​as​ ​well​ ​as​ ​increased​ ​parallelism​ ​for 
distributed​ ​computation​ ​engines​ ​such​ ​as​ ​MapReduce​ ​and​ ​Spark. 
 
Lastly,​ ​the​ ​number​ ​of​ ​drives​ ​per​ ​node​ ​will​ ​impact​ ​the​ ​number​ ​of​ ​YARN​ ​containers​ ​configured​ ​for​ ​a​ ​node. 
YARN​ ​configuration​ ​and​ ​performance​ ​tuning​​ ​is​ ​a​ ​complicated​ ​topic,​ ​but​ ​for​ ​I/O​ ​bound​ ​applications,​ ​the 
number​ ​of​ ​physical​ ​drives​ ​per​ ​host​ ​may​ ​be​ ​a​ ​limiting​ ​factor​ ​in​ ​determining​ ​the​ ​number​ ​of​ ​container​ ​slots 
configured​ ​per​ ​node. 
 
Kafka​ ​clusters​ ​are​ ​often​ ​run​ ​on​ ​dedicated​ ​servers​ ​that​ ​do​ ​not​ ​run​ ​HDFS​ ​data​ ​nodes​ ​or​ ​processing 
components​ ​such​ ​as​ ​YARN​ ​and​ ​Impala.​ ​ ​Because​ ​Kafka​ ​is​ ​a​ ​message-based​ ​system,​ ​fast​ ​storage​ ​and 
network​ ​I/O​ ​is​ ​critical​ ​to​ ​performance.​ ​ ​Although​ ​Kafka​ ​does​ ​persist​ ​messages​ ​to​ ​disk,​ ​it​ ​is​ ​not​ ​generally 
necessary​ ​to​ ​store​ ​the​ ​entire​ ​contents​ ​of​ ​a​ ​Kafka​ ​topic​ ​log​ ​on​ ​the​ ​Kafka​ ​cluster​ ​indefinitely.​ ​ ​Kafka​ ​brokers 
should​ ​be​ ​configured​ ​at​ ​a​ ​minimum​ ​with​ ​dedicated​ ​spinning​ ​hard​ ​drives​ ​for​ ​the​ ​log​ ​data​ ​directories​ ​and 
can​ ​benefit​ ​from​ ​SSDs. 
 
Kafka​ ​drives​ ​should​ ​also​ ​be​ ​configured​ ​as​ ​RAID​ ​10​ ​because​ ​the​ ​loss​ ​of​ ​a​ ​single​ ​drive​ ​on​ ​a​ ​Kafka​ ​broker 
will​ ​cause​ ​the​ ​broker​ ​to​ ​experience​ ​an​ ​outage. 

Disk​ ​Layout 
For​ ​Master​ ​nodes,​ ​the​ ​following​ ​layout​ ​is​ ​recommended 
● 2​ ​x​ ​Disks​ ​(capacity​ ​at​ ​least​ ​500GB)​ ​in​ ​RAID​ ​1​ ​(software​ ​or​ ​hardware)​ ​for​ ​OS​ ​and​ ​logs 
● 4​ ​x​ ​Disks​ ​(>=​ ​1TB​ ​each)​ ​in​ ​RAID​ ​10​ ​for​ ​Database​ ​data​ ​(see​ ​Note) 
● 2​ ​x​ ​Disks​ ​(capacity​ ​at​ ​least​ ​1​ ​TB)​ ​in​ ​RAID​ ​1​ ​(software​ ​or​ ​hardware)​ ​for​ ​NameNode​ ​metadata 
● 1​ ​x​ ​Disk​ ​JBOD/RAID​ ​0​ ​for​ ​ZooKeeper​ ​(>=​ ​1TB)​ ​(see​ ​Note) 
○ ZooKeeper​ ​disks​ ​must​ ​be​ ​HDD,​ ​not​ ​SSD 
● 1​ ​x​ ​Disk​ ​JBOD/RAID​ ​0​ ​for​ ​Quorum​ ​JournalNode​ ​(>=​ ​1TB) 
 
Note: 
Ideally​ ​databases​ ​should​ ​be​ ​run​ ​on​ ​an​ ​external​ ​host​ ​rather​ ​than​ ​running​ ​on​ ​the​ ​master​ ​node(s). 
 
Note: 
If​ ​customer​ ​has​ ​experienced​ ​fsync​ ​delays​ ​and​ ​other​ ​I/O​ ​related​ ​issues​ ​with​ ​ZooKeeper,​ ​ZooKeeper’s 
dataDir​​ ​and​ ​dataLogDir​​ ​can​ ​be​ ​configured​ ​to​ ​use​ ​separate​ ​disks.​ ​It’s​ ​hard​ ​to​ ​determine​ ​ahead​ ​of 
time​ ​whether​ ​this​ ​will​ ​be​ ​necessary;​ ​even​ ​a​ ​small​ ​cluster​ ​can​ ​result​ ​in​ ​heavy​ ​ZooKeeper​ ​activity. 
 
For​ ​Worker​ ​nodes,​ ​the​ ​following​ ​layout​ ​is​ ​recommended: 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​15


 

● 2x​ ​Disks​ ​(capacity​ ​at​ ​least​ ​500GB)​ ​in​ ​RAID​ ​1​ ​(software​ ​or​ ​hardware)​ ​for​ ​OS​ ​and​ ​logs 
● 15-24​ ​SATA​ ​Disks​ ​JBOD​ ​mode​ ​(or​ ​as​ ​multiple​ ​single-drive​ ​RAID​ ​0​ ​arrays​ ​if​ ​using​ ​a​ ​RAID​ ​controller 
incapable​ ​of​ ​doing​ ​JBOD​ ​passthrough)​ ​no​ ​larger​ ​than​ ​4​ ​TB​ ​in​ ​capacity.​ ​If​ ​the​ ​RAID​ ​Controller​ ​has 
cache,​ ​use​ ​it​ ​for​ ​write​ ​caching​ ​(preferably​ ​with​ ​battery​ ​backup);​ ​disable​ ​read​ ​caching.​ ​Follow​ ​your 
hardware​ ​vendor’s​ ​best​ ​practices​ ​where​ ​available. 
● For​ ​higher​ ​performance​ ​profile,​ ​use​ ​10K​ ​RPM​ ​SATA​ ​or​ ​faster​ ​SAS​ ​drives;​ ​these​ ​often​ ​have​ ​lower 
capacity​ ​but​ ​capacity​ ​considerations​ ​can​ ​be​ ​offset​ ​by​ ​adding​ ​more​ ​data​ ​nodes. 
 
SAS​ ​drives​ ​are​ ​supported​ ​but​ ​typically​ ​do​ ​not​ ​provide​ ​significant​ ​enough​ ​performance​ ​or​ ​reliability 
benefits​ ​to​ ​justify​ ​the​ ​additional​ ​costs.​ ​Hadoop​ ​is​ ​designed​ ​to​ ​be​ ​fault-tolerant​ ​and​ ​therefore​ ​drive​ ​failure 
can​ ​easily​ ​be​ ​tolerated.​ ​In​ ​order​ ​to​ ​achieve​ ​a​ ​good​ ​price-point,​ ​SATA​ ​drives​ ​should​ ​typically​ ​be​ ​used. 
 
RAID​ ​controllers​ ​should​ ​be​ ​configured​ ​to​ ​disable​ ​any​ ​optimization​ ​settings​ ​for​ ​the​ ​RAID​ ​0​ ​arrays. 

Data​ ​Density​ ​Per​ ​Drive 


Hard​ ​drives​ ​today​ ​come​ ​in​ ​many​ ​sizes.​ ​ ​Popular​ ​drive​ ​sizes​ ​are​ ​1-4​ ​TB​ ​although​ ​larger​ ​drives​ ​are 
becoming​ ​more​ ​common.​ ​ ​When​ ​picking​ ​a​ ​drive​ ​size​ ​the​ ​following​ ​points​ ​need​ ​to​ ​be​ ​considered. 
 
● Lower​ ​Cost​ ​Per​ ​TB​​ ​–​ ​Generally​ ​speaking,​ ​the​ ​larger​ ​the​ ​drive,​ ​the​ ​cheaper​ ​the​ ​cost​ ​per​ ​TB,​ ​which 
makes​ ​for​ ​lower​ ​TCO. 
● Replication​ ​Storms​​ ​–​ ​Larger​ ​drives​ ​means​ ​drive​ ​failures​ ​will​ ​produce​ ​larger​ ​re-replication​ ​storms, 
which​ ​can​ ​take​ ​longer​ ​and​ ​saturate​ ​the​ ​network​ ​while​ ​impacting​ ​in-flight​ ​workloads. 
● Cluster​ ​Performance​​ ​–​ ​In​ ​general,​ ​drive​ ​size​ ​has​ ​little​ ​impact​ ​on​ ​cluster​ ​performance.​ ​ ​The 
exception​ ​is​ ​when​ ​drives​ ​have​ ​different​ ​read/write​ ​speeds​ ​and​ ​a​ ​use​ ​case​ ​that​ ​leverages​ ​this 
gain.​ ​ ​MapReduce​ ​is​ ​designed​ ​for​ ​long​ ​sequential​ ​reads​ ​and​ ​writes,​ ​so​ ​latency​ ​timings​ ​are 
generally​ ​not​ ​as​ ​important.​ ​ ​HBase​ ​can​ ​potentially​ ​benefit​ ​from​ ​faster​ ​drives,​ ​but​ ​that​ ​is 
dependent​ ​on​ ​a​ ​variety​ ​of​ ​factors,​ ​such​ ​as​ ​HBase​ ​access​ ​patterns​ ​and​ ​schema​ ​design;​ ​this​ ​also 
implies​ ​acquisition​ ​of​ ​more​ ​nodes.​ ​ ​Impala​ ​and​ ​Cloudera​ ​Search​ ​workloads​ ​can​ ​also​ ​potentially 
benefit​ ​from​ ​faster​ ​drives,​ ​but​ ​for​ ​those​ ​applications​ ​the​ ​ideal​ ​architecture​ ​is​ ​to​ ​maintain​ ​as​ ​much 
data​ ​in​ ​memory​ ​as​ ​possible. 
 
Cloudera​ ​does​ ​not​ ​support​ ​exceeding​ ​100​ ​TB​ ​per​ ​data​ ​node.​ ​You​ ​could​ ​use​ ​12​ ​x​ ​8​ ​TB​ ​spindles​ ​or​ ​24​ ​x​ ​4 
TB​ ​spindles.​ ​Cloudera​ ​does​ ​not​ ​support​ ​drives​ ​larger​ ​than​ ​8​ ​TB.3 

Number​ ​of​ ​Cores​ ​and​ ​Multithreading  


Other​ ​than​ ​cost​ ​there​ ​is​ ​no​ ​negative​ ​for​ ​buying​ ​more​ ​and​ ​better​ ​CPUs,​ ​however​ ​the​ ​ROI​ ​on​ ​additional​ ​CPU 
power​ ​must​ ​be​ ​evaluated​ ​carefully.​ ​ ​Here​ ​are​ ​some​ ​points​ ​to​ ​consider: 
 
● Cluster​ ​Bottleneck​​ ​–​ ​In​ ​general,​ ​CPU​ ​resources​ ​(and​ ​lack​ ​thereof)​ ​do​ ​not​ ​bottleneck​ ​MapReduce 
and​ ​HBase.​ ​ ​The​ ​bottleneck​ ​will​ ​almost​ ​always​ ​be​ ​drive​ ​and/or​ ​network​ ​performance.​ ​ ​There​ ​are 
certainly​ ​exceptions​ ​to​ ​this,​ ​such​ ​as​ ​inefficient​ ​Hive​ ​queries.​ ​Other​ ​compute​ ​frameworks​ ​like 
Impala,​ ​Spark,​ ​and​ ​Cloudera​ ​Search​ ​may​ ​be​ ​CPU-bound​ ​depending​ ​on​ ​the​ ​workload. 

3
​ ​Larger​ ​disks​ ​offer​ ​increased​ ​capacity​ ​but​ ​not​ ​increased​ ​I/O.​ ​Clusters​ ​with​ ​larger​ ​disks​ ​can​ ​easily​ ​result​ ​in 
capacities​ ​exceeding​ ​100​ ​TB​ ​per-worker,​ ​contributing​ ​to​ ​replication​ ​storms​ ​mentioned​ ​above.​ ​Clusters 
with​ ​larger​ ​disks​ ​that​ ​observe​ ​the​ ​100​ ​TB​ ​limit​ ​end​ ​up​ ​having​ ​fewer​ ​spindles​ ​which​ ​reduces​ ​HDFS 
throughput. 
Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​16
 

● Additional​ ​Cores/Threads​​ ​–​ ​Within​ ​a​ ​given​ ​MapReduce​ ​job,​ ​a​ ​single​ ​task​ ​will​ ​typically​ ​use​ ​one 
thread​ ​at​ ​a​ ​time.​ ​ ​As​ ​outlined​ ​earlier,​ ​the​ ​number​ ​of​ ​slots​ ​allocated​ ​per​ ​node​ ​may​ ​be​ ​a​ ​function​ ​of 
the​ ​number​ ​of​ ​drives​ ​in​ ​the​ ​node.​ ​ ​As​ ​long​ ​as​ ​there​ ​is​ ​not​ ​a​ ​huge​ ​disparity​ ​in​ ​the​ ​number​ ​of​ ​cores 
(threads)​ ​and​ ​the​ ​number​ ​of​ ​drives,​ ​it​ ​does​ ​not​ ​make​ ​sense​ ​to​ ​pay​ ​for​ ​additional​ ​cores.​ ​ ​In 
addition,​ ​a​ ​MapReduce​ ​task​ ​is​ ​going​ ​to​ ​be​ ​I/O​ ​bound​ ​for​ ​typical​ ​jobs,​ ​thus​ ​a​ ​given​ ​thread​ ​used​ ​by 
the​ ​task​ ​will​ ​have​ ​a​ ​large​ ​amount​ ​of​ ​idle​ ​time​ ​while​ ​waiting​ ​for​ ​I/O​ ​response. 
● Clock​ ​Speed​​ ​–​ ​Because​ ​Cloudera​ ​clusters​ ​often​ ​begin​ ​with​ ​a​ ​small​ ​number​ ​of​ ​use​ ​cases​ ​and 
associated​ ​workloads​ ​and​ ​grow​ ​over​ ​time,​ ​it​ ​makes​ ​sense​ ​to​ ​purchase​ ​the​ ​fastest​ ​CPUs 
available.​ ​ ​Actual​ ​CPU​ ​usage​ ​is​ ​use​ ​case​ ​and​ ​workload​ ​dependent;​ ​for​ ​instance,​ ​computationally 
intensive​ ​Spark​ ​jobs​ ​would​ ​benefit​ ​more​ ​from​ ​faster​ ​CPUs​ ​than​ ​I/O​ ​bound​ ​MapReduce 
applications. 
 
Important: 
Allocate​ ​two​ ​vCPUs​ ​for​ ​the​ ​operating​ ​system​ ​and​ ​other​ ​non-Hadoop​ ​use​ ​(although​ ​this​ ​amount​ ​may 
need​ ​to​ ​be​ ​higher​ ​if​ ​additional​ ​non-Hadoop​ ​applications​ ​are​ ​running​ ​on​ ​the​ ​cluster​ ​nodes,​ ​such​ ​as 
third-party​ ​active​ ​monitoring/alerting​ ​tools).​ ​The​ ​more​ ​services​ ​you​ ​are​ ​running,​ ​the​ ​more​ ​vCPUs​ ​will​ ​be 
required;​ ​you​ ​will​ ​need​ ​to​ ​use​ ​more​ ​capable​ ​hosts​ ​to​ ​accommodate​ ​these​ ​needs.. 
 
For​ ​worker​ ​nodes,​ ​a​ ​mid-range​ ​12-14​ ​core​ ​CPU​ ​running​ ​at​ ​2.4-2.5​ ​GHz​ ​would​ ​typically​ ​provide​ ​a​ ​good 
cost/performance​ ​tradeoff.​ ​For​ ​master​ ​nodes,​ ​a​ ​mid-range​ ​8​ ​core​ ​CPU​ ​with​ ​a​ ​slightly​ ​faster​ ​clock​ ​speed 
(e.g.​ ​2.6​ ​GHz)​ ​would​ ​suffice.​ ​Where​ ​available,​ ​Simultaneous​ ​Multi-Threading​ ​implementations​ ​should​ ​be 
enabled​ ​(for​ ​example​ ​Intel’s​ ​HyperThreading).​ ​BIOS​ ​settings​ ​for​ ​CPU​ ​and​ ​memory​ ​should​ ​be​ ​set​ ​to 
Maximum​ ​Performance​ ​mode​ ​or​ ​equivalent. 
 
Refer​ ​to​ ​the​ H
​ ardware​ ​Requirements​ ​Guide​​ ​for​ ​detailed​ ​workload-specific​ ​practices. 

RAM 
More​ ​memory​ ​is​ ​always​ ​good​ ​and​ ​it​ ​is​ ​recommended​ ​to​ ​purchase​ ​as​ ​much​ ​as​ ​the​ ​budget​ ​allows. 
Applications​ ​such​ ​as​ ​Impala​ ​and​ ​Cloudera​ ​Search​ ​are​ ​often​ ​configured​ ​to​ ​use​ ​large​ ​amounts​ ​of​ ​heap,​ ​and 
a​ ​mixed​ ​workload​ ​cluster​ ​supporting​ ​both​ ​services​ ​should​ ​have​ ​sufficient​ ​RAM​ ​to​ ​allow​ ​all​ ​required 
services. 
 
Refer​ ​to​ ​the​ H
​ ardware​ ​Requirements​ ​Guide​​ ​for​ ​detailed​ ​workload-specific​ ​practices. 
 
Important: 
Allocate​ ​at​ ​least​ ​4​ ​GB​ ​memory​ ​for​ ​the​ ​operating​ ​system​ ​and​ ​other​ ​non-Hadoop​ ​use​ ​(although​ ​this 
amount​ ​may​ ​need​ ​to​ ​be​ ​higher​ ​if​ ​additional​ ​non-Hadoop​ ​applications​ ​are​ ​running​ ​on​ ​the​ ​cluster​ ​nodes, 
such​ ​as​ ​third-party​ ​active​ ​monitoring/alerting​ ​tools).​ ​The​ ​more​ ​services​ ​you​ ​are​ ​running,​ ​the​ ​more 
memory​ ​will​ ​be​ ​required;​ ​you​ ​will​ ​need​ ​to​ ​use​ ​more​ ​capable​ ​hosts​ ​to​ ​accommodate​ ​these​ ​needs. 
 
It​ ​is​ ​critical​ ​to​ ​performance​ ​that​ ​the​ ​total​ ​memory​ ​allocated​ ​to​ ​all​ ​Hadoop-related​ ​processes​ ​(including 
processes​ ​such​ ​as​ ​HBase)​ ​is​ ​less​ ​than​ ​the​ ​total​ ​memory​ ​on​ ​the​ ​node,​ ​taking​ ​into​ ​account​ ​the​ ​operating 
system​ ​and​ ​non-Hadoop​ ​processes.​ ​Oversubscribing​ ​the​ ​memory​ ​on​ ​a​ ​system​ ​can​ ​lead​ ​to​ ​the​ ​Linux 
kernel’s​ ​out-of-memory​ ​process​ ​killer​ ​being​ ​invoked​ ​and​ ​important​ ​processes​ ​being​ ​terminated.​ ​It​ ​can 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​17


 

also​ ​be​ ​harmful​ ​to​ ​performance​ ​to​ ​unnecessarily​ ​over-allocate​ ​memory​ ​to​ ​a​ ​Hadoop​ ​process​ ​as​ ​this​ ​can 
lead​ ​to​ ​long​ ​Java​ ​garbage​ ​collection​ ​pauses. 
 
For​ ​optimum​ ​performance,​ ​one​ ​should​ ​aim​ ​to​ ​populate​ ​all​ ​of​ ​the​ ​memory​ ​channels​ ​available​ ​on​ ​the​ ​given 
CPUs.​ ​This​ ​may​ ​mean​ ​a​ ​greater​ ​number​ ​of​ ​smaller​ ​DIMMS,​ ​but​ ​this​ ​means​ ​that​ ​both​ ​memory​ ​and​ ​CPU​ ​are 
operating​ ​at​ ​their​ ​best​ ​performance.​ ​Confer​ ​with​ ​your​ ​hardware​ ​vendor​ ​for​ ​defining​ ​optimal​ ​memory 
configuration​ ​layout. 
 
Whilst​ ​128​ ​GB​ ​RAM​ ​can​ ​be​ ​accommodated,​ ​this​ ​typically​ ​constrains​ ​the​ ​amount​ ​of​ ​memory​ ​allocated​ ​to 
services​ ​such​ ​as​ ​YARN​ ​and​ ​Impala,​ ​therefore​ ​reducing​ ​the​ ​query​ ​capacity​ ​of​ ​the​ ​cluster.​ ​A​ ​value​ ​of​ ​256 
GB​ ​would​ ​typically​ ​be​ ​recommended​ ​with​ ​higher​ ​values​ ​also​ ​possible. 

Power​ ​Supplies 
Hadoop​ ​software​ ​is​ ​designed​ ​around​ ​the​ ​expectation​ ​that​ ​nodes​ ​will​ ​fail.​ ​ ​Redundant​ ​hot-swap​ ​power 
supplies​ ​are​ ​not​ ​necessary​ ​for​ ​worker​ ​nodes,​ ​but​ ​should​ ​be​ ​used​ ​for​ ​master,​ ​utility,​ ​and​ ​edge​ ​nodes. 

   

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​18


 

Operating​ ​System​ ​Best​ ​Practices 


Cloudera​ ​currently​ ​supports​ ​running​ ​the​ ​EDH​ ​platform​ ​on​ ​several​ ​Linux​ ​distributions.​ ​ ​To​ ​receive​ ​support 
from​ ​Cloudera,​ ​a​ ​supported​ ​version​ ​of​ ​the​ ​operating​ ​system​ ​must​ ​be​ ​in​ ​use.​ ​The​ ​Requirements​ ​and 
Supported​ ​Versions​​ ​guide​ ​lists​ ​the​ ​supported​ ​operating​ ​systems​ ​for​ ​each​ ​version​ ​of​ ​Cloudera​ ​Manager 
and​ ​CDH. 

Hostname​ ​Naming​ ​Convention 


Cloudera​ ​recommends​ ​using​ ​a​ ​hostname​ ​convention​ ​that​ ​allows​ ​for​ ​easy​ ​recognition​ ​of​ ​roles​ ​and/or 
physical​ ​connectivity.​ ​ ​This​ ​is​ ​especially​ ​important​ ​for​ ​easily​ ​configuring​ ​rack​ ​awareness​ ​within​ ​Cloudera 
Manager.​ ​ ​Using​ ​a​ ​project​ ​name​ ​identifier,​ ​followed​ ​by​ ​the​ ​rack​ ​ID,​ ​the​ ​machine​ ​class,​ ​and​ ​a​ ​machine​ ​ID​ ​is 
an​ ​easy​ ​way​ ​to​ ​encode​ ​useful​ ​information​ ​about​ ​the​ ​cluster.​ ​ ​For​ ​example: 

acme-test-r01m01

This​ ​hostname​ ​would​ ​represent​ ​the​ ​ACME​ ​customer’s​ ​test​ ​project,​ ​rack​ ​#1,​ ​master​ ​node​ ​#1. 

Hostname​ ​Resolution 
Cloudera​ ​recommends​ ​using​ ​DNS​ ​for​ ​hostname​ ​resolution.​ ​ ​The​ ​usage​ ​of​ ​/etc/hosts​​ ​becomes 
cumbersome​ ​quickly,​ ​and​ ​routinely​ ​is​ ​the​ ​source​ ​of​ ​hard​ ​to​ ​diagnose​ ​problems.​ ​ ​/etc/hosts​​ ​should​ ​only 
contain​ ​an​ ​entry​ ​for​ ​127.0.0.1,​ ​and​ ​localhost​​ ​should​ ​be​ ​the​ ​only​ ​name​ ​that​ ​resolves​ ​to​ ​it.​ ​ ​The​ ​machine 
name​ ​must​ ​not​ ​resolve​ ​to​ ​the​ ​127.0.0.1​ ​address.​ ​ ​All​ ​hosts​ ​in​ ​the​ ​cluster​ ​must​ ​have​ ​forward​ ​and​ ​reverse 
lookups​ ​be​ ​the​ ​inverse​ ​of​ ​each​ ​other​ ​for​ ​Hadoop​ ​to​ ​function​ ​properly.​ ​ ​An​ ​easy​ ​test​ ​to​ ​perform​ ​on​ ​the 
hosts​ ​to​ ​ensure​ ​proper​ ​DNS​ ​resolution​ ​is​ ​to​ ​execute: 

​ hostname>
dig​ <
dig​ –​ x​ ​<ip_address_returned_from_hostname_lookup)
 
For​ ​example: 

dig​ ​themis.apache.org
themis.apache.org. 1758 IN A 140.211.11.105

dig​ ​-x​ ​140.211.11.105


105.11.211.140.in-addr.arpa.​ ​3513​ ​IN PTR themis.apache.org.
 
This​ ​is​ ​the​ ​behavior​ ​we​ ​should​ ​see​ ​for​ ​every​ ​host​ ​in​ ​the​ ​cluster. 

Functional​ ​Accounts 
Cloudera​ ​Manager​ ​and​ ​CDH​ ​make​ ​use​ ​of​ ​dedicated​ ​functional​ ​accounts​ ​for​ ​the​ ​associated​ ​daemon 
processes.​ ​ ​By​ ​default​ ​these​ ​accounts​ ​are​ ​created​ ​as​ ​local​ ​accounts​ ​on​ ​every​ ​machine​ ​in​ ​the​ ​cluster​ ​that 
needs​ ​them​ ​if​ ​they​ ​do​ ​not​ ​already​ ​exist​ ​(locally​ ​or​ ​from​ ​a​ ​directory​ ​service,​ ​such​ ​as​ ​LDAP).​ ​ ​The 
Requirements​ ​and​ ​Supported​ ​Versions​​ ​guide​ ​includes​ ​a​ ​table​ ​showing​ ​the​ ​UNIX​ ​user​ ​and​ ​group 
associated​ ​with​ ​each​ ​service. 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​19


 

As​ ​of​ ​Cloudera​ ​Manager​ ​5.3,​ ​it​ ​is​ ​also​ ​possible​ ​to​ ​install​ ​the​ ​cluster​ ​in​ ​single​ ​user​ ​mode​ ​where​ ​all​ ​services 
share​ ​a​ ​single​ ​service​ ​account.​ ​ ​This​ ​feature​ ​is​ ​provided​ ​for​ ​customers​ ​who​ ​have​ ​policy​ ​requirements​ ​that 
prevent​ ​the​ ​use​ ​of​ ​multiple​ ​service​ ​accounts.​ ​ ​Cloudera​ ​does​ ​not​ ​recommend​ ​the​ ​use​ ​of​ ​this​ ​feature 
unless​ ​the​ ​customer​ ​has​ ​this​ ​requirement,​ ​as​ ​CDH​ ​uses​ ​separate​ ​accounts​ ​to​ ​achieve​ ​proper​ ​security 
isolation​ ​and​ ​therefore​ ​removing​ ​this​ ​feature​ ​will​ ​reduce​ ​the​ ​overall​ ​security​ ​of​ ​the​ ​installation.​ ​ ​Additional 
information​ ​about​ ​single​ ​user​ ​mode​ ​can​ ​be​ ​found​ ​in​ ​the​ ​Cloudera​ ​Installation​ ​and​ ​Upgrade​ ​manual: 
Configuring​ ​Single​ ​User​ ​Mode​.

Time 
All​ ​machines​ ​in​ ​the​ ​cluster​ ​need​ ​to​ ​have​ ​the​ ​same​ ​time​ ​and​ ​date​ ​settings,​ ​including​ ​time​ ​zones.​ ​ ​Use​ ​of 
the​ ​Network​ ​Time​ ​Protocol​ ​(NTP)​ ​is​ ​highly​ ​recommended.​ ​ ​Many​ ​cluster​ ​services​ ​are​ ​sensitive​ ​to​ ​time 
(e.g.​ ​HBase,​ ​Kudu,​ ​ZooKeeper)​ ​and​ ​troubleshooting​ ​will​ ​be​ ​greatly​ ​eased​ ​if​ ​time​ ​is​ ​consistent​ ​across​ ​all 
hosts.​ ​ ​Doing​ ​the​ ​following​ ​will​ ​enable​ ​the​ ​NTP​ ​daemon: 

(RHEL/CentOS​ ​6)
service​ ​ntpd​ ​start
chkconfig​ ​ntpd​ ​on
 
(RHEL/CentOS​ ​7) 
​ tart​ ​ntpd.service
systemctl​ s
systemctl​ e​ nable​ ​ntpd.service 
 
 
 
Note: 
Chrony​​ ​may​ ​be​ ​preferred​ ​on​ ​newer​ ​operating​ ​systems. 

Name​ ​Service​ ​Caching 


It​ ​is​ ​recommended​ ​that​ ​name​ ​service​ ​caching​ ​be​ ​enabled,​ ​particularly​ ​for​ ​clusters​ ​that​ ​use​ ​non-local 
Hadoop​ ​functional​ ​accounts,​ ​such​ ​as​ ​the​ ​hdfs​​ ​and​ ​yarn​​ ​users.​ ​ ​This​ ​becomes​ ​critical​ ​in​ ​the​ ​case​ ​where 
the​ ​latter​ ​is​ ​combined​ ​with​ ​using​ ​Kerberos.​ ​ ​Many​ ​difficult-to-diagnose​ ​problems​ ​can​ ​arise​ ​when​ ​name 
service​ ​lookups​ ​time​ ​out​ ​or​ ​fail​ ​during​ ​heavy​ ​cluster​ ​utilization.​ ​ ​Doing​ ​the​ ​following​ ​will​ ​enable​ ​the​ ​Name 
Service​ ​Cache​ ​Daemon​ ​(nscd): 

(RHEL/CentOS​ ​6)
service​ ​nscd​ ​start
chkconfig​ ​nscd​ ​on

(RHEL/CentOS​ ​7) 
​ top​ ​nscd.service
systemctl​ s
systemctl​ d​ isable​ ​nscd.service 
 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​20


 

If​ ​you​ ​are​ ​running​ ​Red​ ​Hat​ ​SSSD​ ​you​ ​will​ ​need​ ​to​ ​modify​ ​the​ ​nscd​ ​configuration​​ ​to​ ​not​ ​cache​ ​passwd, 
group,​ ​or​ ​netgroup​ ​information. 

SELinux 
Cloudera​ ​Enterprise​ ​(without​ ​Cloudera​ ​Navigator)​ ​is​ ​supported​ ​on​ ​platforms​ ​with​ ​Security-Enhanced​ ​Linux 
(SELinux)​ ​enabled,​ ​however​ ​we​ ​recommend​ ​SELinux​ ​be​ ​disabled​ ​on​ ​all​ ​machines​ ​in​ ​the​ ​Hadoop​ ​cluster 
until​ ​you​ ​get​ ​your​ ​cluster​ ​up​ ​and​ ​running.  
 
The​ ​Linux​ ​command​ g ​ etenforce​​ ​returns​ ​the​ ​status​ ​of​ ​SELinux. 

SELinux​ ​can​ ​be​ ​disabled​ ​on​ ​RHEL/CentOS​ ​by​ ​editing​ / ​ etc/sysconfig/selinux​​ ​(RHEL/CentOS​ ​6)​ ​Or 
/etc/selinux/config​​ ​(RHEL/CentOS​ ​7)​ ​and​ ​setting​ ​SELINUX=disabled​.​ ​ ​This​ ​change​ ​must​ ​be​ ​done 
as​ ​root​ ​(or​ ​with​ ​proper​ ​sudo​ ​access),​ ​and​ ​requires​ ​a​ ​reboot. 

IPv6 
Hadoop​ ​does​ ​not​ ​support​ ​IPv6.​ ​ ​IPv6​ ​configurations​ ​should​ ​be​ ​removed,​ ​and​ ​IPv6-related​ ​services​ ​should 
be​ ​stopped. 

iptables 
Cloudera​ ​recommends​ ​disabling​ ​host​ ​based​ ​firewalls​ ​on​ ​the​ ​cluster,​ ​at​ ​least​ ​until​ ​you​ ​get​ ​your​ ​cluster​ ​up 
and​ ​running.​ ​ ​Many​ ​problems​ ​that​ ​are​ ​difficult​ ​to​ ​diagnose​ ​result​ ​from​ ​incorrect/conflicting​ ​iptables 
entries​ ​that​ ​interfere​ ​with​ ​normal​ ​cluster​ ​communication.​ ​ ​Doing​ ​the​ ​following​ ​will​ ​disable​ ​iptables​ ​for 
both​ ​IPv4​ ​and​ ​IPv6: 

(RHEL/CentOS​ ​6) 
service​ ​iptables​ ​stop
service​ ​ip6tables​ ​stop
chkconfig​ ​iptables​ ​off
chkconfig​ ​ip6tables​ ​off

(RHEL/CentOS​ ​7) 
​ top​ ​firewalld.service
systemctl​ s
systemctl​ d​ isable​ ​firewalld.service

For​ ​those​ ​who​ ​must​ ​restrict​ ​access​ ​using​ ​host-based​ ​firewalls,​ ​refer​ ​to​ ​the​ ​list​ ​of​ ​ports​​ ​used​ ​by​ ​Cloudera 
Manager,​ ​Cloudera​ ​Navigator,​ ​and​ ​CDH​ ​5. 

Startup​ ​Services 
As​ ​with​ ​any​ ​production​ ​server,​ ​unused​ ​services​ ​should​ ​be​ ​removed​ ​and/or​ ​disabled.​ ​ ​Some​ ​example 
services​ ​that​ ​are​ ​on​ ​by​ ​default​ ​that​ ​are​ ​not​ ​needed​ ​by​ ​CDH​ ​are: 
 
● bluetooth 
● cups 
● iptables 
● ip6tables 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​21


 

● postfix4 
 
This​ ​list​ ​is​ ​by​ ​no​ ​means​ ​exhaustive.​ ​ ​To​ ​view​ ​the​ ​list​ ​of​ ​services​ ​that​ ​are​ ​configured​ ​to​ ​start​ ​during​ ​system 
startup,​ ​execute​ ​the​ ​following​ ​command: 
 
(RHEL/CentOS​ ​6) 
chkconfig​ ​–list​ ​|​ ​grep​ ​on

(RHEL/CentOS​ ​7)
systemctl​ ​list-unit-files​ ​--type​ ​service​ ​|​ ​grep​ ​active

Process​ ​Memory 
The​ ​memory​ ​on​ ​each​ ​node​ ​is​ ​allocated​ ​out​ ​to​ ​the​ ​various​ ​Hadoop​ ​processes.​ ​This​ ​predictability​ ​reduces 
the​ ​chance​ ​of​ ​Hadoop​ ​processes​ ​inadvertently​ ​running​ ​out​ ​of​ ​memory​ ​and​ ​so​ ​paging​ ​to​ ​disk,​ ​which​ ​in 
turn​ ​leads​ ​to​ ​severe​ ​degradation​ ​in​ ​performance.​ ​ ​See​ ​the​ ​section​ ​on​ ​Kernel​ ​and​ ​OS​ ​Tuning​ ​for​ ​further 
information. 

A​ ​minimum​ ​of​ ​4​ ​GB​ ​of​ ​memory​ ​should​ ​be​ ​reserved​ ​on​ ​all​ ​nodes​ ​for​ ​operating​ ​system​ ​and​ ​other 
non-Hadoop​ ​use.​ ​ ​This​ ​amount​ ​may​ ​need​ ​to​ ​be​ ​higher​ ​if​ ​additional​ ​non-Hadoop​ ​applications​ ​are​ ​running 
on​ ​the​ ​cluster​ ​nodes,​ ​such​ ​as​ ​third​ ​party​ ​active​ ​monitoring/alerting​ ​tools. 

Memory​ ​requirements​ ​and​ ​allocation​ ​for​ ​Hadoop​ ​components​ ​are​ ​discussed​ ​in​ ​further​ ​detail​ ​in​ ​other 
sections​ ​of​ ​this​ ​document. 

Kernel​ ​and​ ​OS​ ​Tuning 


The​ ​Cloudera​ ​EDH​ ​platform​ ​depends​ ​on​ ​a​ ​properly​ ​tuned​ ​underlying​ ​host​ ​operating​ ​system​ ​for​ ​optimal 
performance.​ ​ ​Cloudera​ ​strongly​ ​suggests​ ​setting​ ​the​ ​vm.swappiness​ ​and​ ​transparent​ ​hugepage 
compaction​ ​kernel​ ​parameters.​ ​ ​The​ ​Cloudera​ ​Administration​ ​manual​ ​has​ ​additional​ ​background 
information​ ​and​ ​suggested​ ​settings:​ ​Optimizing​ ​Performance​ ​in​ ​CDH​. 

Entropy 
Cryptographic​ ​operations​ ​require​ e ​ ntropy​​ ​to​ ​ensure​ ​randomness.​ ​The​ ​Cloudera​ ​Security​ ​guide​ ​explains 
how​ ​to​ ​check​ ​available​ ​entropy​ ​and​ ​how​ ​to​ ​ensure​ ​sufficient​ ​entropy​ ​is​ ​available:​ ​Entropy​ ​Requirements​.  

Networking​ ​Parameters 
The​ ​following​ ​parameters​ ​are​ ​to​ ​be​ ​added​ ​to​ /
​ etc/sysctl.conf​​ ​to​ ​optimize​ ​various​ ​network​ ​behaviors. 

Disable​ ​TCP​ ​timestamps​ ​to​ ​improve​ ​CPU​ ​utilization​ ​(this​ ​is​ ​an​ ​optional​ ​parameter​ ​and​ ​will​ ​depend​ ​on​ ​your 
NIC​ ​vendor): 

net.ipv4.tcp_timestamps=0

Enable​ ​TCP​ ​sacks​ ​to​ ​improve​ ​throughput: 

4
​ ​While​ ​not​ ​needed​ ​by​ ​CDH,​ ​postfix​ ​(or​ ​other​ ​MTA)​ ​may​ ​be​ ​required​ ​by​ ​other​ ​services​ ​to​ ​deliver​ ​generated 
notices/alerts​ ​from​ ​the​ ​system. 
Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​22
 

net.ipv4.tcp_sack=1

Increase​ ​the​ ​maximum​ ​length​ ​of​ ​processor​ ​input​ ​queues: 

net.core.netdev_max_backlog=250000

Increase​ ​the​ ​TCP​ ​max​ ​and​ ​default​ ​buffer​ ​sizes​ ​using​ ​setsockopt()​: 

net.core.rmem_max=4194304
net.core.wmem_max=4194304
net.core.rmem_default=4194304
net.core_wmem_default=4194304
net.core.optmem_max=4194304

Increase​ ​memory​ ​thresholds​ ​to​ ​prevent​ ​packet​ ​dropping: 

​ 7380​ 4
net.ipv4.tcp_rmem="4096​ 8 ​ 194304"
net.ipv4.tcp_wmem="4096​ 6​ 5536​ 4​ 194304"

Enable​ ​low​ ​latency​ ​mode​ ​for​ ​TCP: 

net.ipv4.tcp_low_latency=1

Set​ ​the​ ​socket​ ​buffer​ ​to​ ​be​ ​divided​ ​evenly​ ​between​ ​TCP​ ​window​ ​size​ ​and​ ​application​ ​buffer: 

net.ipv4.tcp_adv_win_scale=1 

Filesystems 
In​ ​Linux​ ​there​ ​are​ ​several​ ​choices​ ​for​ ​formatting​ ​and​ ​organizing​ ​drives.​ ​ ​That​ ​being​ ​said,​ ​only​ ​a​ ​few 
choices​ ​are​ ​optimal​ ​for​ ​Hadoop.​ ​ ​First,​ ​in​ ​RHEL/CentOS,​ ​the​ ​Logical​ ​Volume​ ​Manager​ ​should​ ​never​ ​be 
used.​ ​ ​It​ ​is​ ​not​ ​optimal​ ​and​ ​can​ ​lead​ ​to​ ​combining​ ​multiple​ ​drives​ ​into​ ​one​ ​logical​ ​disk,​ ​which​ ​is​ ​in 
complete​ ​contrast​ ​to​ ​how​ ​Hadoop​ ​manages​ ​fault​ ​tolerance​ ​across​ ​HDFS.​ ​ ​Second,​ ​Cloudera 
recommends​ ​using​ ​an​ ​extent-based​ ​file​ ​system.​ ​ ​This​ ​includes​ e ​ xt3​,​ ​ext4​,​ ​and​ x​ fs​.​ ​ ​Most​ ​new​ ​Hadoop 
clusters​ ​use​ ​the​ e ​ xt4​​ ​filesystem​ ​by​ ​default.​ ​ ​Red​ ​Hat​ ​Enterprise​ ​Linux​ ​7​ ​uses​ ​xfs​​ ​as​ ​its​ ​default 
filesystem. 
 
Important: 
If​ ​utilizing​ ​Kudu​ ​be​ ​sure​ ​to​ ​ensure​ ​that​ ​filesystem​ ​hole​ ​punching​ ​is​ ​a​ ​capability​ ​of​ ​the​ ​filesystem.​ ​Hole 
Punching​ ​is​ ​the​ ​use​ ​of​ ​the​ f ​ allocate()​​ ​system​ ​call​ ​with​ ​the​ ​FALLOC_FL_PUNCH_HOLE​​ ​option​ ​set. 
Newer​ ​versions​ ​of​ ​ext4​ ​and​ ​xfs​ ​support​ ​Hole​ ​Punching.​ ​ext3​ ​does​ ​not​ ​support​ ​Hole​ ​Punching​ ​and 
unpatched​ ​RHEL​ ​prior​ ​to​ ​6.4​ ​does​ ​not​ ​support​ ​this​ ​facility.​ ​Older​ ​versions​ ​of​ ​ext4​ ​and​ ​xfs​ ​that​ ​do​ ​not 
support​ ​Hole​ ​Punching​ ​cause​ ​Kudu​ ​to​ ​fail​ ​to​ ​start​ ​as​ ​Kudu​ ​provides​ ​a​ ​pre-start​ ​test​ ​for​ ​this​ ​facility. 
Without​ ​Hole​ ​Punching​ ​support​ ​the​ ​block​ ​manager​ ​is​ ​unsafe​ ​to​ ​use​ ​as​ ​claimed​ ​blocks​ ​will​ ​never​ ​be 
released​ ​and​ ​ever​ ​more​ ​disk​ ​space​ ​will​ ​be​ ​consumed. 
 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​23


 

Filesystem​ ​Creation​ ​Options 


When​ ​creating​ ​ext4​ ​filesystems​ ​for​ ​use​ ​with​ ​Hadoop​ ​data​ ​volumes​,​ ​we​ ​recommend​ ​reducing​ ​the 
superuser​ ​block​ ​reservation​ ​from​ ​5%​ ​to​ ​1%​ ​for​ ​root​ ​(using​ ​the​ ​-m1​​ ​option)​ ​as​ ​well​ ​as​ ​setting​ ​the​ ​following 
options: 
● use​ ​one​ ​inode​ ​per​ ​1​ ​MB​ ​(largefile)  
● minimize​ ​the​ ​number​ ​of​ ​super​ ​block​ ​backups​ ​(sparse_super) 
● enable​ ​journaling​ ​(has_journal) 
● use​ ​b-tree​ ​indexes​ ​for​ ​directory​ ​trees​ ​(dir_index) 
● use​ ​extent-based​ ​allocations​ ​(extent) 
 
Creating​ ​such​ ​an​ ​ext4​ ​filesystem​ ​might​ ​look​ ​like​ ​this: 

mkfs​ ​–t​ ​ext4​ ​–m​ ​1​ ​–O​ ​-T​ ​largefile​ ​\


​ ​ ​sparse_super,dir_index,extent,has_journal​ ​/dev/sdb1
 
Creating​ ​an​ ​xfs​ ​filesystem​ ​might​ ​look​ ​like​ ​this: 

mkfs​ ​–t​ ​xfs​ ​/dev/sdb1


 
Note: 
When​ ​creating​ ​xfs​ ​filesystems,​ ​no​ ​special​ ​options​ ​are​ ​required. 

Disk​ ​Mount​ ​Options 


HDFS​ ​by​ ​design​ ​is​ ​a​ ​fault​ ​tolerant​ ​file​ ​system.​ ​ ​As​ ​such,​ ​all​ ​drives​ ​used​ ​by​ ​DataNode​ ​machines​ ​for​ ​data 
need​ ​to​ ​be​ ​mounted​ ​without​ ​the​ ​use​ ​of​ ​RAID.​ ​ ​Furthermore,​ ​drives​ ​should​ ​be​ ​mounted​ ​in​ ​/etc/fstab 
using​ ​the​ n ​ odiratime​).​​ ​In​ ​case​ ​of​ ​SSD​ ​or​ ​flash​ ​also​ ​turn​ ​on​ T
​ oatime​​ ​option​ ​(which​ ​also​ ​implies​ n ​ RIM​​ ​by 
specifying​ ​the​ d ​ iscard​​ ​option​ ​when​ ​mounting. 
 
In​ ​/etc/fstab​ ​ensure​ ​that​ ​the​ ​appropriate​ ​filesystems​ ​have​ ​the​ ​noatime​ ​mount​ ​option​ ​specified: 
 
/dev/sda1 / ext4​ ​ ​ ​ ​noatime 0​ ​0
 
In​ ​order​ ​to​ ​enable​ ​TRIM,​ ​edit​ ​/etc/fstab​ ​and​ ​set​ ​mount​ ​option​ ​discard​ ​as​ ​well. 
 
/dev/sdb1 /data​ ​ ​ ​ ​ ​ ​ ​ext4​ ​ ​ ​ ​noatime,discard​ ​ ​ ​ ​ ​ ​ ​0​ ​0

   

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​24


 

Disk​ ​Mount​ ​Naming​ ​Convention 


For​ ​ease​ ​of​ ​administration,​ ​it​ ​is​ ​recommended​ ​to​ ​mount​ ​all​ ​of​ ​the​ ​disks​ ​on​ ​the​ ​DataNode​ ​machines​ ​with​ ​a 
naming​ ​pattern,​ ​for​ ​example: 

/data1
/data2
/data3
/data4
/data5
/data6

 
 

 
   

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​25


 

Cluster​ ​Configuration 
This​ ​section​ ​contains​ ​information​ ​about​ ​how​ ​the​ ​cluster​ ​is​ ​configured,​ ​including​ ​Cloudera 
recommendations​ ​specific​ ​to​ ​the​ ​customer​ ​hardware​ ​being​ ​used,​ ​and​ ​some​ ​best​ ​practices​ ​and​ ​general 
recommendations​ ​for​ ​each​ ​Cloudera​ ​EDH​ ​service.​ ​ ​This​ ​section​ ​is​ ​not​ ​an​ ​exhaustive​ ​description​ ​of​ ​every 
configuration,​ ​but​ ​rather​ ​a​ ​focus​ ​on​ ​important​ ​configurations​ ​and​ ​those​ ​that​ ​have​ ​been​ ​changed​ ​from​ ​the 
default​ ​setting. 

Teragen​ ​and​ ​Terasort​ ​Performance​ ​Baseline 


The​ ​teragen​​ ​and​ ​terasort​​ ​benchmarking​ ​tools​ ​are​ ​part​ ​of​ ​the​ ​standard​ ​Apache​ ​Hadoop​ ​distribution 
and​ ​are​ ​included​ ​with​ ​the​ ​Cloudera​ ​distribution.​ ​ ​In​ ​the​ ​course​ ​of​ ​a​ ​cluster​ ​installation​ ​or​ ​certification, 
Cloudera​ ​recommends​ ​running​ ​several​ ​teragen​​ ​and​ ​terasort​​ ​jobs​ ​to​ ​obtain​ ​a​ ​performance​ ​baseline 
for​ ​the​ ​cluster.​ ​ ​The​ ​intention​ ​is​ ​not​ ​to​ ​demonstrate​ ​the​ ​maximum​ ​performance​ ​possible​ ​for​ ​the​ ​hardware 
or​ ​to​ ​compare​ ​with​ ​externally​ ​published​ ​results,​ ​as​ ​tuning​ ​the​ ​cluster​ ​for​ ​this​ ​may​ ​be​ ​at​ ​odds​ ​with​ ​actual 
customer​ ​operational​ ​workloads.​ ​ ​Rather​ ​the​ ​intention​ ​is​ ​to​ ​run​ ​a​ ​real​ ​workload​ ​through​ ​YARN​ ​to 
functionally​ ​test​ ​the​ ​cluster​ ​as​ ​well​ ​as​ ​obtain​ ​baseline​ ​numbers​ ​that​ ​can​ ​be​ ​used​ ​for​ ​future​ ​comparison, 
such​ ​as​ ​in​ ​evaluating​ ​the​ ​performance​ ​overhead​ ​of​ ​enabling​ ​encryption​ ​features​ ​or​ ​in​ ​evaluating​ ​whether 
operational​ ​workloads​ ​are​ ​performance​ ​limited​ ​by​ ​the​ ​I/O​ ​hardware.​ ​ ​Running​ ​benchmarks​ ​provides​ ​an 
indication​ ​of​ ​cluster​ ​performance​ ​and​ ​may​ ​also​ ​identify​ ​and​ ​help​ ​diagnose​ ​hardware​ ​or​ ​software 
configuration​ ​problems​ ​by​ ​isolating​ ​hardware​ ​components,​ ​such​ ​as​ ​disks​ ​and​ ​network,​ ​and​ ​subjecting 
them​ ​to​ ​a​ ​higher​ ​than​ ​normal​ ​load. 

The​ ​teragen​​ ​job​ ​will​ ​generate​ ​an​ ​arbitrary​ ​amount​ ​of​ ​data,​ ​formatted​ ​as​ ​100-byte​ ​records​ ​of​ ​random 
data,​ ​and​ ​store​ ​the​ ​result​ ​in​ ​HDFS.​ ​ ​Each​ ​record​ ​has​ ​a​ ​random​ ​key​ ​and​ ​value.​ ​ ​The​ ​terasort​​ ​job​ ​will​ ​sort 
the​ ​data​ ​generated​ ​by​ ​teragen​​ ​and​ ​write​ ​the​ ​output​ ​to​ ​HDFS. 

During​ ​the​ ​first​ ​iteration​ ​of​ ​the​ ​teragen​​ ​job,​ ​the​ ​goal​ ​is​ ​to​ ​obtain​ ​a​ ​performance​ ​baseline​ ​on​ ​the​ ​disk​ ​I/O 
subsystem.​ ​ ​The​ ​HDFS​ ​replication​ ​factor​ ​should​ ​be​ ​overridden​ ​from​ ​the​ ​default​ ​value​ ​3​ ​and​ ​set​ ​to​ ​1​ ​so 
that​ ​the​ ​data​ ​generated​ ​by​ t ​ eragen​​ ​is​ ​not​ ​replicated​ ​to​ ​additional​ ​data​ ​nodes.​ ​ ​Replicating​ ​the​ ​data​ ​over 
the​ ​network​ ​would​ ​obscure​ ​the​ ​raw​ ​disk​ ​performance​ ​with​ ​potential​ ​network​ ​bandwidth​ ​constraints. 

Once​ ​the​ ​first​ ​teragen​​ ​job​ ​has​ ​been​ ​run,​ ​a​ ​second​ ​iteration​ ​should​ ​be​ ​run​ ​with​ ​the​ ​HDFS​ ​replication 
factor​ ​set​ ​to​ ​the​ ​default​ ​value.​ ​ ​This​ ​will​ ​apply​ ​a​ ​high​ ​load​ ​to​ ​the​ ​network,​ ​and​ ​deltas​ ​between​ ​the​ ​first​ ​run 
and​ ​second​ ​run​ ​can​ ​provide​ ​an​ ​indication​ ​of​ ​network​ ​bottlenecks​ ​in​ ​the​ ​cluster. 

While​ ​the​ ​teragen​​ ​application​ ​can​ ​generate​ ​any​ ​amount​ ​of​ ​data,​ ​1​ ​TB​ ​is​ ​standard.​ ​ ​For​ ​larger​ ​clusters,​ ​it 
may​ ​be​ ​useful​ ​to​ ​also​ ​run​ ​10​ ​TB​ ​or​ ​even​ ​100​ ​TB,​ ​as​ ​the​ ​time​ ​to​ ​write​ ​1​ ​TB​ ​may​ ​be​ ​negligible​ ​compared​ ​to 
the​ ​startup​ ​overhead​ ​of​ ​the​ ​YARN​ ​job.​ ​ ​Another​ ​teragen​​ ​job​ ​should​ ​be​ ​run​ ​to​ ​generate​ ​a​ ​dataset​ ​that​ ​is​ ​3 
times​ ​the​ ​RAM​ ​size​ ​of​ ​the​ ​entire​ ​cluster.​ ​ ​This​ ​will​ ​ensure​ ​we​ ​are​ ​not​ ​seeing​ ​page​ ​cache​ ​effects​ ​and​ ​are 
truly​ ​exercising​ ​the​ ​disk​ ​I/O​ ​subsystem. 

The​ ​number​ ​of​ ​mappers​ ​for​ ​the​ t ​ eragen​​ ​and​ t ​ erasort​​ ​jobs​ ​should​ ​be​ ​set​ ​to​ ​the​ ​maximum​ ​number​ ​of 
disks​ ​in​ ​the​ ​cluster.​ ​ ​This​ ​will​ ​likely​ ​be​ ​less​ ​than​ ​the​ ​total​ ​number​ ​of​ ​YARN​ ​vcores​​ ​available,​ ​so​ ​it​ ​is 
advisable​ ​to​ ​temporarily​ ​lower​ ​the​ ​vcores​ ​available​ ​per​ ​YARN​ ​worker​ ​node​ ​to​ ​the​ ​number​ ​of​ ​disk​ ​spindles 
to​ ​ensure​ ​an​ ​even​ ​distribution​ ​of​ ​the​ ​workload.​ ​ ​An​ ​additional​ v ​ core​​ ​will​ ​be​ ​needed​ ​for​ ​the​ ​YARN 
ApplicationMaster. 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​26


 

 
The​ ​terasort​​ ​job​ ​should​ ​also​ ​be​ ​run​ ​with​ ​the​ ​HDFS​ ​replication​ ​factor​ ​set​ ​to​ ​1​ ​as​ ​well​ ​as​ ​with​ ​the​ ​default 
replication​ ​factor.

Teragen​ ​and​ ​Terasort​ ​Command​ ​Examples 

Teragen​ ​Command​ ​to​ ​Generate​ ​1​ ​TB​ ​of​ ​Data​ ​With​ ​HDFS​ ​Replication​ ​Set​ ​to​ ​1 

EXAMPLES_PATH=/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce

yarn​ ​jar​ ​${EXAMPLES_PATH}/hadoop-mapreduce-examples.jar​ ​\


​ ​ ​teragen​ ​-Ddfs.replication=1​ ​-Dmapreduce.job.maps=360​ ​\
​ ​ ​10000000000​ ​TS_input1

The​ ​above​ ​command​ ​generates​ ​1​ ​TB​ ​of​ ​data​ ​with​ ​an​ ​HDFS​ ​replication​ ​factor​ ​of​ ​1,​ ​using​ ​360​ ​mappers. 
This​ ​command​ ​would​ ​be​ ​appropriate​ ​for​ ​a​ ​cluster​ ​with​ ​360​ ​disks. 

Teragen​ ​Command​ ​to​ ​Generate​ ​1​ ​TB​ ​of​ ​Data​ ​With​ ​HDFS​ ​Default​ ​Replication 

EXAMPLES_PATH=/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce

yarn​ ​jar​ ​${EXAMPLES_PATH}/hadoop-mapreduce-examples.jar​ ​\


​ ​ ​teragen​ ​-Dmapreduce.job.maps=360​ ​\
​ ​ ​10000000000​ ​TS_input2

The​ ​above​ ​command​ ​generates​ ​1​ ​TB​ ​of​ ​data​ ​with​ ​the​ ​default​ ​HDFS​ ​replication​ ​factor​ ​(usually​ ​3),​ ​using 
360​ ​mappers.​ ​ ​This​ ​command​ ​would​ ​be​ ​appropriate​ ​for​ ​a​ ​cluster​ ​with​ ​360​ ​disks. 

Terasort​ ​Command​ ​to​ ​Sort​ ​Data​ ​With​ ​HDFS​ ​Replication​ ​Set​ ​to​ ​1 

EXAMPLES_PATH=/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce

yarn​ ​jar​ ​${EXAMPLES_PATH}/hadoop-mapreduce-examples.jar​ ​\


​ ​ ​terasort​ ​-D​ ​dfs.replication=1​ ​-Dmapreduce.job.maps=360​ ​\
​ ​ ​TS_input1​ ​TS_output1

The​ ​above​ ​command​ ​sorts​ ​the​ ​data​ ​generated​ ​by​ ​terasort​​ ​using​ ​360​ ​mappers​ ​and​ ​writes​ ​the​ ​sorted 
output​ ​to​ ​HDFS​ ​with​ ​a​ ​replication​ ​factor​ ​of​ ​1.​ ​ ​This​ ​would​ ​be​ ​appropriate​ ​for​ ​a​ ​cluster​ ​with​ ​360​ ​disks. 

   

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​27


 

Terasort​ ​Command​ ​to​ ​Sort​ ​Data​ ​With​ ​HDFS​ ​Default​ ​Replication 

EXAMPLES_PATH=/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce

yarn​ ​jar​ ​${EXAMPLES_PATH}/hadoop-mapreduce-examples.jar​ ​\


​ ​ ​terasort​ ​-Dmapreduce.job.maps=360​ ​\
​ ​ ​TS_input2​ ​TS_output2

The​ ​above​ ​command​ ​sorts​ ​the​ ​data​ ​generated​ ​by​ ​terasort​​ ​using​ ​360​ ​mappers​ ​and​ ​writes​ ​the​ ​sorted 
output​ ​to​ ​HDFS​ ​with​ ​a​ ​the​ ​default​ ​replication​ ​factor​ ​(usually​ ​3).​ ​ ​This​ ​would​ ​be​ ​appropriate​ ​for​ ​a​ ​cluster 
with​ ​360​ ​disks.

Teragen​ ​and​ ​Terasort​ ​Results 


Command  HDFS​ ​Replication  Number​ ​of​ ​Mappers  Run​ ​Time 
Teragen​ ​for​ ​1​ ​TB​ ​data​ ​set  1     
Teragen​ ​for​ ​3x​ ​cluster​ ​RAM​ ​data​ ​set  1     
Terasort​ ​for​ ​1​ ​TB​ ​data​ ​set  1     
Terasort​ ​for​ ​3x​ ​cluster​ ​RAM​ ​data​ ​set  1     
Teragen​ ​for​ ​1​ ​TB​ ​data​ ​set  3     
Teragen​ ​for​ ​3x​ ​cluster​ ​RAM​ ​data​ ​set  3     
Terasort​ ​for​ ​1​ ​TB​ ​data​ ​set  3     
Terasort​ ​for​ ​3x​ ​cluster​ ​RAM​ ​data​ ​set  3     

Cluster​ ​Configuration​ ​Best​ ​Practices 

ZooKeeper 
ZooKeeper​ ​is​ ​extremely​ ​sensitive​ ​to​ ​disk​ ​latency.​ ​ ​While​ ​it​ ​only​ ​uses​ ​a​ ​modest​ ​amount​ ​of​ ​resources, 
having​ ​ZooKeeper​ ​swap​ ​out​ ​or​ ​wait​ ​for​ ​a​ ​disk​ ​operation​ ​can​ ​result​ ​in​ ​that​ ​ZooKeeper​ ​node​ ​being 
considered​ ​‘dead’​ ​by​ ​its​ ​quorum​ ​peers.​ ​ ​For​ ​this​ ​reason,​ ​Cloudera​ ​recommends​ ​against​ ​deploying 
ZooKeeper​ ​on​ ​worker​ ​nodes​ ​where​ ​loads​ ​are​ ​unpredictable​ ​and​ ​are​ ​prone​ ​to​ ​spikes.​ ​ ​It​ ​is​ ​acceptable​ ​to 
deploy​ ​Zookeeper​ ​on​ ​master​ ​nodes​ ​where​ ​load​ ​is​ ​more​ ​uniform​ ​and​ ​predictable​ ​(or​ ​generally,​ ​on​ ​any​ ​node 
where​ ​it​ ​can​ ​be​ ​have​ ​unimpeded​ ​access​ ​to​ ​disk). 

HDFS 

Java​ ​Heap​ ​Sizes 


NameNode​ ​memory​ ​should​ ​be​ ​increased​ ​over​ ​time​ ​as​ ​HDFS​ ​has​ ​more​ ​files​ ​and​ ​blocks​ ​stored.​ ​ ​Cloudera 
Manager​ ​can​ ​monitor​ ​and​ ​alert​ ​on​ ​memory​ ​usage.​ ​ ​A​ ​rough​ ​estimate​ ​is​ ​that​ ​the​ ​NameNode​ ​needs​ ​1​ ​GB​ ​of 
memory​ ​for​ ​every​ ​1​ ​million​ ​files.​ ​ ​Setting​ ​the​ ​heap​ ​size​ ​too​ ​large​ ​when​ ​it​ ​is​ ​not​ ​needed​ ​leads​ ​to​ ​inefficient 
Java​ ​garbage​ ​collection,​ ​which​ ​can​ ​lead​ ​to​ ​erratic​ ​behavior​ ​that​ ​is​ ​hard​ ​to​ ​diagnose.​ ​ ​NameNode​ ​and 
Standby​ ​NameNode​ ​heap​ ​sizes​ ​must​ ​always​ ​be​ ​the​ ​same,​ ​and​ ​thus​ ​must​ ​be​ ​adjusted​ ​together. 

NameNode​ ​Metadata​ ​Locations 


When​ ​a​ ​quorum-based​ ​high​ ​availability​ ​HDFS​ ​configuration​ ​is​ ​used,​ ​JournalNodes​ ​handle​ ​the​ ​storage​ ​of 
metadata​ ​writes.​ ​ ​The​ ​NameNode​ ​daemons​ ​require​ ​a​ ​local​ ​location​ ​to​ ​store​ ​metadata​ ​as​ ​well.​ ​ ​Cloudera 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​28


 

recommends​ ​that​ ​only​ ​a​ ​single​ ​directory​ ​be​ ​used​ ​if​ ​the​ ​underlying​ ​disks​ ​are​ ​configured​ ​as​ ​RAID,​ ​or​ ​two 
directories​ ​on​ ​different​ ​disks​ ​if​ ​the​ ​disks​ ​are​ ​mounted​ ​as​ ​JBOD. 

Block​ ​Size 
HDFS​ ​stores​ ​files​ ​in​ ​blocks​ ​that​ ​are​ ​distributed​ ​over​ ​the​ ​cluster.​ ​A​ ​block​ ​is​ ​typically​ ​stored​ ​contiguously​ ​on 
disk​ ​to​ ​provide​ ​high​ ​read​ ​throughput.​ ​The​ ​choice​ ​of​ ​block​ ​size​ ​will​ ​influence​ ​how​ ​long​ ​these​ ​high 
throughput​ ​reads​ ​will​ ​run​ ​for,​ ​and​ ​over​ ​how​ ​many​ ​nodes​ ​a​ ​file​ ​is​ ​distributed.​ ​When​ ​reading​ ​the​ ​many 
blocks​ ​of​ ​a​ ​single​ ​file,​ ​a​ ​too​ ​low​ ​block​ ​size​ ​will​ ​spend​ ​more​ ​overall​ ​time​ ​in​ ​slow​ ​disk​ ​seek,​ ​and​ ​a​ ​too​ ​high 
block​ ​size​ ​will​ ​have​ ​reduced​ ​parallelism.​ ​Data​ ​processing​ ​that​ ​is​ ​I/O​ ​heavy​ ​will​ ​benefit​ ​from​ ​larger​ ​block 
sizes,​ ​and​ ​data​ ​processing​ ​that​ ​is​ ​CPU​ ​heavy​ ​will​ ​benefit​ ​from​ ​smaller​ ​block​ ​sizes. 

The​ ​default​ ​provided​ ​by​ ​Cloudera​ ​Manager​ ​is​ ​128MB.​ ​ ​The​ ​block​ ​size​ ​can​ ​also​ ​be​ ​specified​ ​by​ ​an​ ​HDFS 
client​ ​on​ ​a​ ​per-file​ ​basis. 

Replication 
Bottlenecks​ ​can​ ​occur​ ​on​ ​a​ ​small​ ​number​ ​of​ ​nodes​ ​when​ ​only​ ​small​ ​subsets​ ​of​ ​files​ ​on​ ​HDFS​ ​are​ ​being 
heavily​ ​accessed.​ ​ ​Increasing​ ​the​ ​replication​ ​factor​ ​of​ ​the​ ​files​ ​so​ ​that​ ​their​ ​blocks​ ​are​ ​replicated​ ​over 
more​ ​nodes​ ​can​ ​alleviate​ ​this.​ ​ ​This​ ​is​ ​done​ ​at​ ​the​ ​expense​ ​of​ ​storage​ ​capacity​ ​on​ ​the​ ​cluster.​ ​ ​This​ ​can​ ​be 
set​ ​on​ ​individual​ ​files,​ ​or​ ​recursively​ ​on​ ​directories​ ​with​ ​the​ ​-R​ ​parameter,​ ​by​ ​using​ ​the​ ​Hadoop​ ​shell 
command​ h ​ adoop​ ​fs​ ​-setrep​.​ ​ ​By​ ​default,​ ​the​ ​replication​ ​factor​ ​is​ ​three​ ​(3). 

Rack​ ​Awareness 
Hadoop​ ​can​ ​optimize​ ​performance​ ​and​ ​redundancy​ ​when​ ​rack​ ​awareness​ ​is​ ​configured​​ ​for​ ​clusters​ ​that 
span​ ​across​ ​multiple​ ​racks,​ ​and​ ​Cloudera​ ​recommends​ ​doing​ ​so.​ ​ ​Rack​ ​assignments​ ​for​ ​nodes​ ​can​ ​be 
configured​ ​within​ ​Cloudera​ ​Manager. 
 
When​ ​setting​ ​up​ ​a​ ​multi-rack​ ​environment,​ ​place​ ​each​ ​master​ ​node​ ​on​ ​a​ ​different​ ​rack.​ ​In​ ​the​ ​event​ ​of​ ​a 
rack​ ​failure,​ ​the​ ​cluster​ ​can​ ​continue​ ​to​ ​operate​ ​using​ ​the​ ​remaining​ ​master(s). 

DataNode​ ​Failed​ ​Volumes​ ​Tolerated 


By​ ​default,​ ​Cloudera​ ​Manager​ ​sets​ ​the​ ​HDFS​ ​datanode​ ​failed​ ​volume​ ​threshold​ ​to​ ​half​ ​of​ ​the​ ​data​ ​drives​ ​in 
a​ ​datanode.​ ​ ​In​ ​other​ ​words,​ ​if​ ​each​ ​datanode​ ​has​ ​eight​ ​drives​ ​dedicated​ ​to​ ​data​ ​storage,​ ​this​ ​threshold 
would​ ​be​ ​set​ ​to​ ​four,​ ​meaning​ ​that​ ​HDFS​ ​will​ ​mark​ ​the​ ​datanode​ ​dead​ ​on​ ​the​ ​fifth​ ​drive​ ​failure.​ ​ ​This 
number​ ​may​ ​need​ ​to​ ​be​ ​adjusted​ ​up​ ​or​ ​down​ ​depending​ ​on​ ​internal​ ​policies​ ​regarding​ ​hard​ ​drive 
replacements,​ ​or​ ​because​ ​of​ ​evaluating​ ​what​ ​behavior​ ​is​ ​actually​ ​seen​ ​on​ ​the​ ​cluster​ ​under​ ​normal 
operating​ ​conditions.​ ​ ​Setting​ ​the​ ​value​ ​too​ ​high​ ​will​ ​end​ ​up​ ​having​ ​a​ ​negative​ ​impact​ ​on​ ​the​ ​Hadoop 
cluster.​ ​ ​Specifically​ ​for​ ​YARN,​ ​the​ ​number​ ​of​ ​total​ ​containers​ ​available​ ​on​ ​the​ ​node​ ​with​ ​many​ ​drive 
failures​ ​will​ ​still​ ​be​ ​the​ ​same​ ​as​ ​nodes​ ​without​ ​drive​ ​failures,​ ​meaning​ ​data​ ​locality​ ​is​ ​less​ ​likely​ ​on​ ​the 
former,​ ​leading​ ​to​ ​more​ ​network​ ​traffic​ ​and​ ​slower​ ​performance. 
 
Important: 
Multiple​ ​drive​ ​failures​ ​in​ ​a​ ​short​ ​amount​ ​of​ ​time​ ​might​ ​be​ ​indicative​ ​of​ ​a​ ​larger​ ​problem​ ​with​ ​the 
machine,​ ​such​ ​as​ ​a​ ​failed​ ​disk​ ​controller. 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​29


 

DataNode​ ​Xciever​ ​Count 


Xcievers​ ​are​ ​handlers​ ​in​ ​the​ ​datanode​ ​process​ ​that​ ​take​ ​care​ ​of​ ​sending​ ​and​ ​receiving​ ​block​ ​data.​ ​ ​Some 
services,​ ​such​ ​as​ ​HBase,​ ​tend​ ​to​ ​use​ ​a​ ​lot​ ​of​ ​Xcievers.​ ​ ​Cloudera​ ​Manager​ ​typically​ ​configures​ ​a​ ​sufficient 
xciever​ ​count,​ ​but​ ​it​ ​is​ ​possible​ ​that​ ​some​ ​workloads​ ​may​ ​require​ ​a​ ​higher​ ​setting. 

Balancing 
HDFS​ ​will​ ​try​ ​to​ ​spread​ ​data​ ​evenly​ ​across​ ​the​ ​cluster​ ​in​ ​order​ ​to​ ​optimize​ ​read​ ​access,​ ​MapReduce 
performance,​ ​and​ ​node​ ​utilization.​ ​ ​Over​ ​time​ ​it​ ​is​ ​possible​ ​that​ ​the​ ​cluster​ ​can​ ​become​ ​out​ ​of​ ​balance 
due​ ​to​ ​a​ ​variety​ ​of​ ​reasons.​ ​ ​Hadoop​ ​can​ ​help​ ​mitigate​ ​this​ ​by​ ​rebalancing​ ​data​ ​across​ ​the​ ​cluster​ ​using 
the​ ​balancer​ ​tool.​ ​ ​Running​ ​the​ ​balancer​ ​is​ ​a​ ​manual​ ​process​ ​that​ ​can​ ​be​ ​executed​ ​from​ ​within​ ​Cloudera 
Manager​ ​as​ ​well​ ​as​ ​from​ ​the​ ​command​ ​line.​ ​ ​By​ ​default,​ ​Cloudera​ ​Manager​ ​configures​ ​the​ ​balancer​ ​to 
rebalance​ ​a​ ​datanode​ ​when​ ​its​ ​utilization​ ​is​ ​10%​ ​more​ ​or​ ​less​ ​from​ ​the​ ​average​ ​utilization​ ​across​ ​the 
cluster.​ ​Individual​ ​datanode​ ​utilization​ ​can​ ​be​ ​viewed​ ​from​ ​within​ ​Cloudera​ ​Manager. 

By​ ​default​ ​the​ ​maximum​ ​bandwidth​ ​a​ ​datanode​ ​will​ ​use​ ​for​ ​rebalancing​ ​is​ ​set​ ​to​ ​10​ ​MB/second​ ​(80 
Mbit/second).​ ​ ​This​ ​can​ ​be​ ​increased​ ​but​ ​network​ ​bandwidth​ ​used​ ​by​ ​rebalancing​ ​could​ ​potentially 
impact​ ​production​ ​cluster​ ​application​ ​performance.​ ​ ​ ​Changing​ ​the​ ​balancer​ ​bandwidth​ ​setting​ ​within 
Cloudera​ ​Manager​ ​requires​ ​a​ ​restart​ ​of​ ​the​ ​HDFS​ ​service,​ ​however​ ​this​ ​setting​ ​can​ ​also​ ​be​ ​made​ ​instantly 
across​ ​all​ ​nodes​ ​without​ ​a​ ​configuration​ ​change​ ​by​ ​running​ ​the​ ​command:  

hdfs​ ​dfsadmin​ ​-setBalancerBandwidth​ ​<bytes_per_second>

This​ ​command​ ​must​ ​be​ ​run​ ​as​ ​an​ ​HDFS​ ​superuser.​ ​ ​This​ ​is​ ​a​ ​convenient​ ​way​ ​to​ ​change​ ​the​ ​setting 
without​ ​restarting​ ​the​ ​cluster,​ ​but​ ​since​ ​it​ ​is​ ​a​ ​dynamic​ ​change,​ ​it​ ​does​ ​not​ ​persist​ ​if​ ​the​ ​cluster​ ​is 
restarted. 
 
Important: 
Cloudera​ ​generally​ ​does​ ​not​ ​recommend​ ​running​ ​the​ ​balancer​ ​on​ ​an​ ​HBase​ ​cluster​ ​as​ ​it​ ​affects​ ​data 
locality​ ​for​ ​the​ ​RegionServers,​ ​which​ ​can​ ​reduce​ ​performance.​ ​ ​Unfortunately,​ ​when​ ​HBase​ ​and​ ​YARN 
services​ ​are​ ​collocated​ ​and​ ​heavy​ ​usage​ ​is​ ​expected​ ​on​ ​both,​ ​there​ ​is​ ​not​ ​a​ ​good​ ​way​ ​to​ ​ensure​ ​the 
cluster​ ​is​ ​optimally​ ​balanced.  

YARN 
The​ ​YARN​ ​service​ ​manages​ ​MapReduce​ ​and​ ​Spark​ ​tasks.​ ​ ​Applications​ ​run​ ​in​ ​YARN​ ​containers,​ ​which 
use​ ​Linux​ ​Cgroups​ ​for​ ​resource​ ​management​ ​and​ ​process​ ​isolation.​ ​ ​The​ ​Cloudera​ ​Installation​ ​and 
Upgrade​ ​manual​ ​has​ ​a​ ​section​ ​on​ ​YARN​ ​tuning​ ​guidance​. 

Impala 
The​ ​Impala​ ​service​ ​is​ ​a​ ​distributed,​ ​ ​MPP​ ​database​ ​engine​ ​for​ ​interactive​ ​performance​ ​SQL​ ​queries​ ​over 
large​ ​data​ ​sets.​ ​ ​Impala​ ​performs​ ​best​ ​when​ ​it​ ​can​ ​operate​ ​on​ ​data​ ​in​ ​memory;​ ​as​ ​a​ ​result,​ ​Impala​ ​is​ ​often 
configured​ ​with​ ​a​ ​very​ ​large​ ​heap​ ​size. 

Impala​ ​daemon​ ​processes​ ​must​ ​be​ ​collocated​ ​with​ ​HDFS​ ​data​ ​nodes​ ​to​ ​use​ ​HDFS​ ​local​ ​reads,​ ​which​ ​also 
improve​ ​performance. 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​30


 

Impala​ ​does​ ​not​ ​provide​ ​any​ ​built-in​ ​load​ ​balancing,​ ​so​ ​a​ ​production​ ​Impala​ ​deployment​ ​should​ ​sit​ ​behind 
a​ ​load​ ​balancer​ ​for​ ​performance​ ​and​ ​high​ ​availability.​ ​ ​The​ ​Cloudera​ ​Impala​ ​product​ ​documentation 
contains​ ​detailed​ ​information​ ​on​ ​configuring​ ​Impala​ ​with​ ​a​ ​load​ ​balancer:​ ​Using​ ​Impala​ ​through​ ​a​ ​Proxy 
for​ ​High​ ​Availability​. 

The​ ​Cloudera​ ​Impala​ ​product​ ​documentation​ ​also​ ​contains​ ​a​ ​section​ ​on​ ​Impala​ ​performance​ ​tuning​ ​that 
should​ ​be​ ​reviewed​ ​prior​ ​to​ ​a​ ​production​ ​deployment:​ ​Tuning​ ​Impala​ ​for​ ​Performance​. 

Spark 
Cloudera​ ​supports​ ​Spark​ ​on​ ​YARN-managed​ ​deployments​ ​for​ ​a​ ​more​ ​flexible​ ​and​ ​consistent​ ​resource 
management​ ​approach.​ ​ ​When​ ​running​ ​under​ ​Spark,​ ​the​ ​number​ ​of​ ​executors​ ​(YARN​ ​containers)​ ​can​ ​be 
specified​ ​when​ ​submitting​ ​the​ ​job.​ ​ ​As​ ​of​ ​CDH​ ​5.5,​ ​dynamic​ ​allocation​ ​is​ ​enabled​ ​by​ ​default​ ​but​ ​can​ ​be 
disabled​ ​either​ ​by​ ​setting​ s
​ park.dynamicAllocation.enabled=false​.​ ​ ​If​ - ​ -num-executors​​ ​is 
specified​ ​in​ ​the​ ​job,​ ​dynamic​ ​allocation​ ​is​ ​disabled​ ​implicitly.​ ​ ​Additional​ ​information​ ​on​ ​Spark 
configuration​ ​and​ ​management​ ​is​ ​available​ ​in​ ​the​ ​Cloudera​ ​Administration​ ​manual:​ ​Managing​ ​Spark​. 
 
Spark​ ​standalone​ ​mode​ ​is​ ​not​ ​supported. 

HBase 

Automatic​ ​Major​ ​Compaction 


By​ ​default​ ​major​ ​compactions​ ​happen​ ​every​ ​7​ ​days.​ ​ ​The​ ​next​ ​major​ ​compaction​ ​happens​ ​7​ ​days​ ​after​ ​the 
last​ ​one​ ​has​ ​finished.​ ​ ​This​ ​means​ ​that​ ​the​ ​actual​ ​time​ ​that​ ​major​ ​compaction​ ​happens​ ​can​ ​impact 
production​ ​processes,​ ​which​ ​is​ ​not​ ​ideal​ ​if​ ​it​ ​is​ ​desired​ ​to​ ​run​ ​compactions​ ​at​ ​a​ ​specific​ ​known​ ​off-peak 
hour​ ​(e.g.,​ ​3​ ​AM).​ ​ ​Cloudera​ ​strongly​ ​recommends​ ​disabling​ ​automatic​ ​major​ ​compaction​ ​by​ ​setting​ ​the 
interval​ ​to​ ​zero​ ​(hbase.hregion.major.compaction​ ​=​ ​0).​ ​ ​Major​ ​compactions​ ​should​ ​then​ ​be​ ​run​ ​via​ ​cron 
calling​ ​the​ ​HBase​ ​admin​ ​tool. 

Search 
Cloudera​ ​Search,​ ​based​ ​on​ ​Apache​ ​Solr,​ ​provides​ ​a​ ​distributed​ ​search​ ​engine​ ​service.​ ​ ​Search​ ​engines​ ​are 
often​ ​expected​ ​to​ ​provide​ ​fast,​ ​interactive​ ​performance​ ​so​ ​it​ ​is​ ​important​ ​to​ ​allocate​ ​sufficient​ ​RAM​ ​to​ ​the 
search​ ​service. 
 
If​ ​other​ ​resource​ ​intensive​ ​applications,​ ​such​ ​as​ ​Impala,​ ​are​ ​deployed​ ​on​ ​the​ ​same​ ​cluster,​ ​it’s​ ​important 
to​ ​use​ ​the​ ​resource​ ​management​ ​facilities​ ​in​ ​Cloudera​ ​Manager.​ ​ ​In​ ​some​ ​cases,​ ​it​ ​may​ ​also​ ​be​ ​preferable 
to​ ​avoid​ ​collocating​ ​the​ ​search​ ​service​ ​with​ ​other​ ​services. 

Oozie 
Writing​ ​Oozie​ ​XML​ ​configuration​ ​files​ ​can​ ​be​ ​tedious​ ​and​ ​error-prone.​ ​ ​Cloudera​ ​recommends​ ​using​ ​the 
Oozie​ ​editor​ ​provided​ ​by​ ​Hue​ ​for​ ​workflow​ ​creation,​ ​scheduling,​ ​and​ ​execution. 

Kafka 
Kafka’s​ ​default​ ​configuration​ ​with​ ​Cloudera​ ​Manager​ ​is​ ​suited​ ​to​ ​being​ ​able​ ​to​ ​start​ ​development​ ​quickly 
but​ ​several​ ​settings​ ​should​ ​be​ ​changed​ ​from​ ​the​ ​defaults​ ​before​ ​deploying​ ​a​ ​Cloudera​ ​Kafka​ ​cluster​ ​in 
production. 
 
The​ ​default​ ​ZooKeeper​ ​Kafka​ ​root​ ​is​ ​/​,​ ​however​ ​Cloudera​ ​recommends​ ​changing​ ​this​ ​to​ / ​ kafka​.​ ​ ​This​ ​is 
the​ ​location​ ​within​ ​ZooKeeper​ ​where​ ​the​ ​znodes​ ​for​ ​the​ ​Kafka​ ​cluster​ ​are​ ​stored.​ ​ ​As​ ​long​ ​as​ ​a​ ​single 
Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​31
 

Kafka​ ​cluster​ ​is​ ​using​ ​the​ ​ZooKeeper​ ​service,​ ​using​ ​/kafka​​ ​is​ ​advised.​ ​ ​If​ ​multiple​ ​Kafka​ ​clusters​ ​(eg.​ ​dev, 
test,​ ​qa)​ ​are​ ​sharing​ ​a​ ​ZooKeeper​ ​service,​ ​each​ ​Kafka​ ​instance​ ​should​ ​have​ ​a​ ​unique​ ​ZooKeeper​ ​root​ ​(eg. 
/kafka-dev​,​ / ​ kafka-test​,​ ​/kafka-qa​). 

Cloudera​ ​Manager​ ​enables​ ​Kafka​ ​topic​ ​auto-creation​ ​by​ ​default.​ ​ ​This​ ​means​ ​that​ ​any​ ​data​ ​written​ ​to​ ​a 
topic​ ​will​ ​cause​ ​the​ ​creation​ ​of​ ​that​ ​topic​ ​if​ ​it​ ​does​ ​not​ ​already​ ​exist.​ ​ ​While​ ​this​ ​may​ ​be​ ​convenient​ ​in 
prototyping​ ​and​ ​development,​ ​it​ ​should​ ​not​ ​be​ ​used​ ​in​ ​production​ ​as​ ​it​ ​leads​ ​to​ ​cases​ ​where​ ​arbitrary 
topics​ ​can​ ​be​ ​created​ ​and​ ​data​ ​may​ ​be​ ​written​ ​to​ ​the​ ​wrong​ ​topic​ ​in​ ​the​ ​case​ ​of​ ​an​ ​improper​ ​application 
configuration​ ​without​ ​leading​ ​to​ ​an​ ​error. 
 
Cloudera​ ​Manager​ ​sets​ ​the​ ​default​ ​minimum​ ​number​ ​of​ ​in​ ​sync​ ​replicas​ ​(ISR)​ ​to​ ​1.​ ​ ​This​ ​should​ ​generally 
be​ ​increased​ ​to​ ​a​ ​minimum​ ​of​ ​2​ ​in​ ​a​ ​production​ ​cluster​ ​to​ ​prevent​ ​data​ ​loss. 
 
The​ ​Kafka​ ​Maximum​ ​Process​ ​File​ ​Descriptors​ ​setting​ ​may​ ​need​ ​to​ ​be​ ​increased​ ​in​ ​some​ ​cases​ ​in 
production​ ​deployments.​ ​ ​This​ ​value​ ​can​ ​be​ ​monitored​ ​in​ ​Cloudera​ ​Manager​ ​and​ ​increased​ ​if​ ​usage 
requires​ ​a​ ​larger​ ​value​ ​than​ ​the​ ​default​ ​64k​ ​ulimit. 
 
The​ ​default​ ​data​ ​retention​ ​time​ ​for​ ​Kafka​ ​is​ ​often​ ​acceptable​ ​for​ ​production​ ​but​ ​should​ ​be​ ​reviewed​ ​for 
use​ ​case​ ​suitability. 

Flume 
For​ ​Flume​ ​agents,​ ​use​ ​memory​ ​channel​ ​or​ ​file​ ​channel.​ ​Flume’s​ ​memory​ ​channel​ ​offers​ ​increased 
performance​ ​at​ ​the​ ​cost​ ​of​ ​no​ ​data​ ​durability​ ​guarantees.​ ​File​ ​channels​ ​offer​ ​a​ ​higher​ ​level​ ​of​ ​durability 
guarantee​ ​because​ ​the​ ​data​ ​is​ ​persisted​ ​on​ ​disk​ ​in​ ​the​ ​form​ ​of​ ​files. 

Kudu

Limitations 
Current​ ​versions​ ​of​ ​Kudu​ ​come​ ​with​ ​a​ ​number​ ​of​ ​usage​ ​limitations​: 
● Kudu​ ​does​ ​not​ ​currently​ ​include​ ​any​ ​built-in​ ​features​ ​for​ ​backup​ ​and​ ​restore.​ ​Users​ ​are 
encouraged​ ​to​ ​use​ ​tools​ ​such​ ​as​ ​Spark​ ​or​ ​Impala​ ​to​ ​export​ ​or​ ​import​ ​tables​ ​as​ ​necessary. 
● Kudu​ ​does​ ​not​ ​currently​ ​support​ ​rack​ ​awareness​ ​or​ ​rolling​ ​restarts. 
● Kudu​ ​does​ ​not​ ​currently​ ​support​ ​multi-row​ ​transactions.​ ​Operations​ ​that​ ​affect​ ​multiple​ ​rows​ ​will 
not​ ​roll​ ​back​ ​if​ ​the​ ​operation​ ​fails​ ​part​ ​way​ ​through.​ ​This​ ​should​ ​be​ ​mitigated​ ​by​ ​exploiting​ ​the 
primary​ ​key​ ​uniqueness​ ​constraint​ ​to​ ​make​ ​operations​ ​idempotent 

Impala​ ​Compatibility 
Lower​ ​versions​ ​of​ ​CDH​ ​(<​ ​5.10)​ ​and​ ​Cloudera​ ​Manager​ ​used​ ​an​ ​experimental​ ​fork​ ​of​ ​Impala​ ​which​ ​is 
referred​ ​to​ ​as​ ​IMPALA_KUDU.​ ​If​ ​you​ ​have​ ​previously​ ​installed​ ​the​ ​IMPALA_KUDU​ ​service,​ ​make​ ​sure​ ​you 
remove​ ​it​ ​from​ ​your​ ​cluster​ ​before​ ​you​ ​proceed.​ ​Install​ ​Kudu​ ​1.2.x​ ​(or​ ​later)​ ​using​ ​either​ ​Cloudera 
Manager​ ​or​ ​the​ ​command-line. 

Partitioning​ ​Guidelines 
Kudu​ ​supports​ ​partitioning​ ​tables​ ​by​ ​RANGE​ ​and​ ​HASH​ ​partitions.​ ​Note​ ​that​ ​RANGE​ ​and​ ​HASH​ ​partitions 
can​ ​be​ ​combined​ ​to​ ​create​ ​more​ ​effective​ ​partitioning​ ​strategies.​ ​It​ ​is​ ​also​ ​possible​ ​to​ ​utilize​ ​non-covering 
RANGE​ ​partitions.  
 
For​ ​large​ ​tables,​ ​such​ ​as​ ​fact​ ​tables,​ ​aim​ ​for​ ​as​ ​many​ ​tablets​ ​as​ ​you​ ​have​ ​cores​ ​in​ ​the​ ​cluster. 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​32


 

 
For​ ​small​ ​tables,​ ​such​ ​as​ ​dimension​ ​tables,​ ​aim​ ​for​ ​a​ ​large​ ​enough​ ​number​ ​of​ ​tablets​ ​that​ ​each​ ​tablet​ ​is​ ​at 
least​ ​1​ ​GB​ ​in​ ​size. 
 
Further​ ​details​ ​can​ ​be​ ​found​ ​in​ ​the​ A
​ pache​ ​Kudu​ ​Guide​. 
 
Note: 
In​ ​general,​ ​be​ ​mindful​ ​the​ ​number​ ​of​ ​tablets​ ​limits​ ​the​ ​parallelism​ ​of​ ​reads,​ ​in​ ​the​ ​current 
implementation.​ ​Increasing​ ​the​ ​number​ ​of​ ​tablets​ ​significantly​ ​beyond​ ​the​ ​number​ ​of​ ​cores​ ​is​ ​likely​ ​to 
have​ ​diminishing​ ​returns. 

 
   

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​33


 

Security​ ​Integration 
Security​ ​Integration​ ​Best​ ​Practices 
This​ ​section​ ​describes​ ​Cloudera’s​ ​best​ ​practices​ ​and​ ​recommendations​ ​pertaining​ ​to​ ​security​ ​in​ ​EDH.​ ​ ​It 
contains​ ​security​ ​fundamentals,​ ​integration​ ​techniques​ ​with​ ​external​ ​systems,​ ​and​ ​relevant​ ​links​ ​to 
Cloudera​ ​product​ ​documentation. 

Security​ ​Pillars 
Enabling​ ​security​ ​across​ ​Cloudera​ ​EDH​ ​requires​ ​multiple​ ​facets​ ​of​ ​security.​ ​ ​These​ ​facets​ ​are​ ​organized 
into​ ​pillars:​ ​Authentication,​ ​Authorization,​ ​Auditing,​ ​and​ ​Encryption.​ ​ ​Each​ ​of​ ​these​ ​pillars​ ​individually​ ​help 
secure​ ​EDH,​ ​but​ ​only​ ​when​ ​used​ ​together​ ​are​ ​they​ ​the​ ​most​ ​effective​ ​in​ ​providing​ ​a​ ​comprehensive 
security​ ​stance​ ​to​ ​meet​ ​company​ ​standards​ ​and​ ​any​ ​compliance​ ​requirements. 

Authentication 
The​ ​first​ ​pillar​ ​of​ ​security​ ​is​ ​authentication.​ ​ ​Authentication​ ​is​ ​the​ ​act​ ​of​ ​proving​ ​identity​ ​between​ ​two 
parties.​ ​ ​Identity​ ​can​ ​be​ ​something​ ​as​ ​simple​ ​as​ ​a​ ​username,​ ​or​ ​something​ ​more​ ​complex​ ​such​ ​as​ ​a 
human​ ​being.​ ​ ​Authenticating​ ​as​ ​an​ ​identity​ ​requires​ ​that​ ​both​ ​parties​ ​agree​ ​on​ ​a​ ​common​ ​source​ ​of 
identity​ ​information.​ ​ ​For​ ​example,​ ​if​ ​a​ ​U.S.​ ​person​ ​possesses​ ​a​ ​driver’s​ ​license​ ​as​ ​a​ ​form​ ​of​ ​identification, 
a​ ​police​ ​officer​ ​in​ ​another​ ​country​ ​may​ ​not​ ​recognize​ ​this​ ​as​ ​a​ ​valid​ ​source​ ​of​ ​identity. 
 
Even​ ​though​ ​authentication​ ​is​ ​the​ ​act​ ​of​ ​proving​ ​identity,​ ​the​ ​level​ ​of​ ​proof​ ​required​ ​varies​ ​greatly.​ ​ ​For 
example,​ ​showing​ ​a​ ​picture​ ​ID​ ​to​ ​someone,​ ​who​ ​glances​ ​at​ ​it​ ​to​ ​make​ ​sure​ ​the​ ​picture​ ​resembles​ ​you,​ ​is 
an​ ​example​ ​of​ ​weak​ ​authentication.​ ​ ​The​ ​picture​ ​ID​ ​could​ ​easily​ ​have​ ​been​ ​forged,​ ​or​ ​the​ ​picture​ ​could​ ​be 
of​ ​someone​ ​else​ ​that​ ​looks​ ​like​ ​you.​ ​ ​On​ ​the​ ​other​ ​hand,​ ​strong​ ​authentication​ ​is​ ​much​ ​more​ ​difficult​ ​to 
forge.​ ​ ​For​ ​example,​ ​proving​ ​your​ ​identity​ ​by​ ​authenticating​ ​with​ ​fingerprints​ ​or​ ​facial​ ​recognition​ ​is​ ​far 
more​ ​accurate. 
 
The​ ​use​ ​of​ ​strong​ ​authentication​ ​in​ ​EDH​ ​is​ ​a​ ​cornerstone​ ​of​ ​security​ ​in​ ​the​ ​platform. 

Authorization 
The​ ​next​ ​pillar​ ​of​ ​security​ ​is​ ​authorization.​ ​ ​Authorization​ ​determines​ ​what​ ​an​ ​entity​ ​is​ ​allowed​ ​to​ ​do,​ ​and 
it​ ​happens​ ​after​ ​said​ ​entity​ ​has​ ​passed​ ​authentication.​ ​ ​For​ ​example,​ ​if​ ​a​ ​person​ ​is​ ​traveling 
internationally,​ ​they​ ​must​ ​first​ ​provide​ ​a​ ​valid​ ​passport​ ​-​ ​authentication​ ​-​ ​then​ ​if​ ​all​ ​security​ ​checks​ ​pass, 
the​ ​passport​ ​control​ ​officer​ ​authorizes​ ​the​ ​person​ ​to​ ​enter​ ​the​ ​country. 
 
This​ ​works​ ​the​ ​same​ ​way​ ​in​ ​EDH,​ ​with​ ​the​ ​simplest​ ​example​ ​being​ ​HDFS​ ​file​ ​access.​ ​ ​In​ ​order​ ​to​ ​access​ ​a 
file​ ​in​ ​HDFS​ ​I​ ​must​ ​first​ ​authenticate​ ​to​ ​establish​ ​my​ ​identity,​ ​then​ ​the​ ​NameNode​ ​checks​ ​my​ ​identity​ ​and 
the​ ​permissions​ ​of​ ​the​ ​file​ ​to​ ​determine​ ​if​ ​authorization​ ​is​ ​granted. 
 
Authorization​ ​comes​ ​in​ ​many​ ​different​ ​flavors,​ ​as​ ​described​ ​later. 

Auditing 
Auditing​ ​is​ ​a​ ​pillar​ ​that​ ​is​ ​critical​ ​for​ ​understanding​ ​what​ ​is​ ​happening​ ​in​ ​EDH.​ ​ ​Without​ ​auditing,​ ​all​ ​of​ ​the 
other​ ​security​ ​pillars​ ​have​ ​limited​ ​effect​ ​because​ ​of​ ​a​ ​lack​ ​of​ ​visibility.​ ​ ​Auditing​ ​keeps​ ​track​ ​of​ ​who​ ​is 
doing​ ​what​ ​on​ ​the​ ​cluster,​ ​which​ ​includes​ ​both​ ​positive​ ​events​ ​-​ ​actions​ ​that​ ​are​ ​successful​ ​and​ ​allowed, 
and​ ​negative​ ​events​ ​-​ ​actions​ ​that​ ​are​ ​unsuccessful​ ​and​ ​not​ ​allowed.​ ​ ​Both​ ​positive​ ​and​ ​negative​ ​events 
are​ ​important​ ​to​ ​understand​ ​the​ ​complete​ ​picture​ ​of​ ​what​ ​is​ ​happening. 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​34


 

 
For​ ​EDH,​ ​Cloudera​ ​Navigator​ ​is​ ​the​ ​cornerstone​ ​of​ ​providing​ ​auditing​ ​capabilities.​ ​ ​It​ ​is​ ​a​ ​necessary 
component​ ​for​ ​data​ ​governance. 

Encryption 
The​ ​last​ ​pillar​ ​is​ ​encryption,​ ​which​ ​generally​ ​speaking​ ​relates​ ​to​ ​data​ ​protection.​ ​ ​There​ ​are​ ​two​ ​styles​ ​of 
encryption:​ ​wire​ ​encryption​ ​and​ ​at-rest​ ​encryption.​ ​ ​Wire​ ​encryption​ ​protects​ ​data​ ​while​ ​it​ ​is​ ​in​ ​transit​ ​over 
network​ ​channels​ ​and​ ​at-rest​ ​encryption​ ​protects​ ​data​ ​when​ ​it​ ​is​ ​persisted​ ​to​ ​disk.​ ​ ​Both​ ​of​ ​these​ ​are 
necessary​ ​and​ ​should​ ​be​ ​considered​ ​as​ ​complementary​ ​security​ ​features. 

Kerberos 
The​ ​Cloudera​ ​EDH​ ​platform​ ​relies​ ​on​ ​Kerberos​ ​as​ ​the​ ​standard​ ​strong​ ​authentication​ ​mechanism. 
Kerberos​ ​can​ ​be​ ​enabled​ ​for​ ​EDH​ ​using​ ​one​ ​of​ ​two​ ​supported​ ​KDC​ ​types:​ ​MIT​ ​Kerberos​ ​and​ ​Microsoft 
Active​ ​Directory. 

MIT​ ​Kerberos 
The​ ​MIT​ ​Kerberos​ ​libraries​ ​are​ ​found​ ​as​ ​standard​ ​packages​ ​available​ ​for​ ​most​ ​Linux​ ​operating​ ​system 
variants.​ ​ ​Installing​ ​and​ ​configuring​ ​a​ ​MIT​ ​Kerberos​ ​KDC​ ​is​ ​straightforward​ ​and​ ​well​ ​documented​ ​in​ ​the 
official​ M ​ IT​ ​Kerberos​ ​installation​ ​guide​. 
 
In​ ​a​ ​Linux​ ​environment​ ​where​ ​identity​ ​integration​ ​is​ ​not​ ​with​ ​Active​ ​Directory,​ ​using​ ​MIT​ ​Kerberos​ ​is​ ​the 
best​ ​option​ ​for​ ​enabling​ ​Kerberos​ ​for​ ​Cloudera​ ​EDH. 

Active​ ​Directory 
Microsoft​ ​Active​ ​Directory​ ​is​ ​the​ ​most​ ​widely​ ​used​ ​identity​ ​management​ ​system​ ​for​ ​businesses.​ ​ ​It 
incorporates​ ​many​ ​different​ ​technologies​ ​with​ ​it,​ ​including​ ​certificate​ ​services,​ ​LDAP,​ ​and​ ​Kerberos.​ ​ ​In​ ​a 
Linux​ ​environment​ ​where​ ​the​ ​operating​ ​system​ ​is​ ​integrated​ ​with​ ​Active​ ​Directory,​ ​Cloudera​ ​recommends 
to​ ​enable​ ​Kerberos​ ​with​ ​Active​ ​Directory​ ​and​ ​not​ ​to​ ​use​ ​MIT​ ​Kerberos.​ ​ ​This​ ​is​ ​the​ ​most​ ​common 
Kerberos​ ​architecture​ ​to​ ​use​ ​for​ ​Cloudera​ ​EDH. 

Other​ ​Kerberos​ ​Implementations 


There​ ​are​ ​other​ ​software​ ​suites​ ​that​ ​implement​ ​the​ ​Kerberos​ ​protocol,​ ​and​ ​which​ ​may​ ​be​ ​suitable 
choices.​ ​ ​An​ ​example​ ​is​ ​RedHat​ ​IdM​ ​/​ ​CentOS​ ​FreeIPA.​ ​ ​It​ ​is​ ​important​ ​to​ ​note​ ​that​ ​Cloudera​ ​does​ ​not​ ​test 
or​ ​provide​ ​support​ ​assistance​ ​with​ ​Kerberos​ ​implementations​ ​other​ ​than​ ​MIT​ ​and​ ​Active​ ​Directory. 

Cloudera​ ​Manager​ ​Kerberos​ ​Wizard 


Cloudera​ ​Manager​ ​provides​ ​the​ ​ability​ ​to​ ​enable​ ​Kerberos​ ​for​ ​EDH​ ​using​ ​a​ ​step-by-step​ ​wizard.​ ​ ​This 
wizard​ ​can​ ​be​ ​used​ ​for​ ​both​ ​MIT​ ​Kerberos​ ​and​ ​Active​ ​Directory​ ​configurations.​ ​ ​Using​ ​automation​ ​eases 
the​ ​burden​ ​on​ ​administrators​ ​to​ ​create​ ​the​ ​many​ ​Kerberos​ ​principals​ ​and​ ​keytabs​ ​necessary​ ​for​ ​the 
cluster,​ ​as​ ​well​ ​as​ ​prevents​ ​errors​ ​that​ ​may​ ​occur​ ​as​ ​a​ ​result​ ​of​ ​incorrect​ ​account​ ​creation​ ​procedures. 
 
Background​ ​information,​ ​requirements,​ ​and​ ​instructions​ ​for​ ​using​ ​the​ ​Cloudera​ ​Manager​ ​Kerberos​ ​wizard 
can​ ​be​ ​found​ ​in​ ​Enabling​ ​Kerberos​ ​Authentication​ ​Using​ ​the​ ​Wizard​. 

LDAP 
Linux​ ​systems​ ​out​ ​of​ ​the​ ​box​ ​utilize​ ​local​ ​users​ ​and​ ​groups​ ​for​ ​identities.​ ​ ​For​ ​larger​ ​enterprises,​ ​a 
centralized​ ​identity​ ​database​ ​is​ ​required​ ​not​ ​only​ ​for​ ​ease​ ​of​ ​administration,​ ​but​ ​also​ ​for​ ​security​ ​and 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​35


 

traceability.​ ​ ​The​ ​common​ ​widely​ ​accepted​ ​identity​ ​database​ ​and​ ​management​ ​protocol​ ​is​ ​LDAP.​ ​ ​LDAP​ ​is 
an​ ​integral​ ​part​ ​of​ ​enterprise​ ​systems​ ​such​ ​as​ ​Microsoft​ ​Active​ ​Directory. 
 
For​ ​enterprise​ ​deployments​ ​of​ ​EDH,​ ​Cloudera​ ​recommends​ ​integrating​ ​with​ ​LDAP. 

LDAP​ ​Authentication 
While​ ​Kerberos​ ​is​ ​the​ ​standard​ ​for​ ​strong​ ​authentication​ ​in​ ​EDH,​ ​there​ ​are​ ​certain​ ​instances​ ​where​ ​it 
makes​ ​sense​ ​for​ ​users​ ​to​ ​authenticate​ ​using​ ​a​ ​username​ ​and​ ​password​ ​instead​ ​of​ ​providing​ ​a​ ​Kerberos 
ticket.​ ​ ​Where​ ​this​ ​is​ ​most​ ​prevalent​ ​is​ ​for​ ​authentication​ ​when​ ​accessing​ ​ODBC/JDBC​ ​services​ ​like​ ​Hive 
and​ ​Impala,​ ​as​ ​well​ ​as​ ​authenticating​ ​users​ ​accessing​ ​web​ ​consoles​ ​such​ ​as​ ​Cloudera​ ​Manager,​ ​Cloudera 
Navigator,​ ​and​ ​Hue.​ ​ ​The​ ​system​ ​diagram​ ​showing​ ​web​ ​console​ ​authentication​ ​using​ ​LDAP​ ​is​ ​as​ ​follows: 

 
 
When​ ​enabling​ ​LDAP​ ​authentication,​ ​Cloudera​ ​strongly​ ​recommends​ ​using​ ​LDAP​ ​over​ ​TLS​ ​to​ ​ensure 
password​ ​information​ ​is​ ​not​ ​sent​ ​over​ ​the​ ​wire​ ​in​ ​the​ ​clear. 
 
To​ ​enable​ ​LDAP​ ​authentication​ ​for​ ​Hive,​ ​consult​ H ​ iveServer2​ ​Security​ ​Configuration​. 
 
To​ ​enable​ ​LDAP​ ​authentication​ ​for​ ​Impala,​ ​consult​ I​ mpala​ ​Authentication​. 

LDAP​ ​Authorization 
EDH​ ​authorization​ ​across​ ​many​ ​of​ ​the​ ​components​ ​relies​ ​on​ ​group​ ​memberships​ ​that​ ​a​ ​user​ ​belongs​ ​to. 
These​ ​group​ ​memberships​ ​provide​ ​direct​ ​authorization,​ ​such​ ​as​ ​the​ ​case​ ​with​ ​HDFS​ ​file​ ​permissions,​ ​or 
the​ ​group​ ​memberships​ ​can​ ​be​ ​used​ ​for​ ​more​ ​advanced​ ​authorization,​ ​such​ ​as​ ​constructing​ ​role-based 
access​ ​controls​ ​(RBAC)​ ​used​ ​with​ ​Sentry. 
 
With​ ​LDAP​ ​authorization,​ ​group​ ​memberships​ ​are​ ​ascertained​ ​by​ ​performing​ ​a​ ​lookup​ ​against​ ​the​ ​LDAP 
directory,​ ​as​ ​opposed​ ​to​ ​obtaining​ ​this​ ​information​ ​from​ ​locally​ ​defined​ ​groups​ ​on​ ​the​ ​operating​ ​system. 
There​ ​is​ ​a​ ​subtle​ ​distinction​ ​between​ ​the​ ​two,​ ​however,​ ​when​ ​considering​ ​Hadoop​ ​group​ ​mapping 
choices.​ ​ ​This​ ​is​ ​described​ ​in​ ​the​ ​next​ ​section. 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​36


 

Hadoop​ ​Group​ ​Mapping​ ​Choices 


Hadoop​ ​has​ ​the​ ​ability​ ​to​ ​discern​ ​which​ ​groups​ ​a​ ​user​ ​belongs​ ​to​ ​using​ ​several​ ​different​ ​choices.​ ​ ​The 
main​ ​two​ ​options​ ​to​ ​consider​ ​are​ ​using​ ​the​ ​local​ ​operating​ ​system​ ​to​ ​find​ ​the​ ​groups​ ​for​ ​a​ ​user,​ ​or​ ​to 
directly​ ​use​ ​LDAP​ ​integration​ ​to​ ​find​ ​the​ ​groups​ ​for​ ​a​ ​user. 
 
By​ ​default,​ ​Cloudera​ ​Manager​ ​configures​ ​Hadoop​ ​with​ ​ShellBasedUnixGroupsMapping​.​ ​ ​This 
configures​ ​Hadoop​ ​to​ ​make​ ​an​ ​operating​ ​system​ ​call,​ ​“​id​ ​-Gn​”,​ ​to​ ​find​ ​the​ ​list​ ​of​ ​groups​ ​for​ ​a​ ​user.​ ​ ​The 
other​ ​common​ ​choice​ ​is​ ​to​ ​use​ L​ dapGroupsMapping​.​ ​ ​This​ ​configures​ ​Hadoop​ ​to​ ​make​ ​LDAP​ ​calls​ ​to 
find​ ​group​ ​information​ ​from​ ​the​ ​LDAP​ ​directory​ ​and​ ​is​ ​often​ ​used​ ​to​ ​work​ ​around​ ​complex​ ​forrest/user 
naming​ ​issues. 
 
Cloudera​ ​recommends​ ​that​ ​ShellBasedUnixGroupsMapping​​ ​be​ ​used​ ​as​ ​the​ ​preferred​ ​option,​ ​even 
when​ ​LDAP​ ​integration​ ​is​ ​desired.​ ​ ​A​ ​best​ ​practice​ ​for​ ​LDAP​ ​integration​ ​is​ ​to​ ​integrate​ ​the​ ​underlying 
operating​ ​system​ ​with​ ​LDAP​ ​such​ ​that​ ​all​ ​applications,​ ​including​ ​EDH​ ​components,​ ​utilize​ ​the​ ​same 
identity​ ​database.​ ​ ​Configuring​ ​applications​ ​individually​ ​can​ ​lead​ ​to​ ​duplicate​ ​configurations,​ ​or​ ​worse, 
differing​ ​configurations​ ​that​ ​may​ ​violate​ ​internal​ ​security​ ​policies.​ ​ ​Additionally,​ ​operating​ ​system 
integration​ ​provides​ ​for​ ​more​ ​flexible​ ​and​ ​stable​ ​caching​ ​for​ ​LDAP​ ​lookups. 
 
Refer​ ​to​ C
​ onfiguring​ ​LDAP​ ​Group​ ​Mappings​​ ​for​ ​more​ ​information. 

Operating​ ​System​ ​Integration 


In​ ​order​ ​to​ ​take​ ​advantage​ ​of​ S​ hellBasedUnixGroupsMapping​​ ​with​ ​LDAP,​ ​as​ ​described​ ​in​ ​the​ ​last 
section,​ ​the​ ​Linux​ ​operating​ ​system​ ​itself​ ​must​ ​be​ ​integrated​ ​with​ ​LDAP.​ ​ ​There​ ​are​ ​many​ ​choices 
available​ ​for​ ​this​ ​type​ ​of​ ​integration.​ ​ ​Cloudera​ ​recommends​ ​using​ ​an​ ​integration​ ​software​ ​package​ ​that 
comes​ ​with​ ​some​ ​kind​ ​of​ ​support​ ​since​ ​Linux​ ​integration​ ​with​ ​LDAP​ ​is​ ​a​ ​critical​ ​component​ ​in​ ​the​ ​stack. 
Popular​ ​(and​ ​recommended)​ ​choices​ ​include​ ​Centrify​ ​Server​ ​Suite,​ ​Dell​ ​Authentication​ ​Services​ ​(formerly 
Quest​ ​QAS/VAS)​ ​and​ ​Red​ ​Hat​ ​SSSD. 
 
These​ ​integration​ ​suites​ ​not​ ​only​ ​provide​ ​LDAP​ ​integration,​ ​but​ ​also​ ​Kerberos​ ​integration. 

Role-Based​ ​Access​ ​Controls​ ​(RBAC) 


While​ ​the​ ​canonical​ ​example​ ​of​ ​authorization​ ​is​ ​file​ ​permissions​ ​in​ ​HDFS,​ ​other​ ​frameworks​ ​require​ ​a 
more​ ​extensive​ ​authorization​ ​model.​ ​ ​Role-based​ ​access​ ​controls​ ​(RBAC)​ ​provide​ ​a​ ​mechanism​ ​to​ ​control 
authorization​ ​by​ ​the​ ​type​ ​of​ ​work​ ​a​ ​user​ ​or​ ​application​ ​is​ ​doing.​ ​ ​The​ ​type​ ​of​ ​work​ ​being​ ​done​ ​is​ ​organized 
into​ ​a​ ​role,​ ​and​ ​this​ ​role​ ​is​ ​then​ ​mapped​ ​to​ ​one​ ​or​ ​more​ ​groups. 
 
For​ ​example,​ ​if​ ​a​ ​set​ ​of​ ​business​ ​analysts​ ​across​ ​several​ ​application​ ​teams​ ​all​ ​access​ ​the​ ​same​ ​types​ ​of 
data,​ ​it​ ​makes​ ​sense​ ​to​ ​create​ ​a​ ​business​ ​analyst​ ​role​ ​and​ ​map​ ​it​ ​to​ ​the​ ​one​ ​or​ ​more​ ​groups​ ​that 
represent​ ​the​ ​application​ ​teams.​ ​ ​This​ ​not​ ​only​ ​eases​ ​the​ ​burden​ ​on​ ​administration​ ​by​ ​grouping 
authorization​ ​to​ ​job​ ​function,​ ​but​ ​it​ ​also​ ​more​ ​clearly​ ​describes​ ​the​ ​purpose​ ​of​ ​authorization. 
 
In​ ​Cloudera​ ​EDH,​ ​Sentry​ ​provides​ ​RBAC​ ​functionality.​ ​ ​Sentry​ ​has​ ​two​ ​different​ ​privilege​ ​models​ ​for 
authorization:​ ​SQL​ ​and​ ​Search. 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​37


 

SQL 
The​ ​Sentry​ ​SQL​ ​privilege​ ​model​ ​governs​ ​access​ ​to​ ​Hive​ ​and​ ​Impala.​ ​ ​It​ ​provides​ ​the​ ​ability​ ​to​ ​define 
authorization​ ​controls​ ​at​ ​the​ ​Server,​ ​Database,​ ​Table​ ​and​ ​View​ ​level.​ ​ ​The​ ​complete​ ​SQL​ ​privilege​ ​model 
for​ ​Sentry​ ​is​ ​described​ ​at​ T
​ he​ ​Sentry​ ​Service​. 

Search 
The​ ​Sentry​ ​Search​ ​privilege​ ​model​ ​governs​ ​access​ ​to​ ​Solr.​ ​ ​It​ ​provides​ ​the​ ​ability​ ​to​ ​define​ ​authorization 
controls​ ​at​ ​the​ ​Collection​ ​or​ ​Document​ ​level.​ ​ ​The​ ​complete​ ​Search​ ​privilege​ ​model​ ​for​ ​Sentry​ ​is​ ​described 
at​ ​Configuring​ ​Sentry​ ​Authorization​ ​for​ ​Cloudera​ ​Search​. 

Kafka 
The​ ​Sentry​ ​Kafka​ ​privilege​ ​model​ ​governs​ ​access​ ​to​ ​Kafka.​ ​ ​It​ ​provides​ ​the​ ​ability​ ​to​ ​define​ ​authorization 
controls​ ​at​ ​ ​Cluster,​ ​Topic,​ ​ ​and​ ​Consumer​ ​Group​ ​levels.​ ​ ​The​ ​complete​ ​Kafka​ ​privilege​ ​model​ ​for​ ​Sentry​ ​is 
described​ ​at​ C ​ onfiguring​ ​Flume​ ​Security​ ​with​ ​Kafka​.  

HDFS​ ​Integration 
When​ ​using​ ​Sentry​ ​for​ ​SQL​ ​authorization,​ ​policies​ ​are​ ​defined​ ​on​ ​the​ ​assumption​ ​that​ ​users​ ​will​ ​access 
data​ ​using​ ​SQL​ ​via​ ​Hive​ ​and​ ​Impala​ ​interfaces.​ ​ ​This​ ​may​ ​not​ ​always​ ​be​ ​the​ ​case.​ ​ ​If​ ​users​ ​require​ ​access 
to​ ​the​ ​same​ ​data,​ ​but​ ​using​ ​other​ ​access​ ​paths​ ​such​ ​as​ ​Spark​ ​and​ ​MapReduce,​ ​it​ ​is​ ​necessary​ ​to​ ​also 
have​ ​Sentry​ ​policies​ ​replicated​ ​to​ ​the​ ​underlying​ ​HDFS​ ​directories​ ​and​ ​files. 
 
Cloudera​ ​recommends​ ​that​ ​Sentry​ ​HDFS​ ​ACL​ ​synchronization​ ​be​ ​turned​ ​on​ ​for​ ​all​ ​paths​ ​where 
Hive/Impala​ ​data​ ​is​ ​stored.​ ​ ​This​ ​ensures​ ​that​ ​a​ ​single​ ​set​ ​of​ ​Sentry​ ​policies​ ​governs​ ​access​ ​to​ ​the​ ​data, 
regardless​ ​of​ ​what​ ​the​ ​processing​ ​engine​ ​or​ ​access​ ​path​ ​is.​ ​ ​For​ ​information​ ​about​ ​Sentry​ ​HDFS​ ​ACL 
synchronization,​ ​consult​ S ​ ynchronizing​ ​HDFS​ ​ACLs​ ​and​ ​Sentry​ ​Permissions​. 

Wire​ ​Encryption 
Protecting​ ​data​ ​as​ ​it​ ​travels​ ​over​ ​the​ ​network​ ​is​ ​a​ ​critical​ ​component​ ​to​ ​security​ ​in​ ​Hadoop.​ ​ ​There​ ​are​ ​two 
primary​ ​methods​ ​for​ ​providing​ ​wire​ ​encryption​ ​in​ ​Cloudera​ ​EDH:​ ​Transport​ ​Layer​ ​Security​ ​(TLS)​ ​and​ ​SASL 
Quality​ ​of​ ​Protection​ ​(QoP). 

Transport​ ​Layer​ ​Security​ ​(TLS) 


TLS,​ ​the​ ​evolution​ ​of​ ​SSL,​ ​is​ ​the​ ​canonical​ ​choice​ ​for​ ​wire​ ​encryption.​ ​ ​EDH​ ​uses​ ​TLS​ ​to​ ​protect 
communications​ ​in​ ​many​ ​of​ ​the​ ​components​ ​in​ ​the​ ​stack.​ ​ ​TLS​ ​utilizes​ ​certificates​ ​to​ ​verify​ ​the​ ​identity​ ​of 
each​ ​party​ ​in​ ​the​ ​communication​ ​process.​ ​ ​A​ ​trusted​ ​certificate​ ​authority​ ​issues​ ​these​ ​certificates​ ​such 
that​ ​each​ ​party​ ​trusts​ ​the​ ​other,​ ​if​ ​and​ ​only​ ​if​ ​a​ ​trusted​ ​certificate​ ​authority​ ​issued​ ​the​ ​certificate 
presented​ ​to​ ​them. 
 
For​ ​an​ ​EDH​ ​deployment​ ​utilizing​ ​TLS​ ​across​ ​all​ ​components​ ​in​ ​the​ ​stack,​ ​it​ ​is​ ​necessary​ ​for​ ​every​ ​server​ ​in 
the​ ​cluster​ ​to​ ​have​ ​a​ ​unique​ ​certificate.​ ​ ​The​ ​certificates​ ​have​ ​the​ ​following 
requirements/recommendations: 
● Must​ ​be​ ​able​ ​to​ ​be​ ​used​ ​for​ ​both​ ​client​ ​and​ ​server​ ​authentication 
● Must​ ​be​ ​able​ ​to​ ​be​ ​used​ ​for​ ​digital​ ​signatures​ ​and​ ​encryption 
● Does​ ​not​ ​have​ ​to​ ​be​ ​a​ ​public​ ​certificate​ ​issued​ ​by​ ​a​ ​commercial​ ​certificate​ ​authority​ ​-​ ​certificates 
issued​ ​by​ ​an​ ​internal​ ​certificate​ ​authority​ ​is​ ​the​ ​recommended​ ​approach 
● Must​ ​have​ ​the​ ​certificate​ ​common​ ​name​ ​(CN)​ ​set​ ​to​ ​the​ ​server’s​ ​fully​ ​qualified​ ​domain​ ​name 
(FQDN),​ ​such​ ​as​ ​server1.example.com 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​38


 

 
In​ ​addition​ ​to​ ​the​ ​properties​ ​for​ ​the​ ​server​ ​certificates​ ​themselves,​ ​the​ ​following​ ​are​ ​also​ ​requirements: 
● Server​ ​certificate​ ​and​ ​private​ ​key​ ​must​ ​have​ ​a​ ​copy​ ​in​ ​PEM​ ​format 
● Server​ ​certificate​ ​and​ ​private​ ​key​ ​must​ ​have​ ​a​ ​copy​ ​in​ ​a​ ​Java​ ​KeyStore​ ​(JKS)​ ​format 
● Root​ ​certificate​ ​authority​ ​certificate​ ​must​ ​have​ ​a​ ​copy​ ​in​ ​PEM​ ​format 
● Root​ ​certificate​ ​authority​ ​certificate​ ​must​ ​have​ ​a​ ​copy​ ​in​ ​a​ ​Java​ ​KeyStore​ ​(JKS)​ ​format 
● Intermediate​ ​certificate​ ​authority​ ​certificates​ ​must​ ​be​ ​part​ ​of​ ​the​ ​server​ ​certificate​ ​formats 
 
 
   

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​39


 

Preparing​ ​certificates​ ​in​ ​the​ ​PEM​ ​and​ ​JKS​ ​formats​ ​require​ ​Java​ ​(​keytool​)​ ​and​ ​OpenSSL​ ​libraries.​ ​ ​The 
following​ ​diagram​ ​describes​ ​this​ ​process: 

 
 

1​ - ​ ​ ​openssl​ ​rsa​ ​-in​ ​$(hostname​ ​-f).key.temp​ ​-out​ ​$(hostname​ ​-f).key


2​ - ​ ​ ​cat​ ​server.pem​ ​int-CA.pem​ ​>​ ​$(hostname​ ​-f).pem
3​ - ​ ​ ​openssl​ ​pkcs12​ ​-export​ ​-in​ ​$(hostname​ ​-f).pem​ ​-inkey​ ​\
​ ​ ​ ​ ​ ​ ​$(hostname​ ​-f).key​ ​-out​ ​$(hostname​ ​-f).pfx
4​ ​-​ ​keytool​ ​-importkeystore​ ​-srcstoretype​ ​PKCS12​ ​-srckeystore​ ​\
​ ​ ​ ​ ​ ​ ​$(hostname​ ​-f).pfx​ ​-destkeystore​ ​$(hostname​ ​-f).jks
5​ ​-​ ​keytool​ ​-importcert​ ​-file​ ​root-CA.pem​ ​-alias​ ​root-CA​ ​\
​ ​ ​ ​ ​ ​ ​-keystore​ ​truststore.jks
6​ ​-​ ​cp​ ​$JAVA_HOME/jre/lib/security/cacerts​ ​\
​ ​ ​ ​ ​ ​ ​ ​$JAVA_HOME/jre/lib/security/jssecacerts
7​ ​-​ ​keytool​ ​-importcert​ ​-file​ ​root-CA.pem​ ​-alias​ ​root-CA​ ​\
​ ​ ​ ​ ​ ​ ​ ​-keystore​ ​$JAVA_HOME/jre/lib/security/jssecacerts
 
It​ ​is​ ​recommended​ ​to​ ​place​ ​all​ ​of​ ​the​ ​resulting​ ​certificate​ ​files​ ​into​ ​a​ ​common​ ​place​ ​that​ ​exists​ ​on​ ​every 
node.​ ​ ​For​ ​example,​ /
​ opt/cloudera/security​. 
 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​40


 

In​ ​order​ ​to​ ​configure​ ​services​ ​globally,​ ​the​ ​server​ ​certificate​ ​files​ ​on​ ​each​ ​machine​ ​need​ ​to​ ​have​ ​a 
common​ ​name.​ ​ ​To​ ​achieve​ ​this,​ ​use​ ​symbolic​ ​links: 

ln​ ​-s​ ​/opt/cloudera/security/x509/$(hostname​ ​-f).key​ ​\


​ ​ ​/opt/cloudera/security/x509/server.key
ln​ ​-s​ ​/opt/cloudera/security/x509/$(hostname​ ​-f).pem​ ​\
​ ​ ​/opt/cloudera/security/x509/server.pem
ln​ ​-s​ ​/opt/cloudera/security/jks/$(hostname​ ​-f).jks​ ​\
​ ​ ​/opt/cloudera/security/jks/server.jks

Additionally,​ ​since​ ​the​ ​certificates​ ​will​ ​be​ ​used​ ​by​ ​multiple​ ​components,​ ​appropriate​ ​permissions​ ​need​ ​to 
be​ ​set​ ​to​ ​both​ ​allow​ ​service​ ​users​ ​access,​ ​but​ ​not​ ​allow​ ​world​ ​access.​ ​ ​This​ ​can​ ​be​ ​done​ ​using​ ​Unix 
extended​ ​ACLs,​ ​a​ ​feature​ ​that​ ​is​ ​enabled​ ​by​ ​default​ ​by​ ​most​ ​modern​ ​Linux​ ​operating​ ​systems.​ ​ ​An 
example​ ​script​ ​that​ ​sets​ ​permissions​ ​for​ ​all​ ​Cloudera​ ​EDH​ ​users​ ​is​ ​as​ ​follow: 

#!/bin/bash

ROOTDIR=/opt/cloudera/security
HOSTNAME=$(hostname​ ​-f)
EDH_USERS=(cloudera-scm​ ​flume​ ​hbase​ ​hdfs​ h ​ ive​ ​httpfs​ ​hue
impala kms llama​ ​mapred​ ​oozie​ ​solr​ ​spark​ s​ qoop​ ​sqoop2​ ​yarn​ ​zookeeper)

for​ ​EDH_USER​ ​in​ ​"${EDH_USERS[@]}"


do
​ ​ setfacl -m​ ​"u:$EDH_USER:r--"​ ​$ROOTDIR/jks/$HOSTNAME.jks
​ ​ setfacl -m​ ​"u:$EDH_USER:r--"​ ​$ROOTDIR/x509/$HOSTNAME.key
​ ​ setfacl -m​ ​"u:$EDH_USER:r--"​ ​$ROOTDIR/x509/$HOSTNAME.pem
done

For​ ​a​ ​list​ ​of​ ​the​ ​latest​ ​EDH​ ​users,​ ​consult​ ​the​ ​Cloudera​ ​documentation:​ ​Hadoop​ ​Users​ ​in​ ​Cloudera 
Manager​ ​and​ ​CDH​. 
 
For​ ​steps​ ​to​ ​enable​ ​TLS​ ​in​ ​EDH,​ ​consult​ ​the​ ​documentation:​ ​Encryption​ ​Mechanisms​ ​Overview​.​ ​For​ ​Hive, 
refer​ ​to​ ​Configuring​ ​Encrypted​ ​Communication​ ​Between​ ​HiveServer2​ ​and​ ​Client​ ​Drivers​. 

SASL​ ​Quality​ ​of​ ​Protection​ ​(QoP) 


Another​ ​mechanism​ ​for​ ​wire​ ​encryption​ ​is​ ​the​ ​usage​ ​of​ ​Quality​ ​of​ ​Protection,​ ​or​ ​QoP.​ ​ ​This​ ​is​ ​a​ ​module 
available​ ​in​ ​the​ ​Java​ ​SASL​ ​suite​ ​of​ ​security​ ​components.​ ​ ​It​ ​is​ ​easy​ ​to​ ​implement​ ​(from​ ​a​ ​developer​ ​point 
of​ ​view)​ ​and​ ​is​ ​an​ ​extension​ ​to​ ​Kerberos​ ​authentication. 
 
Some​ ​of​ ​the​ ​components​ ​in​ ​EDH​ ​have​ ​the​ ​ability​ ​to​ ​utilize​ ​QoP​ ​for​ ​wire​ ​encryption.​ ​ ​There​ ​are​ ​three 
possible​ ​modes​ ​for​ ​QoP:​ ​authentication​ ​(a ​ uth​),​ ​integrity​ ​(​auth-int​),​ ​and​ ​confidentiality​ ​(a ​ uth-conf​). 
The​ ​authentication​ ​mode​ ​only​ ​protects​ ​the​ ​network​ ​channel​ ​during​ ​authentication.​ ​ ​The​ ​second​ ​mode 
verifies​ ​the​ ​integrity​ ​of​ ​all​ ​data​ ​sent​ ​over​ ​the​ ​network​ ​channel​ ​in​ ​addition​ ​to​ ​protecting​ ​the​ ​authentication 
channel.​ ​ ​The​ ​last​ ​mode​ ​uses​ ​encryption​ ​in​ ​addition​ ​to​ ​protecting​ ​authentication​ ​and​ ​verifying​ ​integrity. 
 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​41


 

The​ ​components​ ​that​ ​use​ ​SASL​ ​QoP​ ​are​ ​HDFS​ ​and​ ​HBase. 
 
For​ ​HDFS,​ ​refer​ ​to​ ​How​ ​to​ ​Configure​ ​Encrypted​ ​Transport​ ​for​ ​HDFS​ ​Data​​ ​for​ ​more​ ​information. 
  
Use​ ​the​ ​hbase.rpc.protection​ ​property​ ​to​ ​set​ ​the​ ​HBase​ ​RPC​ ​security​ ​mechanism​ ​.​ ​It​ ​should​ ​be​ ​inserted​ ​as 
both​ ​a​ ​Service-Wide​ ​and​ ​Gateway​ ​advanced​ ​configuration​ ​snippet​ ​for​ ​HBase.​ ​Valid​ ​values,​ ​in​ ​order​ ​of 
increasing​ ​protection​ ​are:​ ​authentication​,​ ​integrity​,​ ​and​ ​privacy​.​ ​For​ ​more​ ​information​ ​see​ ​the 
documentation​ ​on​ ​configuring​ ​HBase​ ​transport​ ​encryption​. 
 
Example,​ ​ensure​ ​transport​ ​encryption: 
<property>
<name>hbase.rpc.protection</name>
<value>privacy</value>
</property>

Encryption-at-Rest​ ​and​ ​Key​ ​Management 


Protecting​ ​data​ ​while​ ​it​ ​is​ ​stored​ ​using​ ​encryption​ ​is​ ​fundamental​ ​in​ ​protecting​ ​against​ ​certain​ ​types​ ​of 
attacks.​ ​ ​EDH​ ​has​ ​the​ ​ability​ ​to​ ​provide​ ​for​ ​protection​ ​on​ ​both​ ​data​ ​persisted​ ​in​ ​HDFS,​ ​as​ ​well​ ​as 
protection​ ​that​ ​is​ ​persisted​ ​outside​ ​of​ ​HDFS​ ​in​ ​more​ ​general​ ​areas​ ​such​ ​as​ ​staging​ ​directories,​ ​database 
storage,​ ​and​ ​log​ ​files. 
 
This​ ​section​ ​describes​ ​the​ ​at-rest​ ​encryption​ ​options​ ​available,​ ​and​ ​how​ ​to​ ​securely​ ​store​ ​and​ ​manage​ ​the 
keys​ ​used​ ​to​ ​protect​ ​data​ ​at​ ​rest. 

HDFS​ ​Encryption 
HDFS​ ​encryption​ ​provides​ ​encryption​ ​at​ ​rest​ ​at​ ​the​ ​application​ ​layer.​ ​ ​This​ ​allows​ ​for​ ​the​ ​encryption​ ​of 
logical​ ​paths​ ​in​ ​HDFS​ ​in​ ​what​ ​is​ ​defined​ ​as​ ​encryption​ ​zones.​ ​ ​The​ ​encryption​ ​zones​ ​specify​ ​a​ ​directory 
path​ ​in​ ​HDFS,​ ​and​ ​a​ ​name​ ​of​ ​an​ ​encryption​ ​key​ ​to​ ​use.​ ​ ​This​ ​1:1​ ​mapping​ ​between​ ​encryption​ ​zone​ ​and 
encryption​ ​key​ ​allows​ ​for​ ​a​ ​separation​ ​of​ ​security​ ​zones,​ ​which​ ​is​ ​important​ ​for​ ​multi-tenant 
environments. 
 
For​ ​example,​ ​a​ ​sensitive​ ​source​ ​A​ ​may​ ​have​ ​a​ ​security​ ​requirement​ ​for​ ​encryption​ ​at​ ​rest​ ​using​ ​a 
non-shared​ ​encryption​ ​key.​ ​ ​A​ ​sensitive​ ​source​ ​B​ ​may​ ​also​ ​have​ ​the​ ​same​ ​security​ ​requirement.​ ​ ​In​ ​this 
example,​ ​ingesting​ ​source​ ​A​ ​and​ ​source​ ​B​ ​into​ ​different​ ​encryption​ ​zones​ ​allows​ ​them​ ​to​ ​have​ ​separate 
and​ ​distinct​ ​encryption​ ​keys. 
 
HDFS​ ​encryption​ ​requires​ ​two​ ​separate​ ​components:​ ​a​ ​key​ ​management​ ​service​ ​(KMS),​ ​and​ ​a​ ​key​ ​store. 
The​ ​key​ ​management​ ​service​ ​serves​ ​as​ ​a​ ​proxy​ ​between​ ​clients,​ ​HDFS,​ ​and​ ​the​ ​key​ ​store.​ ​ ​This​ ​creates​ ​a 
security​ ​boundary​ ​between​ ​HDFS​ ​and​ ​the​ ​unencrypted​ ​keys​ ​used​ ​to​ ​encrypt/decrypt​ ​data. 
 
CDH​ ​bundles​ ​a​ ​default​ ​KMS​ ​that​ ​is​ ​backed​ ​by​ ​a​ ​file-based​ ​keystore,​ ​which​ ​is​ ​effectively​ ​a​ ​Java​ ​KeyStore 
object.​ ​ ​This​ ​KMS​ ​implementation​ ​combines​ ​the​ ​KMS​ ​and​ ​key​ ​store​ ​functions​ ​into​ ​a​ ​single​ ​service.​ ​ ​This 
implementation​ ​should​ ​not​ ​be​ ​used​ ​in​ ​a​ ​production​ ​environment​ ​with​ ​sensitive​ ​data.​ ​ ​It​ ​is​ ​useful​ ​to​ ​deploy 
in​ ​development​ ​environments​ ​to​ ​understand​ ​architecture​ ​and​ ​cluster​ ​administration​ ​tasks.​ ​ ​A​ ​separate 
KMS​ ​implementation​ ​that​ ​uses​ ​Navigator​ ​Key​ ​Trustee​ ​as​ ​the​ ​key​ ​store​ ​is​ ​Cloudera’s​ ​recommended 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​42


 

implementation.​ ​ ​This​ ​separates​ ​the​ ​KMS​ ​and​ ​key​ ​store​ ​roles​ ​and​ ​allows​ ​them​ ​to​ ​be​ ​separated​ ​on 
different​ ​servers,​ ​which​ ​in​ ​turn​ ​provides​ ​better​ ​key​ ​protection.​ ​ ​Navigator​ ​Key​ ​Trustee​ ​is​ ​discussed​ ​later. 
 
HDFS​ ​encryption​ ​involves​ ​two​ ​different​ ​keys.​ ​ ​The​ ​first​ ​key,​ ​as​ ​described​ ​early,​ ​is​ ​directly​ ​related​ ​to​ ​the 
encryption​ ​zone.​ ​ ​It​ ​is​ ​often​ ​called​ ​the​ ​encryption​ ​zone​ ​key,​ ​or​ ​EZK​ ​for​ ​short.​ ​ ​The​ ​second​ ​key​ ​is​ ​for​ ​the 
encryption​ ​and​ ​decryption​ ​of​ ​an​ ​actual​ ​file​ ​in​ ​HDFS.​ ​ ​Every​ ​file​ ​in​ ​an​ ​encryption​ ​zone​ ​has​ ​a​ ​unique 
encryption​ ​key.​ ​ ​This​ ​key​ ​is​ ​called​ ​a​ ​data​ ​encryption​ ​key,​ ​or​ ​DEK​ ​for​ ​short.​ ​ ​Finally,​ ​another​ ​object​ ​is​ ​the 
encrypted​ ​DEK,​ ​or​ ​EDEK.​ ​ ​This​ ​object​ ​results​ ​from​ ​encrypting​ ​the​ ​DEK​ ​using​ ​the​ ​EZK.​ ​ ​The​ ​EDEK​ ​is 
persisted​ ​as​ ​part​ ​of​ ​the​ ​NameNode​ ​metadata.​ ​ ​EZKs​ ​are​ ​persisted​ ​in​ ​the​ ​key​ ​provider. 
 
Because​ ​EDEKs​ ​are​ ​part​ ​of​ ​the​ ​NameNode​ ​metadata,​ ​it​ ​is​ ​important​ ​to​ ​understand​ ​the​ ​memory​ ​footprint 
of​ ​this​ ​extra​ ​metadata.​ ​ ​The​ ​additional​ ​attribute​ ​that​ ​is​ ​added​ ​for​ ​an​ ​encrypted​ ​file​ ​in​ ​HDFS​ ​is​ ​about 
50-200​ ​bytes​ ​on​ ​average.​ ​ ​So​ ​if​ ​an​ ​encryption​ ​zone​ ​in​ ​HDFS​ ​contains​ ​1​ ​million​ ​files,​ ​this​ ​increases​ ​the 
memory​ ​footprint​ ​of​ ​the​ ​NameNode​ ​metadata​ ​by​ ​about​ ​50-200​ ​MB. 
 
To​ ​summarize: 
● All​ ​files​ ​use​ ​a​ ​unique​ ​encryption​ ​key,​ ​called​ ​a​ ​DEK 
● All​ ​DEKs​ ​in​ ​the​ ​same​ ​encryption​ ​zone​ ​are​ ​encrypted​ ​using​ ​the​ ​encryption​ ​zone​ ​key,​ ​or​ ​EZK 
● The​ ​resulting​ ​encrypted​ ​DEK​ ​is​ ​called​ ​a​ ​EDEK 
● EDEKs​ ​are​ ​persisted​ ​as​ ​part​ ​of​ ​the​ ​NameNode​ ​metadata​ ​at​ ​about​ ​50-200​ ​bytes​ ​each 
● EZKs​ ​are​ ​persisted​ ​in​ ​the​ ​key​ ​provider 
● DEKs​ ​are​ ​not​ ​persisted​ ​anywhere 
 
The​ ​workflow​ ​for​ ​HDFS​ ​encryption​ ​on​ ​writing​ ​looks​ ​like​ ​the​ ​following​ ​(After​ ​the​ ​encryption​ ​key​ ​has​ ​been 
setup​ ​and​ ​an​ ​encryption​ ​zone​ ​is​ ​created): 
 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​43


 

 
 
The​ ​workflow​ ​for​ ​HDFS​ ​encryption​ ​on​ ​reading​ ​looks​ ​like​ ​the​ ​following: 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​44


 

 
 
Based​ ​on​ ​the​ ​workflows,​ ​several​ ​important​ ​security​ ​facts​ ​are​ ​noteworthy: 
● HDFS​ ​(NameNodes,​ ​DataNodes,​ ​etc.)​ ​only​ ​have​ ​access​ ​to​ ​the​ ​EDEKs,​ ​which​ ​cannot​ ​be​ ​used​ ​to 
decrypt​ ​data 
● HDFS​ ​clients​ ​do​ ​not​ ​have​ ​access​ ​to​ ​EZKs,​ ​but​ ​do​ ​have​ ​access​ ​to​ ​DEKs 
● The​ ​KMS​ ​has​ ​access​ ​to​ ​both​ ​EZKs​ ​and​ ​DEKs 
● Neither​ ​HDFS​ ​nor​ ​clients​ ​have​ ​access​ ​to​ ​the​ ​key​ ​store 
 
HDFS​ ​encryption​ ​administration​ ​is​ ​exposed​ ​through​ ​several​ ​command​ ​line​ ​functions.​ ​ ​These​ ​functions 
and​ ​additional​ ​information​ ​are​ ​described​ ​in​ ​HDFS​ ​Transparent​ ​Encryption​.

Navigator​ ​Encrypt 
Navigator​ ​Encrypt​ ​provides​ ​at-rest​ ​encryption​ ​for​ ​data​ ​that​ ​lives​ ​outside​ ​of​ ​HDFS.​ ​ ​This​ ​includes​ ​staging 
areas​ ​before​ ​data​ ​is​ ​ingested​ ​into​ ​HDFS,​ ​log​ ​directories,​ ​temporary​ ​file​ ​storage,​ ​database​ ​storage 
directories,​ ​and​ ​component​ ​storage​ ​areas​ ​such​ ​as​ ​Flume​ ​and​ ​Kafka. 
 
Navigator​ ​Encrypt​ ​is​ ​a​ ​complementary​ ​at-rest​ ​encryption​ ​solution​ ​to​ ​HDFS​ ​encryption.​ ​ ​Cloudera​ ​does​ ​not 
support​ ​using​ ​Navigator​ ​Encrypt​ ​to​ ​encrypt​ ​HDFS​ ​data​ ​directories. 

Navigator​ ​Key​ ​Trustee 


Navigator​ ​Key​ ​Trustee​ ​is​ ​the​ ​most​ ​important​ ​part​ ​of​ ​a​ ​Cloudera​ ​encryption​ ​implementation.​ ​ ​Encrypting 
data,​ ​regardless​ ​of​ ​the​ ​mechanism,​ ​is​ ​simply​ ​applying​ ​well-known​ ​mathematical​ ​algorithms​ ​to​ ​transform 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​45


 

data.​ ​ ​The​ ​difficulty​ ​is​ ​ensuring​ ​that​ ​the​ ​encryption​ ​keys​ ​used​ ​must​ ​be​ ​kept​ ​in​ ​a​ ​secure​ ​place​ ​to​ ​ensure 
that​ ​unauthorized​ ​users​ ​do​ ​not​ ​decrypt​ ​encrypted​ ​data.​ ​ ​Navigator​ ​Key​ ​Trustee​ ​provides​ ​secure​ ​storage 
for​ ​sensitive​ ​key​ ​material,​ ​as​ ​well​ ​as​ ​other​ ​objects​ ​such​ ​as​ ​SSL​ ​certificates​ ​and​ ​passwords. 
 
Navigator​ ​Key​ ​Trustee’s​ ​architecture​ ​includes​ ​a​ ​Postgres​ ​database​ ​that​ ​stores​ ​all​ ​key​ ​material.​ ​ ​Also,​ ​as 
of​ ​version​ ​3.7,​ ​Navigator​ ​Key​ ​Trustee​ ​supports​ ​a​ ​master/slave​ ​architecture​ ​with​ ​synchronous​ ​database 
replication.​ ​ ​This​ ​ensures​ ​that​ ​Navigator​ ​Key​ ​Trustee​ ​is​ ​not​ ​a​ ​single​ ​point​ ​of​ ​failure. 
 
Integration​ ​with​ ​hardware​ ​security​ ​modules​ ​(HSMs)​ ​is​ ​supported.​ ​ ​Currently​ ​Navigator​ ​Key​ ​Trustee 
supports​ ​integration​ ​with​ ​HSMs​ ​from​ ​Thales​ ​and​ ​SafeNet. 

System​ ​Architecture 
Based​ ​on​ ​the​ ​components​ ​described​ ​in​ ​this​ ​section,​ ​the​ ​following​ ​system​ ​architecture​ ​represents 
Cloudera’s​ ​recommendation​ ​for​ ​a​ ​production​ ​deployment: 

With​ ​this​ ​architecture,​ ​Cloudera​ ​recommends​ ​that​ ​each​ ​of​ ​the​ ​Key​ ​Trustee​ ​Servers​ ​and​ ​Key​ ​Trustee​ ​KMS 
be​ ​located​ ​on​ ​their​ ​own​ ​machine,​ ​separate​ ​from​ ​any​ ​other​ ​EDH​ ​components.​ ​ ​This​ ​provides​ ​some 
additional​ ​security​ ​guarantees​ ​and​ ​opportunities​ ​to​ ​further​ ​separate​ ​administration​ ​(separation​ ​of​ ​duties). 
Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​46
 

 
For​ ​a​ ​development​ ​environment,​ ​the​ ​architecture​ ​is​ ​much​ ​simpler: 

With​ ​this​ ​implementation,​ ​the​ ​KMS​ ​is​ ​using​ ​a​ ​file-based​ ​keystore,​ ​thus​ ​HA​ ​is​ ​not​ ​possible​.​ ​ ​Also,​ ​with​ ​this 
architecture​ ​it​ ​is​ ​assumed​ ​that​ ​since​ ​it​ ​is​ ​a​ ​development​ ​environment,​ ​it​ ​is​ ​feasible​ ​to​ ​collocate​ ​the​ ​KMS 
with​ ​other​ ​cluster​ ​services,​ ​such​ ​as​ ​on​ ​a​ ​utility​ ​node​ ​that​ ​contains​ ​Cloudera​ ​Manager.​ ​ ​Again,​ ​this 
configuration​ ​should​ ​not​ ​be​ ​used​ ​in​ ​production​,​ ​as​ ​it​ ​does​ ​not​ ​provide​ ​the​ ​same​ ​security​ ​guarantees​ ​as 
the​ ​architecture​ ​with​ ​Navigator​ ​Key​ ​Trustee. 

Intermediate/Spill​ ​File​ ​Encryption 

MapReduce​ ​(MR2) 
When​ ​MapReduce​ ​jobs​ ​execute,​ ​temporary​ ​files​ ​are​ ​created​ ​and​ ​written​ ​to​ ​local​ ​disk​ ​outside​ ​of​ ​HDFS.​ ​ ​If 
the​ ​original​ ​source​ ​data​ ​in​ ​HDFS​ ​is​ ​sensitive​ ​and​ ​encrypted,​ ​the​ ​temporary​ ​files​ ​that​ ​are​ ​derived​ ​from​ ​the 
sensitive​ ​data​ ​must​ ​also​ ​be​ ​protected. 
 
In​ ​MapReduce​ ​version​ ​2​ ​(on​ ​YARN),​ ​this​ ​is​ ​possible​ ​to​ ​configure​ ​intermediate​ ​file​ ​encryption.​ ​ ​This​ ​is​ ​not 
available​ ​on​ ​MapReduce​ ​version​ ​1.​ ​ ​The​ ​main​ ​caveat​ ​with​ ​intermediate​ ​file​ ​encryption​ ​is​ ​that​ ​it​ ​is​ ​job 
configuration​ ​property,​ ​thus​ ​it​ ​is​ ​set​ ​in​ ​a​ ​client​ ​configuration.​ ​ ​Clients​ ​can​ ​choose​ ​to​ ​toggle​ ​intermediate 
file​ ​encryption​ ​on​ ​or​ ​off.​ ​ ​It​ ​is​ ​recommended​ ​to​ ​set​ ​intermediate​ ​file​ ​encryption​ ​to​ ​on​ ​by​ ​default,​ ​when 
HDFS​ ​encryption​ ​is​ ​used.​ ​ ​This​ ​ensures​ ​that​ ​jobs​ ​will​ ​use​ ​encryption​ ​by​ ​default,​ ​unless​ ​explicitly 
overridden​ ​by​ ​a​ ​client​ ​configuration.​ ​ ​This​ ​reduces​ ​the​ ​chance​ ​that​ ​sensitive​ ​data​ ​could​ ​be​ ​written​ ​to​ ​disk 
unencrypted. 
 
To​ ​enable​ ​MapReduce​ ​intermediate​ ​file​ ​encryption,​ ​the​ ​following​ ​advanced​ ​configuration​ ​snippet​ ​is 
necessary​ ​in​ ​mapred-site.xml​ ​for​ ​the​ ​Gateway​ ​role: 
 
<property>
<name>mapreduce.job.encrypted-intermediate-data</name>
<value>true</value>
</property>

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​47


 

By​ ​default,​ ​intermediate​ ​file​ ​encryption​ ​uses​ ​128-bit​ ​keys.​ ​ ​To​ ​change​ ​this​ ​(e.g.​ ​to​ ​256),​ ​also​ ​add​ ​the 
following​ ​advanced​ ​configuration​ ​snippet: 

<property>
<name>mapreduce.job.encrypted-intermediate-data-key-size-bits</name>
<value>256</value>
</property>

Impala 
Like​ ​MapReduce,​ ​Impala​ ​also​ ​writes​ ​temporary​ ​files​ ​to​ ​disk​ ​when​ ​the​ ​data​ ​does​ ​not​ ​fit​ ​wholly​ ​into 
memory.​ ​ ​Starting​ ​with​ ​Impala​ ​2.0,​ ​Impala​ ​daemons​ ​can​ ​encrypt​ ​spill​ ​files​ ​before​ ​writing​ ​to​ ​disk.​ ​ ​To 
enable​ ​this​ ​feature,​ ​check​ ​the​ ​box​ ​for​ D
​ isk​ ​Spill​ ​Encryption​​ ​under​ ​the​ ​Impala​ ​Daemon​ ​Security 
configuration​ ​in​ ​Cloudera​ ​Manager. 

Cloudera​ ​Navigator 
Cloudera​ ​Navigator​ ​sits​ ​at​ ​the​ ​heart​ ​of​ ​data​ ​governance​ ​capabilities​ ​in​ ​EDH.​ ​ ​It​ ​provides​ ​fundamental 
features​ ​including​ ​auditing,​ ​data​ ​lineage,​ ​and​ ​metadata​ ​tagging. 
 
Cloudera​ ​recommends​ ​that​ ​an​ ​EDH​ ​be​ ​setup​ ​with​ ​Navigator​ ​as​ ​soon​ ​as​ ​the​ ​cluster​ ​is​ ​installed.​ ​ ​This 
ensures​ ​that​ ​all​ ​auditing​ ​and​ ​data​ ​lineage​ ​is​ ​captured​ ​at​ ​the​ ​earliest​ ​point,​ ​prior​ ​to​ ​users​ ​and​ ​data​ ​being 
onboarded​ ​to​ ​the​ ​cluster. 

External​ ​Integration 
Cloudera​ ​Navigator​ ​provides​ ​a​ ​wealth​ ​of​ ​information​ ​and​ ​capabilities​ ​that​ ​external​ ​systems​ ​can​ ​leverage. 
The​ ​first​ ​is​ ​audit​ ​data.​ ​ ​Navigator​ ​includes​ ​a​ ​mechanism​ ​to​ ​send​ ​all​ ​audit​ ​records​ ​to​ ​external​ ​systems​ ​by 
using​ ​a​ ​separate​ ​log4j​ ​appender.​ ​ ​This​ ​log4j​ ​appender​ ​can​ ​be​ ​attached​ ​to​ ​using​ ​any​ ​of​ ​the​ ​default 
appenders,​ ​such​ ​as​ ​a​ ​SysLogAppender​ ​or​ ​a​ ​RollingFileAppender,​ ​or​ ​a​ ​custom​ ​appender​ ​that​ ​is​ ​developed 
to​ ​integrate​ ​with​ ​an​ ​external​ ​system​ ​in​ ​a​ ​specialized​ ​way. 
 
Information​ ​about​ ​using​ ​log4j​ ​to​ ​capture​ ​Navigator​ ​audit​ ​logs,​ ​consult​ ​the​ ​documentation:​ ​Configuring 
Audit​ ​and​ ​Log​ ​Properties​. 
 
Another​ ​way​ ​to​ ​integrate​ ​external​ ​systems​ ​with​ ​Navigator​ ​is​ ​by​ ​way​ ​of​ ​the​ ​REST​ ​APIs.​ ​ ​The​ ​REST​ ​APIs​ ​are 
useful​ ​for​ ​both​ ​reading​ ​data​ ​collected​ ​and​ ​stored​ ​in​ ​Navigator,​ ​to​ ​include​ ​metadata​ ​tags​ ​and​ ​lineage,​ ​but 
also​ ​for​ ​writing​ ​custom​ ​metadata​ ​back​ ​into​ ​Navigator. 
 
Full​ ​documentation​ ​about​ ​the​ ​Navigator​ ​REST​ ​API​ ​can​ ​be​ ​found​ ​in​ ​the​ ​Help​ ​menu​ ​of​ ​Cloudera​ ​Navigator. 

 
   

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​48


 

Common​ ​Questions 
Multiple​ ​Data​ ​Centers 
Cloudera​ ​EDH​ ​deployments​ ​are​ ​restricted​ ​to​ ​single​ ​data​ ​centers.​ ​Single​ ​clusters​ ​spanning​ ​data​ ​centers 
are​ ​not​ ​supported. 

Operating​ ​Systems 
A​ ​list​ ​of​ ​supported​ ​operating​ ​systems​ ​for​ ​CDH​ ​and​ ​Cloudera​ ​Manager​ ​can​ ​be​ ​found​ ​here​. 

Storage​ ​Options​ ​and​ ​Configuration 


The​ ​HDFS​ ​data​ ​directories​ ​should​ ​use​ ​local​ ​storage,​ ​which​ ​provides​ ​all​ ​the​ ​benefits​ ​of​ ​keeping​ ​compute 
resources​ ​close​ ​to​ ​the​ ​storage​ ​and​ ​not​ ​reading​ ​remotely​ ​over​ ​the​ ​network. 
 
The​ ​root​ ​device​ ​size​ ​for​ ​Cloudera​ ​Enterprise​ ​clusters​ ​should​ ​be​ ​at​ ​least​ ​500​ ​GB​ ​to​ ​allow​ ​parcels​ ​and​ ​logs 
to​ ​be​ ​stored. 
 
To​ ​guard​ ​against​ ​data​ ​center​ ​failures,​ ​you​ ​can​ ​set​ ​up​ ​a​ ​scheduled​ ​distcp​ ​operation​ ​to​ ​persist​ ​data​ ​to​ ​AWS 
S3​ ​(see​ ​the​ ​examples​ ​in​ ​the​ ​distcp​ ​documentation​)​ ​or​ ​leverage​ ​Cloudera​ ​Manager’s​ B ​ ackup​ ​and​ ​Data 
Recovery​ ​(BDR)​​ ​features​ ​to​ ​backup​ ​data​ ​to​ ​another​ ​running​ ​cluster. 

Relational​ ​Databases 
Cloudera​ ​Enterprise​ ​deployments​ ​require​ ​relational​ ​databases​ ​for​ ​the​ ​following​ ​components:​ ​Cloudera 
Manager,​ ​Cloudera​ ​Navigator,​ ​Hive​ ​metastore,​ ​Hue,​ ​Sentry,​ ​Oozie,​ ​and​ ​others.​ ​The​ ​database​ ​credentials 
are​ ​required​ ​during​ ​Cloudera​ ​Enterprise​ ​installation. 
 
Refer​ ​to​ C
​ loudera​ ​Manager​ ​and​ ​Managed​ ​Service​ ​Datastores​​ ​for​ ​more​ ​information. 
 
Important: 
The​ ​embedded​ ​PostgreSQL​ ​database​ ​is​ ​not​ ​supported​ ​for​ ​use​ ​in​ ​production​ ​systems. 
 
 
 

   

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​49


 

References 
Cloudera​ ​Enterprise 
Product​ ​Documentation 
Hardware​ ​Requirements​ ​Guide 
Requirements​ ​and​ ​Supported​ ​Versions 
 
Cloudera​ ​Services​ ​&​ ​Support 

 
Acknowledgements 
Many​ ​individuals​ ​from​ ​Cloudera​ ​contributed​ ​to​ ​this​ ​document,​ ​spread​ ​across​ ​engineering,​ ​marketing, 
professional​ ​services,​ ​support,​ ​etc. 
 
Alan​ ​Jackoway,​ ​Alex​ ​Breshears,​ ​Alex​ ​Moundalexis,​ ​Ben​ ​Spivey,​ ​David​ ​Powell,​ ​Dwai​ ​Lahiri,​ ​Hung​ ​Pham, 
Jake​ ​Miller,​ ​Jeongho​ ​Park,​ ​Jeremy​ ​Beard,​ ​Jim​ ​Heyssel,​ ​Kaufman​ ​Ng,​ ​Michael​ ​Ridley,​ ​Morris​ ​Hicks, 
Mubashir​ ​Kazia,​ ​Rachel​ ​Asher,​ ​Rick​ ​Halihan,​ ​Rob​ ​Siwicki,​ ​Roger​ ​Ding,​ ​Ronan​ ​Stokes,​ ​Ryan​ ​Fishel,​ ​Scott 
Pace,​ ​Sean​ ​Busbey,​ ​Sean​ ​Kane,​ ​Todd​ ​Grayson,​ ​Travis​ ​Campbell,​ ​Tristan​ ​Stevens,​ ​Vartika​ ​Singh,​ ​and​ ​Zoltan 
Kiss. 
 

Cloudera​ ​Reference​ ​Architecture​ ​for​ ​Bare​ ​Metal​ ​Deployments​ |​ ​ ​ ​50

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy