MapR初体验
作者:钟龙伟
一、MapR是什么?
MapR是MapR Technologies, Inc的一个产品,号称下一代Hadoop,使Hadoop变为一个速度更快、可靠性更高、更易于管理、使用更加方便的分布式计算服务和存储平台,同时性能也不断提高。它将极大的扩大了Hadoop的使用范围和方式。它包含了开源社区的许多流行的工具和功能,例如Hbase、Hive。它还100%和Apache Hadoop的API兼容。它能够为客户节约一半的硬件资源消耗,使更多的组织能够利用海量数据分析的力量提高竞争优势。目前有两个版本,M3和M5,其中M3是免费的,M5为收费版,有试用期。具体功能差别见:http://www.mapr.com/products/mapr-editions.html。
1、MapR的整体结构:
二、为什么要MapR?
MapR比之其他Hadoop发行版具有三大优越性:EASY、DEPENDABLE、FAST。
Easy:
- 有强大的管理工具:MapR Control System,方便的查看集群的状态,作业执行情况,各项配置等;
- Mount Hadoop with Direct Access NFS™ . This allows users to mount the entire Hadoop cluster as an NFS volume . Users can simply browse files, automatically open associated applications with a mouse click, or drag-and-drop files and directories into and out of the cluster. Additionally, standard command-line tools and UNIX applications and utilities (such as Grep, Tar, Sort, or Tail) can be used directly on data in the cluster. With other Hadoop distributions, the user must copy the data out of the cluster in order to use standard tools . 不同于HDFS的一次写入,MapR允许修改、重写文件,可并发读写任一文件。
- 安装配置简单,完整发布版包括:HBase, Pig, Hive, Mahout, HBase, Cascading, ZooKeeper等。(但其实M3没有默认安装HBase, Pig, Hive, Mahout,需要自己另行安装)
- 和Hadoop – MapReduce, HDFS ,HBase 100% API兼容。
Dependable:
- 分布式的NameNode,避免单点失败;(M5才有)
- 镜像,MapR的镜像让你可以根据你的Recovery Time objectives设定策略,自动镜像你集群内、集群间或者站点间的数据,(M5才有)
- 快照,采用redirect-on-write技术,速度快,可以设定快照计划或者随机使用快照,操作简单。(M5才有)
- 使多个作业安全地共享集群资源,MapR可以给用户设定资源配额,跟踪容量的使用情况。
Fast:
- 比其他的发行版快,而且节约一半的硬件资源;
- Higher MapReduce and HBase throughput (2X – 5X)
- Optimized shuffle
- Higher random I/O (5X to 100X)
- 自动、透明的压缩节省了网络和磁盘开销;
- Lockless architecture scales linearly with number of cores and nodes
在MapR的官方网站http://www.mapr.com/products/why-mapr.html上有更详细的介绍,有兴趣可以进一步了解。
三、如何使用MapR
MapR 可以像hadoop那样支持单点安装伪集群,但在集群环境下才能真正体现它的威力。我这里在四台服务器上安装MapR Edition 3 ,主要介绍M3-RHEL or CentOS安装。
Hardware Requirements
每个节点必须满足下表所列的要求:
Minimum Requirements | Recommended |
|
|
Disk
- At least one free unmounted drive or partition, 50 GB or more(参见安装前准备->disksetup)
- At least 10 GB of free space on the operating system partition
Software
确保在所有的节点上安装的是64位的操作系统,目前MapR仅支持以下操作系统:
- CentOS 5.x
- Red Hat Enterprise Linux 5.x or 6.0
- Ubuntu 9.04 or above
主机名唯一(使用虚拟机的需注意这一点)
每个节点安装JDK:
- Sun Java JDK 6(一定要是sun的,系统已安装了openjdk的要注意设置sun的为默认jdk)
安装前准备
最好用root用户执行整个过程,我之前用其他用户碰到了一些问题。这里统一默认使用root用户。
规划:
确定集群规模,以及在每台机器上安装的服务。详见:
http://www.mapr.com/doc/display/MapR/Planning+Roles
我这里是:
Node1:CLDB,FileServer,JobTracker,NFS,TaskTracker,WebServer,ZooKeeer。
Node2:FileServer,TaskTracker,ZooKeeer。
Node3:FileServer,TaskTracker,ZooKeeer。
Node4:FileServer,TaskTracker。
disksetup:
setting up disks for MapR是一个重要步骤,查看机器是否有这样一块磁盘空间:具体参考:http://www.mapr.com/doc/display/MapR/Setting+Up+Disks+for+MapR。
在每台机器上创建文件/tmp/disks.txt,列出本机所有可被MapR使用的磁盘。
由于我的机器上没有符合要求的磁盘空间,我的做法是:(这种方法不能很好发挥MapR威力,仅用来测试)
/sbin/modprobe loop
mkdir /disk1/mapr-disks
dd if=/dev/zero of=/disk1/mapr-disks/loop0 bs=1G count=20
/sbin/losetup -f
/sbin/losetup /dev/loop0 /disk1/mapr-disks/loop0
echo /dev/loop0 > /tmp/disks.txt
SSH keyless:
确保服务器之间SSH无密码访问,也很简单,就是在每台服务器执行“ssh-keygen -t rsa”,回车不输入密码,生成密钥和公钥,在某台机器上的/root/.ssh目录下新建authorized_keys文件,将所有机器的公钥内容添加到authorized_keys,再将authorized_keys复制到其他机器的/root/.ssh目录下。在每台机器上SSH登录所有机器(包括自己),第一次会要求输入密码,并记录为已知主机,下次就不用再输了。
安装
1、在所有节点的/etc/yum.repos.d/下创建maprtech.repo文件, 内容为:(注意baseurl中的archive,官方网站上的文档有错)
[maprtech]
name=MapR Technologies
baseurl=http://archive.mapr.com/redhat
enabled=1
gpgcheck=0
protect=1
2、在 node 1, 执行命令:
yum install mapr-cldb mapr-fileserver mapr-jobtracker mapr-nfs mapr-tasktracker mapr-webserver mapr-zookeeper
在 node 2和node 3, 执行命令:
yum install mapr-fileserver mapr-tasktracker mapr-zookeeper
在nodes 4, 执行命令:
yum install mapr-fileserver mapr-tasktracker
3、配置和磁盘格式化,在所有节点执行:
/opt/mapr/server/configure.sh -C <node1IP> -Z <node1IP>,<node2IP>,<node3IP>
/opt/mapr/server/disksetup -F /tmp/disks.txt
4、启动zookeeper,在node1, node2,node3,执行命令:
/etc/init.d/mapr-zookeeper start
注意:MapR中用的是zookeeper3.3.2,有个bug,启动不成功之后再次启动会报错,详见:https://issues.apache.org/jira/browse/ZOOKEEPER-1061。
5、在node1执行:
/etc/init.d/mapr-warden start
在node1用以下命令给用户授权:
/opt/mapr/bin/maprcli acl edit -type cluster -user root:fc
6、许可证书:
在安装证书之前NFS是不可用的,所以在日志中会看到很多ERROR,有两种方法安装证书:通过可视化页面MapR Control System或者命令行。
MapR Control System方法参考:
http://www.mapr.com/doc/display/MapR/M3+-+RHEL+or+CentOS的第11步。
命令行:先在http://mapr.com/register/login.html注册用户,然后注册一个集群,Cluster ID可以在node1上执行:maprcli license showid得到,注册完后得到证书,在node1上新建文件lice保存证书内容,执行:
maprcli license add -is_file true –license lice
证书安装成功,可通过maprcli license list查看。
7、启动NFS,在node1执行:
/opt/mapr/bin/maprcli node services -nodes node1IP -nfs start
8、在node2、node3、node4执行:
etc/init.d/mapr-warden start
9、通过https://node1IP:8443,登录MapR Control System,Enjoy it !
10、在终端进入hadoop下bin目录,输入hadoop mfs -ls / ,查看文件系统;
11、在终端执行
hadoop jar /opt/mapr/hadoop/hadoop-0.20.2/hadoop-0.20.2-dev-examples.jar pi 2 50
更多信息参考:http://www.mapr.com/doc/display/MapR/Home