Ambari是Apache的开源项目,它帮助用户在GUI页面上简单的部署、管理、监控Hadoop集群环境。Ambari支持的Hadoop组件包括HDFS、Hive、HBase、Spark、Yarn等,HortonWorks官方也是采用Ambari来完成自家HDP套件的安装、管理及监控的。除了预置的组件之外,Ambari还支持自定义组件的安装,同时,支持RESTful的API,继而可以通过命令行等方式调用Ambari来完成一些自动化的任务。
本文共分为两部分,第一部分介绍如何在Docker虚拟化环境中部署Ambari;第二部分介绍如何基于Ambari来部署和管理Hadoop集群。
### 环境信息
* Docker发行版:Docker for Mac
* Docker版本:17.06.2-ce
* Docker容器OS:Ubuntu 14.04
* Ambari版本:2.5.2.0
Docker环境准备
拉取Docker镜像:在宿主机上执行命令docker pull ubuntu:14.04从远端仓库中获取Ubuntu的镜像,也可以获取其他OS的镜像,本文以Ubuntu为例
启动Docker容器:执行如下命令,以ubuntu:14.04镜像为基础启动容器:
docker run -itd --name ambari_new -p 8080:8080 -p 3306:3306 -v /Users/yuxiaolei/Workspace/dockerShared:/dockerShared ubuntu:14.04 /bin/bash
由于Ambari启动Web程序的时候占用8080端口,因此要从Docker宿主机上访问Ambari页面,需要通过参数 -p 来制定端口映射;
作为新手,笔者在容器内部署好Ambari之后,才发现Web页面的8080端口和MySQL的3306端口(可选)没有暴露给Docker宿主机,也就没法从宿主机上通过浏览器来登陆Ambari,因此必须想办法在已有容器上开放端口。
有两个方法:
1)如果宿主机为Linux系统,则修改iptables防火墙来指定端口映射规则;
2)如果是非Linux系统,可以将已装Ambari的容器commit为新的镜像,再基于该镜像创建新的容器。此时,就可以在docker run命令中添加参数 -p 来指定端口映射了。
还有一个问题,Ambari将其数据存储在数据库中,支持MySQL、PostgreSQL等数据库;容器内安装MySQL之后,基于上一步创建的新容器里,会发现MySQL启动不起来,执行命令/etc/init.d/mysql restart启动失败,在/var/log/mysql/error.log日志文件中打印有170802 14:02:59 [ERROR] Fatal error: Can't open and lock privilege tables: Got error 140 from storage engine的错误,经过网上查资料,需要在创建容器的时候添加参数-v /var/lib/mysql将MySQL数据存储路径声明为数据卷,即可解决问题。
启动容器之后,执行命令docker exec -it ambari /bin/bash进入容器内部。
Ambari安装
配置Ubuntu的软件仓库源:
国内建议采用阿里云的软件源,在root账号下用vim打开/etc/apt/sources.list文件,删除文件所有内容,粘贴如下内容:
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
执行命令apt-get update完成软件列表更新
安装Ambari所依赖的软件
apt-get install software-properties-commonsudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default
完成安装之后,在 ~/.bashrc 文件末尾添加命令 `export JAVA_HOME=/usr/lib/jvm/java-8-oracle ` 以配置JAVA\_HOME 环境变量。
create database ambariuse ambariGRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root_password' WITH GRANT OPTIONFLUSH PRIVILEGESexit
由于Ambari的数据存储在MySQL数据库中,这里为Ambari单独创建了database,并为其赋了完全控制权限;说明:假设MySQL数据库root用户的密码为:root\_password
修改 `/etc/mysql/my.conf`,将`skip-external-locking`注释掉,并确保 `bind-address = 0.0.0.0` 配置,以使MySQL可被远程主机访问。
执行命令`/etc/init.d/mysql restart`重启MySQL 服务。
时间同步服务器ntp:执行命令apt-get install ntp安装ntp时间同步服务器,以便于集群环境中各节点的时钟一致;执行命令sudo service ntp restart重启ntp服务。
MySQL:执行命令apt-get install mysql-server安装MySQL服务器,安装完成后执行命令mysql -uroot -proot进入MySQL客户端,执行如下SQL代码:
Oracle JDK:逐条执行如下命令,以添加WebUpd8团队(https://launchpad.net/~webupd8team/+archive/ubuntu/java)提供的Oracle JDK仓库源,并从该仓库安装JDK:
下载Ambari仓库文件
进入cd /etc/apt/sources.list.d目录,执行命令wget http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.5.2.0/ambari.list从HortonWorks仓库中下载Ambari源文件,下载后切勿修改list文件名;
执行命令apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD以信任远端仓库的GPG签名
执行命令apt-get update更新Ambari软件源
执行命令apt-get install ambari安装Ambari套件,由于软件包较大(700多MB),这里情耐心等待,不过apt-get支持断点下载,网络终端后重新执行命令时不会从零开始下载
配置Ambari:
执行命令mysql -uroot -proot进入MySQL客户端,执行命令source ambari进入ambari的数据库,并执行命令source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql来完成Ambari的数据库表初始化 *** 作;
执行命令ambari-server setup启动Ambari的引导式配置 *** 作,根据指导做配置即可。需要注意的是,JDK不要选择由Ambari从网络下载,应该选择自定义路径,然后输入/usr/lib/jvm/java-8-oracle即可;
启动Ambari:执行命令ambari-server start,启动日志存储路径为/var/log/ambari-server/ambari-server.log
启动之后,由于我们之前做了Docker容器的端口映射,因此可以在宿主机上打开浏览器输入http://localhost:8080即可访问Ambari登陆页面
登陆用户名和密码均为admin,登陆之后就可以看到Ambari的首页了,如下图:
{% asset_img
Java语言基础1.Java基本概念
2.Java环境搭建
3.搭建Eclipse开发环境
4.基本类型
5.变量,运算符,表达式
6.分支语句,循环语句
7.数组,数组应用,行业规范。
8.双色球抽奖程序,实现权限管理命令
Java面向对象
1.类、对象、属性、方法、构造器
2.封装、继承、多态
3.重写、重载
4.访问权限控制符
5.this和super、static、final
6.抽象类和接口,内部类
7.单例设计模式
8.模板设计
JavaSE核心类库
1.Java核心类
2.Java字符串、日期处理
3.包装类、集合、数据结构
4.异常和异常处理
5.Java IO、NIO、多线程编程
6.线程同步机制、并发包
7.JAVA网络编程
8.Java泛型
9.Java反射机制
Java分析与设计
1.设计原则
2.设计模式
3.常见算法
4.Java8新特性
5.Maven使用
6.SVN版本管理
数据库开发
1.Oracle安装和管理
2.SQL语句
3.SQL语句原理
4.SQL语句优化
5.表、表设计原则
6.视图、序列、索引
7.Oracle数据字典
8.Oracle 数据库PL/SQL开发
9.存储过程、触发器、游标等
10.数据库设计原则
11.SQL优化技巧和原则
12.MySQL数据库安装
13.MySQL数据库维护
14.MySQL集群和读写分离
Web前端技术
1.XML语法、DTD和Schema
2.XML解析,DOM/SAX/DOM4J
3.XPATH技术应用
4.HTML5(H5)基本文档结构
5.标题、图片标记、链接、列表、表格标记
6.表单标记
7.CSS基础语法
8.CSS文本、列表、表格样式
9.CSS盒子模型
10.CSS浮动布局、定位
11.JavaScript语言基础
12.JavaScript闭包和自执行
13.JavaScript DOM编程
14.JavaScript事件模型
15.Window对象模型
16.HTML5画布、Web存储
17.地理定位、音频/视频、拖放
18.WebSocket技术等
19.CSS3边框、背景、文本效果
20.CSS3字体、动画等
JDBC技术
1.JDBC 核心API
2.CRUP *** 作
3.Statement应用
4.PreparedStatement应用
5.预防SQL注入攻击
6.事务安全控制
7.数据库高并发控制
8.批处理技术
9.DAO封装模式
10.dbcp、c3p0等连接池应用
jQuery技术
1.基本语法
2.选择器
3.元素选择
4.属性 *** 作
5.文档 *** 作
6.CSS *** 作
7.动画效果
8.jQuery 插件
easyUI/Bootstrap/AJAX前端框架
1.Menu菜单
2.Layout布局、Panel面板
3.Tabs 标签页
4.Progressbar进度条
5.Tooltip提示框、Searchbox搜索框
6.Pagination 分页、Draggable可拖动
7.Tree树、Datagrid 数据网格
8.消息框、对话框
9.日历、日期时间、Slider滑块
10.Treegrid树形网格
11.Linkbutton 链接按钮
12.Bootstrap CSS
13.Bootstrap布局组件、Bootstrap插件
14.Bootstrap编辑器
15.highcharts图表组件
16.Ajax作用和原理
17.XMLHttpRequest对象
18.Ajax设计模式
19.JSON技术及Ajax应用
20.jQuery与Ajax技术
JSP &Servlet技术
1.Tomcat配置和部署
2.Servlet生命周期
3.Servlet编写规范和配置
4.中文接收乱码处理
5.Servlet过滤器和监听器
6.Servlet+DAO工厂模式应用
7.JSP 基本语法
8.JSP标记应用
9.JSP内置对象request、session、application、exception等
10.JSTL和 EL表达式
11.JSP新特性
12.MVC设计模式
Spring框架
1.Spring IOC概念
2.ApplicationContext\Factory
Bean
3.IOC对象创建和生命周期
4.IOC注入技巧
5.对象高级装配
6.组件扫描特性
7.Spring JDBC支持
8.Spring 事务及安全管理
9.Spring MVC框架
10.Spring国际化
11.RESTFUL 技术
12.SpringAOP原理、AspectJ
13.Spring Security
14.Spring整合Shiro
SpringBoot/SpringCloud框架
1.SpringBoot Servlet
2.SpringBoot过滤器
3.SpringBoot监听器
4.SpringBoot拦截器
5.SpringBoot启动加载
6.SpringBoot数据库连接
7.SpringBoot多数据源
8.SpringBoot动态数据源
9.SpringBoot事务控制
10.SpringBoot Shiro 权限管理
11.SpringBoot JDBC访问数据库
12.SpringBoot MyBatis访问数据库
13.SpringCloud分布式配置管理
14.SpringCloud服务注册
MyBatis框架
1.MyBatis体系结构
2.SqlSession的使用
3.MyBatis映射基础
4.DQL 映射,DML映射
5.resultType/resultMap结果映射
6.Mapper映射器
7.MyBatis分页原理和优化
8.高级动态SQL映射
9.多表关联映射
10.Spring和MyBatis整合
SSH框架
1.Struts2结构和控制流程
2.Struts2 Action应用
3.ActionContext和ServletActionContext
4.Aware接口注入
5.Interceptor拦截器原理
6.Interceptor自定义应用
7.内置Result原理
8.常用Result组件原理和使用
9.dispatcher、redirect、chain、redirectAction、stream、json等
10.ValueStack原理和OGNL应用
11.Struts2 标记库、Struts2 扩展
12.Struts2和Spring整合应用
13.Hibernate Session API
14.Hibernate实体映射技术
15.Hibernate 关联映射技巧
16.HQL查询、Criteria查询、Native SQL查询
17.延迟加载、持久化、缓存技术
18.SSH整合应用
NoSQL技术
1.Redis原理
2.Redis命令
3.Java Redis API
4.Redis 字符串 *** 作命令
5.Redis 哈希 *** 作命令
6.Redis列表 *** 作命令
7.Redis集合 *** 作命令
8.Redis 有序集合 *** 作命令
9.Redis事务处理、备份和恢复
10.Redis消息发布系统
11.Redis分布式环境
12.MongoDb原理
13.MongoDb命令
14.Java MongoDb API
15.MongoDb排序、索引
16.MongoDb备份恢复
企业开发扩展技术
1.WebService
2.Axis2/CXF创建、发布
3.CXF与Spring集成
4.ActiveMQ消息总线
5.activiti工作流
6.jfreechart图表
7.JasperReport报表技术
8.lucene引擎
9.dubbo分布式架构
10.第三方支付平台
11.第三方短信平台
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)