ambari 轻松适配Kylin v10 arm版,以及mysql8
本指南将详细介绍如何在Kylin v10 ARM版本上轻松地安装和配置Ambari以及MySQL 8。Ambari是一个用于管理、监控和提供Hadoop集群支持的开源工具,而MySQL 8则是现代化、高性能的关系型数据库管理系统。通过这些步骤,你将能够在Kylin v10 ARM系统上高效地适配和运行这些软件,助力大数据环境的建设和管理。
配置yum源
systemctl enable httpd
systemctl restart httpd
chmod -R 755 /var/www/html/
cd /var/www/html/
tar -zxvf ambari-2.7.4.0.tar.gz -C /hadoop/var/www/html/
tar -zxvf HDP-3.1.4.0.tar.gz -C /hadoop/var/www/html/
tar -zxvf HDP-GPL-3.1.4.0.tar.gz -C /hadoop/var/www/html/
tar -zxvf HDP-UTILS-1.1.0.22.tar.gz -C /hadoop/var/www/html/
#set ambari.repo hdp.repo
cd /var/www/html/ ambari-2.7.4.0
createrepo --update ./
cd /var/www/html/HDP-3.1.4.0
createrepo --update ./
yum clean all && yum makecache
ambari.repo
[ambari-2.5.0.3]
# 注意把 192.168.111.201 为 自己集群 主节点的ip
name=ambari Version - ambari-2.5.0.3
#baseurl=http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.5.0.3
baseurl=http://192.168.111.201/ambari/centos7/
gpgcheck=1
#gpgkey=http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.5.0.3/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
gpgkey=http://192.168.111.201/ambari/centos7/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
HDP.repo
[HDP-2.6]
# 注意把 192.168.111.201 为 自己集群 主节点的ip
name=HDP-2.6
baseurl=http://192.168.111.201/HDP/centos7/2.6.5.0-292
path=/
enabled=1
gpgcheck=0
HDP-UTILS.repo
[HDP-UTILS-1.1.0.21]
# 注意把 192.168.111.201 为 自己集群 主节点的ip
name=HDP-UTILS-1.1.0.21
baseurl=http://192.168.111.201/HDP-UTILS/
path=/
enabled=1
gpgcheck=0
yum文件
[Kylin]
name=ISO Repository
baseurl=file:///data/Kylin
enabled=1
gpgcheck=0
[Kylin]
name=Kylin ISO Repository
baseurl=http://10.144.164.53/Kylin
enabled=1
gpgcheck=0
适配mysql8
amabri的mysql驱动相关操作参考实战:安装ambari轻松适配mysql8
以下是有关在 MySQL 中为用户 hive
授予权限的详细说明,包括使用 GRANT
语句进行特定权限设置:
语句说明
SQL 语句如下:
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' IDENTIFIED BY 'bigdata' WITH GRANT OPTION;
- GRANT ALL PRIVILEGES ON . TO 'hive'@'%': 授予用户
hive
在任何主机(%)上的对所有数据库和表的所有权限。 - IDENTIFIED BY 'bigdata': 如果用户
hive
不存在,则创建并设置其密码为bigdata
。 - WITH GRANT OPTION: 允许用户
hive
将它拥有的权限授予给其他用户。
操作步骤
1. 登录到 MySQL
首先,用 root
用户或其他具有足够权限的用户登录 MySQL。
bash
mysql -u root -p
输入 root
密码后进入 MySQL 控制台。
2. 创建用户(如果用户不存在)
假设你要创建并授予权限的 hive
用户可能尚未存在。你可以先创建这个用户:
sql
CREATE USER 'hive'@'%' IDENTIFIED BY 'bigdata';
如果用户已经存在,这条语句会引发错误。你可以选择忽略此错误,或使用如下语句检查并创建用户:
sql
CREATE USER IF NOT EXISTS 'hive'@'%' IDENTIFIED BY 'bigdata';
3. 授予权限
接下来,执行实际授予权限的命令:
sql
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' IDENTIFIED BY 'bigdata' WITH GRANT OPTION;
4. 刷新权限
为了确保权限立即生效,执行以下命令刷新权限:
sql
FLUSH PRIVILEGES;
完整的 SQL 操作示例
以下是一个完整的示例,展示了所有步骤从登录到授予权限:
sql
-- 登录到 MySQL 控制台
mysql -u root -p
-- 创建用户(如果不存在)
CREATE USER IF NOT EXISTS 'hive'@'%' IDENTIFIED BY 'bigdata';
-- 授予所有权限
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' IDENTIFIED BY 'bigdata' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
注意事项
-
安全性:授予
ALL PRIVILEGES
和WITH GRANT OPTION
是非常高的权限设置,意味着用户hive
可以进行几乎任何操作,包括创建、修改和删除数据库和表,以及修改其他用户的权限。请谨慎使用这种级别的权限,通常仅在开发或管理环境中才会授予如此高的权限。 -
具体权限:如果你只需要用户能够访问特定的数据库或进行特定类型的操作,可以授予更细粒度的权限。例如:
sql GRANT SELECT, INSERT, UPDATE, DELETE ON hive_db.* TO 'hive'@'%' IDENTIFIED BY 'bigdata';
-
密码设置:对于新的 MySQL 版本(如 8.0),可以选择更安全的密码格式进行设置:
sql CREATE USER 'hive'@'%' IDENTIFIED WITH mysql_native_password BY 'bigdata';
通过这些步骤,你应该能够成功在 MySQL 中创建 hive
用户并授予相应权限。如有任何问题,请查阅 MySQL 官方文档或查看相关日志获取更多详细信息。
报错以及解决
报错——hadoop依赖包没有可用yum源下载
Failed to execute command '/usr/bin/yum -y install snappy-devel', exited with code '1', message:
解决
使用代理yum源,完成hdfs的相关依赖yum安装,详情参考实战:轻松配置Kylin镜像iso的yum源和使用代理方式
报错—— Bootstrap of host hadoop03 fails because previous action finished with non-zero exit code (1)
ERROR: Bootstrap of host hadoop03 fails because previous action finished with non-zero exit code (1) ERROR MESSAGE: Authorized users only. All activities may be monitored and reported. Connection to hadoop03 closed. STDOUT: /var/lib/ambari-agent/tmp/ambari_commons/subprocess32.py:156: RuntimeWarning: The _posixsubprocess module is not being used. Could not import it from ambari_commons.libs.aarch64 Child process reliability may suffer if your program uses threads. "program uses threads.", RuntimeWarning) Host registration aborted. Ambari Agent host cannot reach Ambari Server 'hadoop01:8080'. Please check the network connectivity between the Ambari Agent host and the Ambari Server Authorized users only. All activities may be monitored and reported. Connection to hadoop03 closed.
解决
这一错误表明 Ambari Agent 在注册时未能成功与 Ambari Server 通信,可能是由于网络连接问题、配置错误或其他系统级问题造成的。以下是一些详细的检查和故障排除步骤,以帮助你解决这个问题。
步骤1:检查网络连接
确保 Ambari Agent 所在的主机(hadoop03)能够正常连接到 Ambari Server 主机(hadoop01)。
-
使用 ping 检查连接:
bash ping hadoop01
确保可以 ping 通 Ambari Server 主机。
-
使用 telnet 检查端口:
bash telnet hadoop01 8080
确保 hadoop03 可以连接到 hadoop01 的 8080 端口。
步骤2:检查主机名解析
确保 Ambari Agent 和 Ambari Server 之间的主机名可以正确解析。
-
检查 /etc/hosts 文件: 确保在
/etc/hosts
文件中正确配置了主机名和 IP 地址关联。plaintext <IP_address_of_hadoop01> hadoop01 <IP_address_of_hadoop03> hadoop03
-
使用 nslookup 或 dig 检查 DNS 解析:
bash nslookup hadoop01 nslookup hadoop03
步骤3:检查防火墙和安全设置
确保防火墙设置或安全组不会阻止 Ambari Agent 与 Ambari Server 之间的通信。
-
禁用防火墙(在调试时,可临时禁用防火墙以确定是否是防火墙问题):
bash sudo systemctl stop firewalld sudo systemctl disable firewalld
-
检查安全组设置(如果使用的是云服务): 确保安全组规则允许从 hadoop03 到 hadoop01 的 8080 端口的流量。
步骤4:重新启动 Ambari Server 和 Agent
有时,只需重新启动 Ambari Server 和 Agent 即可解决问题。
-
在 Ambari Server 主机上重新启动 Ambari Server:
bash sudo ambari-server restart
-
在 Ambari Agent 主机上重新启动 Ambari Agent:
bash sudo ambari-agent restart
步骤5:检查日记和错误消息
查看 Ambari Server 和 Ambari Agent 的日志,找出更多详细的错误信息。
-
查看 Ambari Server 日志:
bash tail -f /var/log/ambari-server/ambari-server.log
-
查看 Ambari Agent 日志:
bash tail -f /var/log/ambari-agent/ambari-agent.log
步骤6:验证 Java 环境
确保在所有节点(包括 Ambari Server 和 Ambari Agent 主机)上安装并配置了正确的 Java 版本。
-
检查 Java 版本:
bash java -version
确保所有主机上安装了兼容的 Java 版本。
最终检查
重新运行 Ambari Agent 注册,并观察日志和输出。
解决尝试示例
以下是一个脚本示例,用于自动执行一些检查步骤:
bash
#!/bin/bash
# 检查网络连接
ping -c 4 hadoop01
if [ $? -ne 0 ];then
echo "Error: Cannot reach hadoop01"
exit 1
fi
# 检查端口连接
telnet hadoop01 8080
if [ $? -ne 0 ];then
echo "Error: Cannot connect to hadoop01:8080"
exit 1
fi
# 检查主机名解析
nslookup hadoop01
if [ $? -ne 0 ];then
echo "Error: DNS resolution for hadoop01 failed"
exit 1
fi
# 重启 Ambari 服务
sudo systemctl restart ambari-server
if [ $? -ne 0 ];then
echo "Error: Failed to restart Ambari Server"
exit 1
fi
sudo systemctl restart ambari-agent
if [ $? -ne 0 ];then
echo "Error: Failed to restart Ambari Agent"
exit 1
fi
echo "All checks passed. Please retry Ambari Agent registration."
通过这些步骤,你应该能够找到并解决 Ambari Agent 无法连接 Ambari Server 的问题。如果问题依旧存在,请详细阅读相关日志、运行调试,并根据具体的错误信息进一步排查。
我这里是hosts文件处理问题,修改/etc/hosts/文件后问题解决
报错——mysql8数据库初始化错误
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'groups ( group_id INTEGER, principal_id BIGINT NOT NULL, group_name VARCHA' at line 1 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'groups (group_id), CONSTRAINT FK_members_user_id FOREIGN KEY (user_id) REFEREN' at line 6
解决
修改初始化sql文件/var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
SQL 语句中遇到了语法错误,可能是因为所使用的关键字 "groups" 在 MySQL 中是一个保留字。使用保留字作为表名或列名时,需要使用反引号(``)将其括起来。以下是经过改进的 SQL 语句:
CREATE TABLE `groups` (
group_id INTEGER PRIMARY KEY,
principal_id BIGINT NOT NULL,
group_name VARCHAR(255) NOT NULL
);
CREATE TABLE members (
member_id INTEGER PRIMARY KEY,
user_id BIGINT NOT NULL,
group_id INTEGER NOT NULL,
CONSTRAINT FK_members_group_id FOREIGN KEY (`group_id`) REFERENCES `groups`(`group_id`),
CONSTRAINT FK_members_user_id FOREIGN KEY (user_id) REFERENCES users(user_id)
);
此外,假如你还需要创建更多的表或有其他类似的问题,请确保在引用表名、列名时,合理使用反引号,特别是在使用保留字时。
具体步骤说明
-
创建
groups
表:表名groups
是 MySQL 的保留字,为了避免语法错误,我们用反引号括起来。sql CREATE TABLE `groups` ( group_id INTEGER PRIMARY KEY, principal_id BIGINT NOT NULL, group_name VARCHAR(255) NOT NULL );
-
创建
members
表:同样,在引用groups
表时也使用反引号。CREATE TABLE members ( member_id INTEGER PRIMARY KEY, user_id BIGINT NOT NULL, group_id INTEGER NOT NULL, CONSTRAINT FK_members_group_id FOREIGN KEY (`group_id`) REFERENCES `groups`(`group_id`), CONSTRAINT FK_members_user_id FOREIGN KEY (user_id) REFERENCES users(user_id) );
检查保留字
如果你经常遇到这样的错误,可以参考 MySQL 的官方文档和保留字列表,确保你的表名、列名没有冲突。以下是一些常见的 MySQL 保留字:
SELECT
INSERT
UPDATE
DELETE
FROM
WHERE
JOIN
GROUP
ORDER
BY
LIMIT
HAVING
AS
IN
ON
TABLE
USER
修改初始化sql
用于创建两个表 groups
和 members
,并添加适当的主键、外键和唯一约束。
确保以下几点:
- 数据库中不存在重复的表名或冲突的键名。
- 引用的外键表(例如,
adminprincipal
和users
表)已经存在,并且对应的principal_id
和user_id
列存在且结构正确。
表创建脚本(修正和优化)
-- 创建 groups 表
CREATE TABLE `groups` (
`group_id` INTEGER PRIMARY KEY,
principal_id BIGINT NOT NULL,
group_name VARCHAR(255) NOT NULL,
ldap_group INTEGER NOT NULL DEFAULT 0,
group_type VARCHAR(255) NOT NULL DEFAULT 'LOCAL',
CONSTRAINT FK_groups_principal_id FOREIGN KEY (principal_id) REFERENCES adminprincipal(principal_id),
CONSTRAINT UNQ_groups_0 UNIQUE (group_name, ldap_group)
);
-- 创建 members 表
CREATE TABLE members (
member_id INTEGER PRIMARY KEY,
`group_id` INTEGER NOT NULL,
user_id INTEGER NOT NULL,
CONSTRAINT FK_members_group_id FOREIGN KEY (`group_id`) REFERENCES `groups`(`group_id`),
CONSTRAINT FK_members_user_id FOREIGN KEY (user_id) REFERENCES users (user_id),
CONSTRAINT UNQ_members_0 UNIQUE (`group_id`, user_id)
);
注意事项
-
反引号使用: 在SQL中,反引号可以用于避免与MySQL保留字的冲突。尽量为表名和列名使用反引号。
-
外键引用检查: 确保存在被引用的表和列,例如
adminprincipal(principal_id)
和users(user_id)
:sql CREATE TABLE adminprincipal ( principal_id BIGINT PRIMARY KEY, -- 其他列 ... ); CREATE TABLE users ( user_id INTEGER PRIMARY KEY, -- 其他列 ... );
-
数据类型一致性: 确保外键引用的数据类型和长度与其主键或唯一键匹配。例如,
group_id
和principal_id
数据类型需要在所有相关表中一致。
详细步骤
-
检查或创建依赖表:
确保
adminprincipal
和users
表已经存在并正确创建:sql CREATE TABLE adminprincipal ( principal_id BIGINT PRIMARY KEY, -- 其他列定义 ); CREATE TABLE users ( user_id INTEGER PRIMARY KEY, -- 其他列定义 );
-
创建
groups
表:sql CREATE TABLE `groups` ( `group_id` INTEGER PRIMARY KEY, principal_id BIGINT NOT NULL, group_name VARCHAR(255) NOT NULL, ldap_group INTEGER NOT NULL DEFAULT 0, group_type VARCHAR(255) NOT NULL DEFAULT 'LOCAL', CONSTRAINT FK_groups_principal_id FOREIGN KEY (principal_id) REFERENCES adminprincipal(principal_id), CONSTRAINT UNQ_groups_0 UNIQUE (group_name, ldap_group) );
-
创建
members
表:sql CREATE TABLE members ( member_id INTEGER PRIMARY KEY, `group_id` INTEGER NOT NULL, user_id INTEGER NOT NULL, CONSTRAINT FK_members_group_id FOREIGN KEY (`group_id`) REFERENCES `groups`(`group_id`), CONSTRAINT FK_members_user_id FOREIGN KEY (user_id) REFERENCES users (user_id), CONSTRAINT UNQ_members_0 UNIQUE (`group_id`, user_id) );
解决可能出现的问题
-
外键约束错误:
- 确保外键引用的字段在被引用的表中已经存在。
- 确保数据类型匹配,例如,
group_id
在所有表中都应该是INTEGER
类型。
-
表名或字段名冲突:
- 使用反引号包括表名或字段名以避免与MySQL的保留字冲突。
-
唯一约束错误:
- 检查是否有与创建唯一约束冲突的现有数据。唯一约束应确保相应列的组合在表中是唯一的。
通过以上步骤和检查,你可以确保成功创建 groups
和 members
表,并为其添加相应的约束。
总结
通过本指南,您已经成功地在Kylin v10 ARM版操作系统上安装和配置了Ambari和MySQL 8。安装Ambari后,您能够方便地管理Hadoop生态系统中的各个组件,监控系统性能,实现集群运维的自动化。配置MySQL 8作为支撑数据库,为大数据平台提供了强大的数据存储和管理能力。正确配置这些工具将为您的大数据处理和分析工作保驾护航,并显著提升整个系统的稳定性和性能。希望本指南对您的工作有所帮助,并期待您在实际应用中取得更大成就。