通过Sahara部署Hadoop集群

声明:

本博客欢迎转载,但请保留原作者信息,并请注明出处!

作者:郭德清

团队:华为杭州OpenStack团队

在前一篇文章对Sahara的安装配置做了下总结,今天主要对如何在Sahara环境上部署Hadoop集群做一个总结,也把自己部署的时候填过的坑总结下,避免其他人在同一个坑掉下。

1.  上传镜像

这边选择的是vanilla的镜像,下载地址:http://docs.openstack.org/developer/sahara/userdoc/vanilla_plugin.html ,我选择的是sahara-icehouse-vanilla-1.2.1-centos-6.5.qcow2。通过下面的命令上传镜像到glance:

glance image-create --name sahara-icehouse-vanilla-1.2.1-centos --file ./sahara-icehouse-vanilla-1.2.1-centos-6.5.qcow2 --disk-format qcow2 --container-format bare

注册镜像到Sahara:

sahara image-register --id a00f66cd-81ee-4bb8-af9a-5cb50e3602a7 --username sahara 

vanilla的镜像注册后,需要添加两个标签:vanilla和hadoop的版本

sahara image-add-tag --id a00f66cd-81ee-4bb8-af9a-5cb50e3602a7 --tag vanilla
sahara image-add-tag --id a00f66cd-81ee-4bb8-af9a-5cb50e3602a7 --tag 1.2.1

2. 创建网络

创建路由

neutron router-create router1

创建外部网络

neutron net-create ext_net --router:external=True
neutron subnet-create ext_net --allocation-pool start=172.28.12.10,end=172.28.12.50 --gateway 172.28.12.1 172.28.12.0/24 --enable_dhcp=False

创建内部网络

neutron net-create vlan-70
neutron subnet-create vlan-70 70.0.0.0/24

绑定内外网到router1

neutron router-gateway-set 8dab3833-2616-4713-90c2-ab85f7d1a226 2dd5901d-3292-4edf-9c14-5999b4e6ed0d
neutron router-interface-add 8dab3833-2616-4713-90c2-ab85f7d1a226 a92654b6-09a5-4adc-a301-6a405d5c924d

另外,为了让单板和虚拟机进行通信,需要在br-int上开一个对应vlan子接口,并配上同一个网段的IP:

vconfig add br-int 2
ifconfig br-int.2 70.0.0.5/24

注:2表示网络的segmentation_id,可以通过neutron net-show来查看对应网络的segmentation_id。

3. 虚拟机套餐:

nova flavor-create sahara_flavor2 111 1024 11 1

注:vanilla的官方镜像是10G,disk的大小设置成大于10G。

4. 创建节点模板:

node-group-templates.json

{
    "plugin_name": "vanilla",
    "hadoop_version": "1.2.1",
    "node_processes": [
        "namenode",
        "oozie",
        "jobtracker",
        "datanode",
        "tasktracker",
        "secondarynamenode"
    ],
    "name": "master",
    "floating_ip_pool": "2dd5901d-3292-4edf-9c14-5999b4e6ed0d",
    "auto_security_group": true,
    "flavor_id": "111"
}

创建命令:

sahara  node-group-template-create --json node-group-templates.json

5. 创建集群:

先注入key,不然vanilla的镜像因为不知道密码无法登陆。

第一步,生成公钥

ssh-keygen -t rsa -P ''

第二步,通过nova注册公钥

nova keypair-add sahara --pub-key ~/.ssh/id_rsa.pub

编辑集群模板:

cluster-template.json

{
    "plugin_name": "vanilla",
    "hadoop_version": "1.2.1",
    "node_groups": [
        {
            "name": "master",
            "count": 1,
            "node_group_template_id": "56d00dcd-1909-4508-8ea5-65174722fe39"
        }
    ],
    "name": "cluster-template",
    "neutron_management_network": "6779575a-9eca-4bd9-885a-b9389d3b21dc",
    "cluster_configs":
    {
        "HDFS": {
            "dfs.replication": 1
        }
    },
    "user_keypair_id":"sahara",
    "default_image_id": "a00f66cd-81ee-4bb8-af9a-5cb50e3602a7"
}

创建集群:

sahara cluster-create --json cluster-template.json

在部署的Hadoop集群的时候,碰到了很多问题,下面做个大概的说明:

问题1:创建集群的时候,报了下面的错误

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/saharaclient/shell.py", line 762, in main
    OpenStackSaharaShell().main(map(strutils.safe_decode, sys.argv[1:]))
  File "/usr/lib/python2.7/dist-packages/saharaclient/shell.py", line 698, in main
    args.func(self.cs, args)
  File "/usr/lib/python2.7/dist-packages/saharaclient/api/shell.py", line 327, in do_cluster_create
    _show_cluster(cs.clusters.create(**template))
  File "/usr/lib/python2.7/dist-packages/saharaclient/api/clusters.py", line 49, in create
    node_groups=node_groups)
  File "/usr/lib/python2.7/dist-packages/saharaclient/api/clusters.py", line 32, in _assert_variables
    var_name)
APIException: None

通过在方法_assert_variables这个方法出打断点,发现是因为集群的模板中,没有设置default_image_id这个参数导致,但是官网的rest文档给的例子没有这个参数。

问题2:一开始设置了多个节点目标,而多个节点目标中部署了多个的namenode、jobtracker、oozie,导致报了下面的错误:

ERROR: Hadoop cluster should contain 1 namenode component(s). Actual namenode count is 2
ERROR: Hadoop cluster should contain 0 or 1 jobtracker component(s). Actual jobtracker count is 2
ERROR: Hadoop cluster should contain 0 or 1 oozie component(s). Actual oozie count is 2

