作者:Orgad Kimchi
2013 年 1 月发布(2013 年 2 月更新)
|
本文首先简要介绍 Hadoop,之后给出了使用一个 NameNode、一个辅助 NameNode 和三个 DataNode 搭建 Hadoop 集群的示例。前提是您应对 Oracle Solaris 区域和网络管理有一个基本的了解。
Apache Hadoop 软件是一个框架,允许使用简单编程模型分布式处理多个计算机集群上的大数据集。
以下是使用 Oracle Solaris 区域搭建 Hadoop 集群的好处:
为存储数据,Hadoop 使用了 Hadoop 分布式文件系统 (HDFS),它提供高吞吐量的应用数据访问,适合具有大数据集的应用。有关 Hadoop 和 HDFS 的更多信息,请参见 http://hadoop.apache.org/。
Hadoop 集群构建块如下所示:
在本文所示示例中,将使用 Oracle Solaris 区域、ZFS 和网络虚拟化技术安装所有 Hadoop 集群构建块。图 1 显示了架构:
图 1.架构
本文采用“2012 年 10 月 12 日发布的 1.0.4”版本。
/usr/local
目录(如果该目录不存在);稍后将与各区域共享该目录。root@global_zone:~# mkdir -p /usr/local
/usr/local
:root@global_zone:~# cp /tmp/hadoop-1.0.4.tar.gz /usr/local
root@global_zone:~# cd /usr/local root@global_zone:~# gzip -dc /usr/local/hadoop-1.0.4.tar.gz | tar -xvf -
root@global_zone:~# groupadd hadoop
root@global_zone:~# useradd -g hadoop hadoop root@global_zone:~# passwd hadoop
root@global_zone:~# mkdir -p /export/home/hadoop root@global_zone:~# chown hadoop:hadoop /export/home/hadoop/
root@global_zone:~# mv /usr/local/hadoop-1.0.4 /usr/local/hadoop root@global_zone:~# chown -R hadoop:hadoop /usr/local/hadoop*
文件名 | 说明 |
---|---|
hadoop-env.sh |
指定 Hadoop 使用的环境变量设置。 |
core-site.xml |
指定所有 Hadoop 后台程序和客户端的相关参数。 |
hdfs-site.xml |
指定 HDFS 后台程序和客户端使用的参数。 |
mapred-site.xml |
指定 MapReduce 后台程序和客户端使用的参数。 |
masters |
包含运行辅助 NameNode 的计算机列表。 |
slaves |
包含运行 DataNode 和 TaskTracker 后台程序对的计算机名称列表。 |
要详细了解这些配置文件如何控制 Hadoop 框架,请参见 http://hadoop.apache.org/docs/r1.0.4/api/org/apache/hadoop/conf/Configuration.html。
conf
目录:root@global_zone:~# cd /usr/local/hadoop/conf
hadoop-env.sh
文件,取消注释并更改 export 代码行,应如下所示:export JAVA_HOME=/usr/java export HADOOP_LOG_DIR=/var/log/hadoop
masters
文件,应如下所示:sec-name-node
slaves
文件,应如下所示:data-node1 data-node2 data-node3
core-site.xml
文件,应如下所示:<configuration> <property> <name>fs.default.name</name> <value>hdfs://name-node</value> </property> </configuration>
hdfs-site.xml
文件,应如清单 1 所示:<configuration> <property> <name>dfs.data.dir</name> <value>/hdfs/data/</value> </property> <property> <name>dfs.name.dir</name> <value>/hdfs/name/</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration>
清单 1. hdfs-site.xml
文件
mapred-site.xml
文件,应如下所示:<configuration> <property> <name>mapred.job.tracker</name> <value>name-node:8021</value> </property> </configuration>
应确保使用网络时间协议 (NTP) 同步 Hadoop 区域上的系统时钟。在本示例中,全局区域配置为 NTP 服务器。
注:最好选择可以作为专用时间同步源的 NTP 服务器,这样在关闭计算机进行计划维护时不会对其他服务产生负面影响。
以下示例显示了如何配置 NTP 服务器。
root@global_zone:~# grep -v ^# /etc/inet/ntp.conf server 127.127.1.0 prefer broadcast 224.0.1.1 ttl 4 enable auth monitor driftfile /var/ntp/ntp.drift statsdir /var/ntp/ntpstats/ filegen peerstats file peerstats type day enable filegen loopstats file loopstats type day enable filegen clockstats file clockstats type day enable keys /etc/inet/ntp.keys trustedkey 0 requestkey 0 controlkey 0 root@global_zone:~# touch /var/ntp/ntp.drift
清单 2.NTP 服务器配置文件
root@global_zone:~# svcadm enable ntp
root@global_zone:~# svcs -a | grep ntp online 16:04:15 svc:/network/ntp:default
比如,与 1 Gb 的物理网络连接相比,同一系统上的 Oracle Solaris 区域可受益于极高的网络 I/O 吞吐容量(高达四倍速度)和极低的延迟。对于 Hadoop 集群,这意味着 DataNode 可大大提高 HDFS 块的复制速度。
有关网络虚拟化基准测试的详细信息,请参见“如何控制应用的网络带宽”。
为不同区域创建一系列虚拟网络接口 (VNIC):
root@global_zone:~# dladm create-vnic -l net0 name_node1 root@global_zone:~# dladm create-vnic -l net0 secondary_name1 root@global_zone:~# dladm create-vnic -l net0 data_node1 root@global_zone:~# dladm create-vnic -l net0 data_node2 root@global_zone:~# dladm create-vnic -l net0 data_node3
root@global_zone:~# zfs create -o mountpoint=/zones rpool/zones
name-node
区域,如清单 3 所示:root@global_zone:~# zonecfg -z name-node Use 'create' to begin configuring a new zone. Zonecfg:name-node> create create: Using system default template 'SYSdefault' zonecfg:name-node> set autoboot=true zonecfg:name-node> set limitpriv="default,sys_time" zonecfg:name-node> set zonepath=/zones/name-node zonecfg:name-node> add fs zonecfg:name-node:fs> set dir=/usr/local/hadoop zonecfg:name-node:fs> set special=/usr/local/hadoop zonecfg:name-node:fs> set type=lofs zonecfg:name-node:fs> set options=[ro,nodevices] zonecfg:name-node:fs> end zonecfg:name-node> add net zonecfg:name-node:net> set physical=name_node1 zonecfg:name-node:net> end zonecfg:name-node> verify zonecfg:name-node> exit
清单 3.创建 name-node
区域
sec-name-node
区域,如清单 4 所示:root@global_zone:~# zonecfg -z sec-name-node Use 'create' to begin configuring a new zone. Zonecfg:sec-name-node> create create: Using system default template 'SYSdefault' zonecfg:sec-name-node> set autoboot=true zonecfg:sec-name-node> set limitpriv="default,sys_time" zonecfg:sec-name-node> set zonepath=/zones/sec-name-node zonecfg:sec-name-node> add fs zonecfg:sec-name-node:fs> set dir=/usr/local/hadoop zonecfg:sec-name-node:fs> set special=/usr/local/hadoop zonecfg:sec-name-node:fs> set type=lofs zonecfg:sec-name-node:fs> set options=[ro,nodevices] zonecfg:sec-name-node:fs> end zonecfg:sec-name-node> add net zonecfg:sec-name-node:net> set physical=secondary_name1 zonecfg:sec-name-node:net> end zonecfg:sec-name-node> verify zonecfg:sec-name-node> exit
清单 4.创建 sec-name-node
区域
在本步骤中,我们可以利用 Oracle Solaris 区域虚拟化技术与 Oracle Solaris 中内置的 ZFS 文件系统的集成。
Hadoop 优秀实践是为每个 DataNode 使用单独的硬盘。因此,每个 DataNode 区域都有自己的硬盘,以便提供更好的 I/O 分配,如图 2 所示。
图 2.为每个 DataNode 使用单独的磁盘
表 2 显示了我们将创建的 Hadoop 区域配置汇总:
表 2.区域汇总功能 | 区域名称 | ZFS 挂载点 | VNIC 名称 | IP 地址 |
---|---|---|---|---|
NameNode | name-node |
/zones/name-node |
name_node1 |
192.168.1.1 |
辅助 NameNode | sec-name-node |
/zones/sec-name-node |
secondary_name1 |
192.168.1.2 |
DataNode | data-node1 |
/zones/data-node1 |
data_node1 |
192.168.1.3 |
DataNode | data-node2 |
/zones/data-node2 |
data_node2 |
192.168.1.4 |
DataNode | data-node3 |
/zones/data-node3 |
data_node3 |
192.168.1.5 |
root@global_zone:~# format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c7t0d0 <LSI-MR9261-8i-2.50-135.97GB> /pci@0,0/pci8086,340a@3/pci1000,9263@0/sd@0,0 1. c7t1d0 <LSI-MR9261-8i-2.50-135.97GB> /pci@0,0/pci8086,340a@3/pci1000,9263@0/sd@1,0 2. c7t2d0 <LSI-MR9261-8i-2.50-135.97GB> /pci@0,0/pci8086,340a@3/pci1000,9263@0/sd@2,0
root@global_zone:~# zpool create -O compression=on data-node1-pool c7t0d0 root@global_zone:~# zpool create -O compression=on data-node2-pool c7t1d0 root@global_zone:~# zpool create -O compression=on data-node3-pool c7t2d0 root@global_zone:~# zfs create -o mountpoint=/zones/data-node1 data-node1-pool/data-node1 root@global_zone:~# zfs create -o mountpoint=/zones/data-node2 data-node2-pool/data-node2 root@global_zone:~# zfs create -o mountpoint=/zones/data-node3 data-node3-pool/data-node3
root@global_zone:~# chmod 700 /zones/data-node1 root@global_zone:~# chmod 700 /zones/data-node2 root@global_zone:~# chmod 700 /zones/data-node3
zonecfg zonepath
属性指向您创建的 ZFS 文件系统,如清单 5 所示。root@global_zone:~# zonecfg -z data-node1 Use 'create' to begin configuring a new zone. zonecfg:data-node1> create create: Using system default template 'SYSdefault' zonecfg:data-node1> set autoboot=true zonecfg:data-node1> set limitpriv="default,sys_time" zonecfg:data-node1> set zonepath=/zones/data-node1 zonecfg:data-node1> add fs zonecfg:data-node1:fs> set dir=/usr/local/hadoop zonecfg:data-node1:fs> set special=/usr/local/hadoop zonecfg:data-node1:fs> set type=lofs zonecfg:data-node1:fs> set options=[ro,nodevices] zonecfg:data-node1:fs> end zonecfg:data-node1> add net zonecfg:data-node1:net> set physical=data_node1 zonecfg:data-node1:net> end zonecfg:data-node1> verify zonecfg:data-node1> commit zonecfg:data-node1> exit root@global_zone:~# zonecfg -z data-node2 Use 'create' to begin configuring a new zone. zonecfg:data-node2> create create: Using system default template 'SYSdefault' zonecfg:data-node2> set autoboot=true zonecfg:data-node2> set limitpriv="default,sys_time" zonecfg:data-node2> set zonepath=/zones/data-node2 zonecfg:data-node2> add fs zonecfg:data-node2:fs> set dir=/usr/local/hadoop zonecfg:data-node2:fs> set special=/usr/local/hadoop zonecfg:data-node2:fs> set type=lofs zonecfg:data-node2:fs> set options=[ro,nodevices] zonecfg:data-node2:fs> end zonecfg:data-node2> add net zonecfg:data-node2:net> set physical=data_node2 zonecfg:data-node2:net> end zonecfg:data-node2> verify zonecfg:data-node2> commit zonecfg:data-node2> exit root@global_zone:~# zonecfg -z data-node3 Use 'create' to begin configuring a new zone. zonecfg:data-node3> create create: Using system default template 'SYSdefault' zonecfg:data-node3> set autoboot=true zonecfg:data-node3> set limitpriv="default,sys_time" zonecfg:data-node3> set zonepath=/zones/data-node3 zonecfg:data-node3> add fs zonecfg:data-node3:fs> set dir=/usr/local/hadoop zonecfg:data-node3:fs> set special=/usr/local/hadoop zonecfg:data-node3:fs> set type=lofs zonecfg:data-node3:fs> set options=[ro,nodevices] zonecfg:data-node3:fs> end zonecfg:data-node3> add net zonecfg:data-node3:net> set physical=data_node3 zonecfg:data-node3:net> end zonecfg:data-node3> verify zonecfg:data-node3> commit zonecfg:data-node3> exit
清单 5.设置 zonecfg zonepath
属性
name-node
区域;稍后我们将克隆此区域,以提高区域的创建速度。root@global_zone:~# zoneadm -z name-node install The following ZFS file system(s) have been created: rpool/zones/name-node Progress being logged to /var/log/zones/zoneadm.20130106T134835Z.name-node.install Image: Preparing at /zones/name-node/root.
name-node
区域,并查看所创建区域的状态,如清单 6 所示:root@global_zone:~# zoneadm -z name-node boot root@global_zone:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 1 name-node running /zones/name-node solaris excl - sec-name-node configured /zones/sec-name-node solaris excl - data-node1 configured /zones/data-node1 solaris excl - data-node2 configured /zones/data-node2 solaris excl - data-node3 configured /zones/data-node3 solaris excl root@global_zone:~# zlogin -C name-node
清单 6.启动 name-node
区域
name-node
区域的以下配置提供区域的主机信息:name-node
。name_node1
的 IP 地址是 192.168.1.1/24。在本文中,我们将使用 /etc/hosts
作名称解析,因此不会设置 DNS 进行主机名称解析。
root@name-node:~# pkg install jdk-6
root@name-node:~# which java /usr/bin/java root@name-node:~# java -version java version "1.6.0_35" Java(TM) SE Runtime Environment (build 1.6.0_35-b10) Java HotSpot(TM) Server VM (build 20.10-b01, mixed mode)
name-node
区域内创建一个 Hadoop 用户:root@name-node:~# groupadd hadoop root@name-node:~# useradd -g hadoop hadoop root@name-node:~# passwd hadoop root@name-node:~# mkdir -p /export/home/hadoop root@name-node:~# chown hadoop:hadoop /export/home/hadoop
root@name-node:~# pkg install ntp
root@name-node:~# grep -v ^# /etc/inet/ntp.conf server global_zone prefer slewalways yes disable pll
root@name-node:~# svcadm enable ntp
/etc/hosts
中添加 Hadoop 集群成员的主机名和 IP 地址:root@name-node:~# cat /etc/hosts ::1 localhost 127.0.0.1 localhost loghost 192.168.1.1 name-node 192.168.1.2 sec-name-node 192.168.1.3 data-node1 192.168.1.4 data-node2 192.168.1.5 data-node3
注:如果您使用全局区域作为 NTP 服务器,还必须将其主机名和 IP 地址添加到 /etc/hosts
。
name-node
区域上为 Hadoop 用户设置基于 SSH 密钥的身份验证,以便实现无密码登录辅助 DataNode 和 DataNode:root@name-node # su - hadoop hadoop@name-node $ ssh-keygen -t dsa -P "" -f ~/.ssh/id_dsa hadoop@name-node $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$HOME/.profile
:hadoop@name-node $ cat $HOME/.profile # Set JAVA_HOME export JAVA_HOME=/usr/java # Add Hadoop bin/ directory to PATH export PATH=$PATH:/usr/local/hadoop/bin
hadoop@name-node $ hadoop version Hadoop 1.0.4 Subversion https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1393290 Compiled by hortonfo on Wed Oct 3 05:13:58 UTC 2012 From source with checksum fe2baea87c4c81a2c505767f3f9b71f4
root@name-node:~# mkdir /var/log/hadoop root@name-node:~# chown hadoop:hadoop /var/log/hadoop
sec-name-node
区域,作为 name-node
的克隆:root@global_zone:~# zoneadm -z name-node shutdown root@global_zone:~# zoneadm -z sec-name-node clone name-node
sec-name-node
区域:root@global_zone:~# zoneadm -z sec-name-node boot root@global_zone:~# zlogin -C sec-name-node
sec-name-node
区域的最终配置:sec-name-node
。secondary_name1
。none
。data-node1
、data-node2
和 data-node3
执行类似步骤:data-node1
执行以下操作:root@global_zone:~# zoneadm -z data-node1 clone name-node root@global_zone:~# zoneadm -z data-node1 boot root@global_zone:~# zlogin -C data-node1
data-node1
。data_node1
。none
。data-node2
执行以下操作:root@global_zone:~# zoneadm -z data-node2 clone name-node root@global_zone:~# zoneadm -z data-node2 boot root@global_zone:~# zlogin -C data-node2
data-node2
。data_node2
。none
。data-node3
执行以下操作:root@global_zone:~# zoneadm -z data-node3 clone name-node root@global_zone:~# zoneadm -z data-node3 boot root@global_zone:~# zlogin -C data-node3
data-node3
。data_node3
。none
。name_node
区域:root@global_zone:~# zoneadm -z name-node boot
root@global_zone:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 10 sec-name-node running /zones/sec-name-node solaris excl 12 data-node1 running /zones/data-node1 solaris excl 14 data-node2 running /zones/data-node2 solaris excl 16 data-node3 running /zones/data-node3 solaris excl 17 name-node running /zones/name-node solaris excl
要在不使用 Hadoop 用户密码的情况下验证 SSH 访问,请执行以下操作:
name_node
通过 SSH 登录 name-node
(即登录到自己):hadoop@name-node $ ssh name-node The authenticity of host 'name-node (192.168.1.1)' can't be established. RSA key fingerprint is 04:93:a9:e0:b7:8c:d7:8b:51:b8:42:d7:9f:e1:80:ca. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'name-node,192.168.1.1' (RSA) to the list of known hosts.
sec-name-node
和 DataNode。当您尝试第二次通过 SSH 登录时,应该就不会提示您将主机添加到已知密钥列表了。验证所有 Hadoop 区域在 /etc/hosts
中均有以下主机条目:
# cat /etc/hosts ::1 localhost 127.0.0.1 localhost loghost 192.168.1.1 name-node 192.168.1.2 sec-name-node 192.168.1.3 data-node1 192.168.1.4 data-node2 192.168.1.5 data-node3
注:如果您使用全局区域作为 NTP 服务器,还必须将其主机名和 IP 地址添加到 /etc/hosts
。
root@name-node:~# mkdir -p /hdfs/name root@name-node:~# chown -R hadoop:hadoop /hdfs/ root@name-node:~# su - hadoop hadoop@name-node:$ /usr/local/hadoop/bin/hadoop namenode -format 13/01/06 20:00:32 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = name-node/192.168.1.1 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 1.0.4 STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1393290; compiled by 'hortonfo' on Wed Oct 3 05:13:58 UTC 2012 ************************************************************/
清单 7.格式化 HDFS 文件系统
data-node1
、data-node2
和 data-node3
)上,创建一个 Hadoop 数据目录来存储 HDFS 块: root@data-node1:~# mkdir -p /hdfs/data root@data-node1:~# chown -R hadoop:hadoop /hdfs/ root@data-node2:~# mkdir -p /hdfs/data root@data-node2:~# chown -R hadoop:hadoop /hdfs/ root@data-node3:~# mkdir -p /hdfs/data root@data-node3:~# chown -R hadoop:hadoop /hdfs/?
表 3 描述了启动脚本。
表 3.启动脚本文件名 | 说明 |
---|---|
start-dfs.sh |
启动 Hadoop DFS 后台程序、NameNode 和 DataNode。此脚本要在 start-mapred.sh 之前使用。 |
stop-dfs.sh |
停止 Hadoop DFS 后台程序。 |
start-mapred.sh |
启动 Hadoop MapReduce 后台程序 JobTracker 和 TaskTracker。 |
stop-mapred.sh |
停止 Hadoop MapReduce 后台程序。 |
name-node
区域,使用以下命令启动 Hadoop DFS 后台程序、NameNode 和 DataNode。hadoop@name-node:$ start-dfs.sh starting namenode, logging to /var/log/hadoop/hadoop--namenode-name-node.out data-node2: starting datanode, logging to /var/log/hadoop/hadoop-hadoop-datanode-data-node2.out data-node1: starting datanode, logging to /var/log/hadoop/hadoop-hadoop-datanode-data-node1.out data-node3: starting datanode, logging to /var/log/hadoop/hadoop-hadoop-datanode-data-node3.out sec-name-node: starting secondarynamenode, logging to /var/log/hadoop/hadoop-hadoop-secondarynamenode-sec-name-node.out
hadoop@name-node:$ start-mapred.sh starting jobtracker, logging to /var/log/hadoop/hadoop--jobtracker-name-node.out data-node1: starting tasktracker, logging to /var/log/hadoop/hadoop-hadoop-tasktracker-data-node1.out data-node3: starting tasktracker, logging to /var/log/hadoop/hadoop-hadoop-tasktracker-data-node3.out data-node2: starting tasktracker, logging to /var/log/hadoop/hadoop-hadoop-tasktracker-data-node2.out
hadoop@name-node:$ hadoop dfsadmin -report Configured Capacity: 171455269888 (159.68 GB) Present Capacity: 169711053357 (158.06 GB) DFS Remaining: 169711028736 (158.06 GB) DFS Used: 24621 (24.04 KB) DFS Used%: 0% Under replicated blocks: 0 Blocks with corrupt replicas: 0 Missing blocks: 0 ------------------------------------------------- Datanodes available: 3 (3 total, 0 dead) ...
清单 8.查看集群状态
您可以在地址为 http://<namenode IP address>:50070/dfshealth.jsp
的 NameNode Web 状态页面上找到同样的信息。
图 3.集群汇总
MapReduce 是一个使用计算机集群针对大规模数据集处理可并行问题的框架。有关 MapReduce 的更多信息,请参见 http://en.wikipedia.org/wiki/MapReduce。
我们将使用 WordCount 示例,该示例读取文本文件并计算用词频率。输入和输出均由文本文件组成,其中每行包含一个单词以及该词使用的次数,使用制表符分隔。有关 WordCount 的更多信息,请参见 http://wiki.apache.org/hadoop/WordCount。
/tmp/data
)中:《The Outline of Science》,第 1 卷(共 4 卷),作者:Arthur Thomson。hadoop@name-node:$ hadoop dfs -copyFromLocal /tmp/data/ /hdfs/data
hadoop@name-node:$ hadoop dfs -ls /hdfs/data Found 1 items -rw-r--r-- 3 hadoop supergroup 661664 2013-01-07 19:45 /hdfs/data/20417-8.txt
hadoop@name-node:$ hadoop jar /usr/local/hadoop/hadoop-examples-1.0.4.jar wordcount /hdfs/data /hdfs/data/data-output 13/01/07 15:20:21 INFO input.FileInputFormat: Total input paths to process : 1 13/01/07 15:20:21 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 13/01/07 15:20:21 WARN snappy.LoadSnappy: Snappy native library not loaded 13/01/07 15:20:22 INFO mapred.JobClient: Running job: job_201301071307_0006 13/01/07 15:20:23 INFO mapred.JobClient: map 0% reduce 0% 13/01/07 15:20:38 INFO mapred.JobClient: map 100% reduce 0% 13/01/07 15:20:50 INFO mapred.JobClient: map 100% reduce 100% 13/01/07 15:20:55 INFO mapred.JobClient: Job complete: job_201301071307_0006 13/01/07 15:20:55 INFO mapred.JobClient: Counters: 26 13/01/07 15:20:55 INFO mapred.JobClient: Job Counters
清单 9.启动 MapReduce 作业
hadoop@name-node:$ hadoop dfs -ls /hdfs/data/data-output Found 3 items -rw-r--r-- 3 hadoop supergroup 0 2013-01-07 15:20 /hdfs/data/data-output/_SUCCESS drwxr-xr-x - hadoop supergroup 0 2013-01-07 15:20 /hdfs/data/data-output/_logs -rw-r--r-- 3 hadoop supergroup 196288 2013-01-07 15:20 /hdfs/data/data-output/part-r-00000
root@name-node:~# zfs create -o encryption=on rpool/export/output Enter passphrase for 'rpool/export/output': Enter again:
root@name-node:~# chown hadoop:hadoop /export/output/
root@name-node:~# su - hadoop Oracle Corporation SunOS 5.11 11.1 September 2012 hadoop@name-node:$ hadoop dfs -getmerge /hdfs/data/data-output /export/output/
hadoop@name-node:$ head /export/output/data-output "A 2 "Alpha 1 "Alpha," 1 "An 2 "And 1 "BOILING" 2 "Batesian" 1 "Beta 2
root@name-node:~# zfs key -u rpool/export/output
如果命令成功,该数据集不可访问,并将卸载。
如果要挂载该 ZFS 文件系统,需要提供密码短语:
root@name-node:~# zfs mount rpool/export/output Enter passphrase for 'rpool/export/output':
通过使用密码短语,可确保只有知道密码短语的人才能查看输出文件。有关 ZFS 加密的更多信息,请参见“如何管理 ZFS 数据加密”。
在本文中,我们了解了如何利用 Oracle Solaris 区域、ZFS 以及网络虚拟化技术构建一个多节点 Hadoop 集群。
Orgad Kimchi 是 Oracle(之前任职于 Sun Microsystems)ISV 工程小组的首席软件工程师。5 年来,他一直专注于虚拟化和云计算技术。
修订版 1.4,2013 年 11 月 25 日 |