准备工作
1 理解组件
Ambari 支持的Hadoop组件主要分为3层:
- Core Hadoop: Apache Hadoop基础组件.
- Hadoop Distributed File System (HDFS): 设计用来运行 MapReduce 引擎的一个文件系统. 提供在分布式环境的数据访问.
- MapReduce: MapReduce 编程框架处理数据.
- Essential Hadoop: :与 Core Hadoop 一起工作的组件.
- Apache Pig 语言,被编译成MapReduce 程序.
- Apache Hive: SQL-like 查询语言,能被编译成MapReduce 程序.
- Apache HCatalog: 元数据抽象层,用来隔离用户与 数据。 数据如何,在哪里被存储,用户和脚本无需关心
- WebHCat: 为 HCatalog 和相关Hadoop组件提供REST-like APIs ,以前叫 Templeton.
- Apache HBase: 分布式列数据库,提供随机访问和操作 HDFS的大块数据能力
- Apache ZooKeeper: HBase 依赖于zk.
- Hadoop Support: 监控 Hadoop 的安装 和 在你的计算环境连接到 Hadoop
- Apache Oozie: 基于服务器的工作流引擎,优化正在运行Hadoop jobs的工作流.
- Apache Sqoop: 在Hadoop和外部结构数据之间迁移数据. 可以被Oozie 工作流集成
- Ganglia: 性能监控系统
- Nagios: 监控系统服务和网络
安装Ambari 必须安装HDFS,其他可选。
2 软件需求
系统要求:Linux 64位
软件要求 :yum rpm scp curl wget pdsh, 唯一需要安装的是 pdsh,搭建好自建仓库后运行下面命令即可
yum install pdsh
数据库:Ambari/Hive /HCatalog 都需要关系数据库的支持。
3 部署方式
虽然可以把所有组件装在一台机器上,但通常建议3台,1 master 2 slave。
4 信息收集
所有主机需要配置域名 Ambari 安装向导不支持 IP 地址
5 其他
ssh免登录
Ambari Server 在agent端安装软件 需要ssh 免登录
时钟同步
Disable SELinux
Disable iptables
Disable PackageKit
打开/etc/yum/pluginconf.d/refresh-packagekit.conf 写入 enable=0
Disable THP
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
如果Hive , HCatalog 使用MySQL作为 数据库,需要安装jdbc驱动
yum install mysql-connector-java*
开始安装
安装开始前,强烈建议搭建一个私有yum 仓库,具体地址请看hadoop-day-2: 自建hadoop-yum-仓库。
安装repo,这里不建议使用hortonworks的repo,需要,建议使用自建仓库。
cd /etc/yum.repos.d/
wget http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.1.2/ambari.repo
# 根据角色安装
yum install ambari-server
yum install ambari-agent
配置server
ambari-server setup
Customize user account for ambari-server daemon [y/n] (n)? n
进程配置按n 默认即可
Adjusting ambari-server permissions and ownership...
Checking firewall status...
Checking JDK...
[1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
[2] Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7
[3] Custom JDK
选2 并同意Oracle JDK license 安装JDK,会自动安装jdk
Enter advanced database configuration [y/n] (n)?
按 n 使用默认数据库配置。
这里的ambari数据库直接装在本机的PostgreSQL上了,用户名和密码 ambari-server/bigdata ,按 y 可以自定义装在其他机器的其他数据库,如 测试的 MySQL
Configuring database...
Default properties detected. Using built-in database.
Configuring ambari database...
Checking PostgreSQL...
Running initdb: This may take upto a minute.
Initializing database: [ OK ]
About to start PostgreSQL
Configuring local database...
Restarting PostgreSQL
Extracting system views...
......ambari-admin-2.1.2.377.jar
Adjusting ambari-server permissions and ownership...
Ambari Server 'setup' completed successfully.
至此安装完成
启动server
ambari-server start
配置节点
安装jdbc驱动
yum install mysql-connector-java*
数据库配置
在测试的 MySQL 服务器上 新建2个库 Hive Oozie
安装,配置,部署集群
浏览器打开http://server_hostname:8080, 使用admin/admin.登录
1 点击 Launch Install Wizard
2 输入集群名称
bigdatatest
3 选择2.3,并点击下方的 Advanced Repository Options
3 只勾选使用的操作系统类型,下面仓库的地址也要换成自己搭建的yum源,修改完成后,点Next
4 输入集群节点的域名,并把免登录私钥 上传上来,然后下一步
5 服务器会在每个节点上安装agent, 知道都变成success 点击Next
6 选择需要安装的组件,从这里安装这里面必须选安装zookeeper,没法使用现有的
7 Hive 和 Oozie 需要配置数据库,直接使用测试环境现有Mysql,需要提前安装好 jdbc dirver。
8 确认后,会给出组件汇总的列表,没问题后点deploy
9 然后坐等安装完毕
一些bug处理
如果安装阶段就出现问题,请检查自建仓库
安装完成后,Oozie无法启动
Error: Specified key was too long; max key length is 767 bytes {stmnt 484436112 CREATE TABLE BUNDLE_ACTIONS (bundle_action_id VARCHAR(255) NOT NULL, bundle_id VARCHAR(255), coord_id VARCHAR(255), coord_name VARCHAR(255), critical INTEGER, last_modified_time DATETIME, pending INTEGER, status VARCHAR(255), PRIMARY KEY (bundle_action_id)) ENGINE = innodb} [code=1071, state=42000]
测试Mysql 字符集是 utf8mb4,修改后正常启动
ALTER DATABASE oozie character set latin1;
ALTER DATABASE hive character set latin1;
Hive 无法启动
Initialization script hive-schema-1.2.0.mysql.sql
Error: Duplicate key name ‘PCS_STATS_IDX’ (state=42000,code=1061)
org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !!
导入mysql 后启动成功