所以,在Hadoop集群中,namenode、jobtracker、oozie最多只能有一个。

问题3:Floatingip pool not found

一开始只是简单创建一个网络,导致配置浮动IP的时候错误,用我前面的那种创建网络的方法创建ok。

问题4:虚拟机获取metadata失败

为了让虚拟机获取metadata,需要在nova-api和neutron metadata的配置文件进行相关的配置:

nova-api的配置中需要配置以下参数:

enabled_apis=ec2,osapi_compute,metadata
metadata_workers = 1
service_neutron_metadata_proxy = true
metadata_listen = 192.168.206.190
metadata_port = 8775

neutron metadata的配置文件metadata_agent.ini中,需要配置:

nova_metadata_ip = 192.168.206.190
nova_metadata_port = 8775
nova_metadata_protocol = http
nova_client_cert = openstack
nova_client_priv_key = openstack

【参考资料】

http://docs.openstack.org/developer/sahara/devref/quickstart.html

http://docs.openstack.org/developer/sahara/restapi/rest_api_v1.0.html

http://docs.openstack.org/developer/sahara/userdoc/vanilla_plugin.html#cluster-validation

http://www.server110.com/openstack/201402/6817.html

时间: 2024-08-11 16:55:11

通过Sahara部署Hadoop集群的相关文章

阿里云ECS服务器部署HADOOP集群(五):Pig 安装

本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建. 1 环境介绍 一台阿里云ECS服务器:master 操作系统:CentOS 7.3 Hadoop:hadoop-2.7.3.tar.gz Java: jdk-8u77-linux-x64.tar.gz Pig: pig-0.17.0.tar.gz 2 Pig 下载 下载 pig-0.17.0.tar.gz 并在合适的位置解压缩,笔者这里解压缩的路径为: /usr/local 将解压得到的目录改

阿里云ECS服务器部署HADOOP集群(四):Hive本地模式的安装

本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建. 本地模式需要采用MySQL数据库存储数据. 1 环境介绍 一台阿里云ECS服务器:master 操作系统:CentOS 7.3 Hadoop:hadoop-2.7.3.tar.gz Java: jdk-8u77-linux-x64.tar.gz Hive:apache-hive-2.3.6-bin.tar.gz Mysql: Mysql 5.7 MySQL Connector-J:mysql-

阿里云ECS服务器部署HADOOP集群(七):Sqoop 安装

本篇将在 阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建 阿里云ECS服务器部署HADOOP集群(二):HBase完全分布式集群搭建(使用外置ZooKeeper) 阿里云ECS服务器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建 阿里云ECS服务器部署HADOOP集群(四):Hive本地模式的安装 的基础上搭建. 1 环境介绍 一台阿里云ECS服务器:master 操作系统:CentOS 7.3 Hadoop:hadoop-2.7.3.tar

阿里云ECS服务器部署HADOOP集群(六):Flume 安装

本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建. 1 环境介绍 一台阿里云ECS服务器:master 操作系统:CentOS 7.3 Hadoop:hadoop-2.7.3.tar.gz Java: jdk-8u77-linux-x64.tar.gz Flume:apache-flume-1.8.0-bin.tar.gz 2 Flume 下载 下载 apache-flume-1.8.0-bin.tar.gz 并在合适的位置解压缩,笔者这里解压

阿里云ECS服务器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建

本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里云ECS服务器:master, slave1, slave2 操作系统:CentOS 7.3 Hadoop:hadoop-2.7.3.tar.gz Java: jdk-8u77-linux-x64.tar.gz ZooKeeper: zookeeper-3.4.14.tar.gz 1.2 各节点角色

集群配置虚拟主机及部署Hadoop集群碰到的问题

配置集群方案 Ubuntu下的配置apache虚拟主机方案: 对其中的Master节点配置虚拟主机,可以通过Chrome浏览器访问目录. 安装虚拟主机之前,先安装Apache2 sudo apt-get install apache2 再安装php5 sudo apt-get install php5 然后,进入 /etc/apache2/sites-available文件夹,添加”*.conf”文件 往该文件里写入 <VirtualHost *:80> ServerName author.x

linux上部署hadoop集群系列 基础篇

介绍 这一系列博文介绍hadoop集群的部署和安装,因为hadoop确实比较复杂,所以分为几个部分来一一介绍.大致有基础篇,HA-QJM篇,Federation篇. 正文 一.操作环境 虚拟机4台,配置基于hadoop的集群中包括4个节点:1个Master,3个Salve,节点之间局域网连接,可以相互ping通,Ip分布为: 168.5.15.112 hadoop1(Master) 168.5.15.116 hadoop2(Slave) 168.5.15.207 hadoop3(Slave) 1

实战CentOS系统部署Hadoop集群服务

导读 Hadoop是一个由Apache基金会所开发的分布式系统基础架构,Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性特点,并且设计用来部署在低廉的(low-cost)硬件上:而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序:HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming acces

部署Hadoop集群

1.Hadoop的3种运行模式 单机模式:安装简单,几乎不用作任何配置,但仅限于调试用途 伪分布模式:在单节点上同时启动namenode.datanode.jobtracker.tasktracker.secondary namenode等5个进程,模拟分布式运行的各个节点 完全分布式模式:正常的Hadoop集群,由多个各司其职的节点构成 2.伪分布式模式的安装和配置 (1)下载并解压Hadoop安装包,我们选用0.20.2版本 可以到官网下载,也可以在国内镜像网站下载,如http://mirr