参考

PVE官网:https://pve.proxmox.com/pve-docs/pve-admin-guide.html#sysadmin_network_route
BigTop官网: https://bigtop.apache.org/
bigtopCI: https://ci.bigtop.apache.org/
bigtop-github: https://github.com/apache/bigtop
ambari官网: https://ambari.apache.org/
ambari wiki: https://cwiki.apache.org/confluence/display/AMBARI/Ambari
LVM相关: https://blog.csdn.net/weixin_42915431/article/details/121881054
github520: https://github.com/521xueweihan/GitHub520
V2ray一键安装脚本: https://github.com/233boy/v2ray/tree/master
https://www.cnblogs.com/piaolingzxh/p/18332934

导览

当您进行以下项目时,本文档可能对您有些帮助:

  • 对虚拟机平台的调研与探索。
  • 较低成本搭建自己私有的大数据平台。
  • 正在探索ambari项目。
  • 正在寻找替代HDP的新一代大数据管理平台。

    目的

  • 探索hadoop平台。
  • 在虚拟平台上:相对低成本构建低成本的、弹性资源扩展、易于管理的hadoop集群实现方案。
  • 在企业级物理机上:ambari+bigtop组合的探索。
  • 分享思路与见解。

    架构设计

    目标

    高可用性与容灾

    物理节点需要具备容灾性,及时物理节点顺坏也不会导致系统崩溃、数据丢失等问题。

    扩展性

    hadoop节点可以随意缩扩容,且扩缩容节点对当前任务没有影响。

    云服务支持

    这种架构可以被云服务支持,比如可以自己构架私有云(阿里云、腾讯云)。

    调研

    虚拟机平台调研

    1. Oracle VM VirtualBox:Oracle开源。基于软件层的虚拟,具有VirtualBox API,如果不开启PAE/NX和VT-X/AMD-V、硬件虚拟等性能会很低,优化后性能还是可以的,官方文档极其全,但是实测下来稳定性还是有些欠妥。
    2. VMware:闭源的虚拟机 ,大家最熟悉的,虽然已经免费,软件层虚拟机算是性能不错的了,不考虑主要是没有API,可能之后的闭源收费…
    3. Proxmox Virtual Environment (PVE) :开源、免费、丰富的命令行管理、API、基于debian+KVM的半虚拟化,可以直接对接LVM存储极其丝滑,性能交ESXI逊色一些,但是可忽略不计了。
    4. ESXi:半虚拟化的龙头老大,顶级性能、稳定性,但就是需要授权,闭源,虽然也有破解版,看个人选择吧,个人不喜欢自由一些,不想被资本拿捏。

👉不建议用盗版软件,个人玩玩就开源的,还可以参与社区贡献。

大数据平台调研

  1. CDH集群:商用的龙头老大,提供商业技术支持,但是成本很高,完全闭源,虽然也有免费版,但是版本太低不建议使用。
  2. Datasophon:国产的新一代大数据平台,不敢用,社区不是很活跃。
  3. HDP集群:ambari+HDP集群的黄金组合,但是目前已经闭源。
  4. Ambari+BIgTop:ambari在复活后的新思路,与BIgtop合作,bigtop负责打包,然后打包成repo仓库,amabri无缝对接bigtop打包的组件。

    网络架构

    网络架构这里设计的比较简单,通过PVE双网卡路由模式:
    image.png
    简单的说就是两个网卡,一个内网,一个外网,外网路由到宿主机官网文档介绍的非常详细: https://pve.proxmox.com/pve-docs/pve-admin-guide.html#sysadmin_network_routed
    如果有Virtual Box的话也可以组双网卡,网络NAT+Only-host,效果一样。

    架构设计与说明

    image.png

使用PVE数据中心中的单节点作为演示(资源有限😅),节点上不同的硬盘通过LVM,组成不同的VG逻辑卷(data01、data02、data03),在数据100%分布存储在不同硬盘的基础上,副本数、数据节点数、VG卷数存在以下关系:

副本数 VG数 最多支持节点数
3 n 2n
4 n 3n
5 n 4n

也就是:
最多支持节点数=(副本数-1)* VG数

此外VG容量=SUM(PV容量),通过LVM管理的好处就是可以丝滑的管理PV、VG,对节点容量的缩扩容,64位CPU上运行的Linux单节点最大LV大小为8EB,基本不会达到达瓶颈。

扩展:上面图画的只是单个节点的架构,可以实现常见的故障:动态缩扩容硬盘故障通过hadoopHA可以应对集群级故障(NN、RM),但是还不能应对硬件节点级的故障(节点断电,PVE节点断电直接节点上全部停机)
如果想要达到SLA9999级别的这时候就需要PVE的多节点了,将多个节点组成多个VG,一个节点相当于一个逻辑机架,NN与RM分开到不同的异地机架上、如果一个机架断电,相当于损失部分节点,基本是可以达到SLA9999的。
此外,PVE也支持HA,这个是针对数据中心的高可用的,大家如果想玩,可以看看官网文档, 很简单。

准备

本教程还是重在思路架构的分享,部分命令没有完全写上,其实都很简单,比如LVM、V2Ray、node、gcc、g++等,沉下心来看看文档,跑几个demo就可上手了,所以有些具体代码操作没体现在文档中。
参考优秀教程: https://www.cnblogs.com/piaolingzxh/p/18332934 写的非常详细,建议打开到浏览器随时翻阅。

硬件环境准备

母机为 PROXMOX (PVE)数据中心系统,安装很简单,搞个U盘,刷进PVE镜像,然后做个系统。不要用虚拟机装,会有很多的坑。
image.png
本次使用了pve数据中心单个节点(Centos7)进行测试:
单个节点配置如下:

配置项
CPU 32 x Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz (2 插槽)
内存 32G * 12 条=四通道384G
硬盘 3块12T+ 2块8T
网络 千兆网卡

节点规划

CPU 内存 硬盘
node1 7C 32G 8T
node2 7C 32G 8T
node3 6C 32G 8T
node4 6C 32G 8T
node5 6C 32G 8T

image.png

这里是正常pve单节点的规划,但是我发现有的几个节点还在跑任务,只能腾出来2块12T共24T的给我演示玩,问题不大,后续可以动态丝滑扩容。

配置LVM

  1. 通过LVM创建两个12T的PV
  2. 这2个PV挂到2个VG上。
  3. VG为每个节点初始分配50G+100G资源。
    image.png

image.png

配置yum源

#使用阿里源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 安装三方包
yum install epel-release -y
#清除缓存:
yum clean all  
#生成缓存:
yum makecache

配置npm源

# ~/.npmrc
registry=https://registry.npmmirror.com/
strict-ssl=false
~/.yarnrc
registry "https://registry.npmmirror.com/"
sass_binary_site "https://registry.npmmirror.com/node-sass/"
phantomjs_cdnurl "https://registry.npmmirror.com/phantomjs"
electron_mirror "https://registry.npmmirror.com/electron"
#sqlite3_binary_host_mirror "https://foxgis.oss-cn-shanghai.aliyuncs.com/"
#profiler_binary_host_mirror "https://npm.taobao.org/mirrors/node-inspector/"
#chromedriver_cdnurl "https://cdn.npm.taobao.org/dist/chromedriver"

安装依赖

yum -y install fuse-devel cmake cmake3 lzo-devel openssl-devel protobuf* cyrus-*  R* harfbuzz-devel fribidi-devel libcurl-devel libxml2-devel freetype-devel libpng-devel libtiff-devel libjpeg-turbo-devel pandoc* libgit2-devel

#cmake默认版本改为cmake3 
mv /usr/bin/cmake /usr/bin/cmake.bak ln -s /usr/bin/cmake3 /usr/bin/cmake

配置bower源

# ~/.bowerrc
{
  "directory": "bower_components",
  "registry": "https://registry.bower.io",
  "analytics": false,
  "resolvers": [
    "bower-shrinkwrap-resolver-ext"
  ],
  "strict-ssl": false
}
需要关注这里的resolvers,如果后续bower install报错的话,可以将resolvers去掉。

安装maven

#下载
wget https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
# 解压
tar -zxvf  apache-maven-3.6.3-bin.tar.gz
# 软链
ln -s /opt/apache-maven-3.6.3/bin/mvn /usr/bin/mvn

[root@localhost bin]# mvn -v  
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)

配置maven源

~/.m2/settings.xml中mirrors节点下配置以下信息,
<mirror>
  <id>aliyunmaven</id>
  <mirrorOf>*</mirrorOf>
  <name>阿里云公共仓库</name>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>
<mirror>
  <id>aliyunspring</id>
  <mirrorOf>*</mirrorOf>
  <name>阿里云公共仓库</name>
  <url>https://maven.aliyun.com/repository/spring</url>
</mirror>

安装V2ray或使用DNS

建议先配置DNS,如果DNS加速使用不了,可以使用v2ray跳出去,这里建议使用绕过大陆模式,有些国内的阿里的连接全局代理后访问不了。

  <proxies>
    <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>127.0.0.1</host>
      <port>10809</port>
      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>
  </proxies>

image.png
像这种下载块tar比较慢的话,可以直接走v2ray了,走不了github DNS。
v2ray的使用我是通过window把json文件导进去。

安装JDK

必须安装JDK,Centos7默认的jre不可以喔。
image.png
此外建议使用jdk-8u2或jdk-8u3 以上的版本,否则可能报Magic number-48 的一些版本问题。我这里使用的是:jdk-8u421-linux-x64.tar.gz

#清理软链
rm -rf /usr/bin/java
# 直接解压tar包后做软链

安装rpmbuild

yum install rpm-build -y

http服务搭建

可以用httpd,也可以用nginx ,只要有url访问linux本地文件就行,我这里使用的是nginx

yum install nginx

/etc/nginx/conf.d 添加conf文件:

server {
    listen       8000;
    server_name  localhost;
    location / {
        root   /opt/bdp3.2;
        try_files $uri $uri/ /index.html;
        index  index.html;
            autoindex on;  # 开启目录文件列表
            autoindex_exact_size on;  # 显示出文件的确切大小,单位是bytes
            autoindex_localtime on;  # 显示的文件时间为文件的服务器时间
            charset utf-8,gbk;  # 避免中文乱码
    }
}

重启nginx

nginx -s reload 

添加ambari源

image.png|475

创建3个文件,分别添加进去,名字后缀1~3

[BIGTOP-3.2.0-repo-1]
name=BIGTOP-3.2.0-repo-1
baseurl=http://192.168.56.104:8000
path=/
enabled=1

分发ambari源

使用xsync 分发ambari-bigtop-1.repo 、ambari-bigtop-2.repo、ambari-bigtop-3.repo到5个节点。
最后在所有节点上执行:

yum clean all  &&  yum makecache

安装mysql

可以按照我的安装方法,也可以使用其他方法,最终要有一个适配的mysql,我测试2.8.0使用mysql8没问题,没测试低版本。
下载安装包 解压

下载安装包

#解压安装包
# tar -xf mysql-8.0.30-linux-glibc2.12-x86_64.tar
tar -zxvf mysql-8.0.33-el7-x86_64.tar.gz
#添加用户组
groupadd mysql&&useradd -r -g mysql -s /bin/false mysql

#重命名
mv  mysql-8.0.33-el7-x86_64  mysql
#复制到安装目录
cp -r  mysql  /usr/local/

mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql/
chown -R mysql:mysql  /usr/local/
chown -R mysql:mysql  /usr/local/mysql
chmod  -R 750 /data/mysql

#卸载自带的mariadb
rpm -qa | grep mariadb
rpm -e --nodeps $(rpm -qa | grep mariadb)

#初始化
[root@ds1 bin]#/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/
<kFB?b-Qp4ik
记住密码
mkdir /data/mysql/logs/
chmod  -R 750 /data/mysql

修改配置文件

vi /etc/my.cnf

[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
server_id=6
port=3306
socket=/tmp/mysql.sock

#错误日志
log_error=mysql_error.log

#普通日志
general_log=ON
general_log_file=/data/mysql/logs/mysql_general.log

#慢查询日志
slow_query_log=ON
slow_query_log_file=/data/mysql/logs/mysql_slow_query.log
long_query_time=5 #设置超过5秒执行的语句被记录,缺省时为10秒

#设置单个binlog文件的最大大小为1GB
max_binlog_size=1073741824

#设置binlog文件的保留天数为3天
expire_logs_days=3

#设置时区
default-time-zone=+8:00

##客户端
[mysql]
socket=/tmp/mysql.sock

systemctl 接管

vi /usr/lib/systemd/system/mysql.service

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
Type=notify
TimeoutSec=0
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf $MYSQLD_OPTS
EnvironmentFile=-/etc/sysconfig/mysql
LimitNOFILE = 65536
Restart=on-failure
RestartPreventExitStatus=1
Environment=MYSQLD_PARENT_PID=1
PrivateTmp=false
systemctl daemon-reload
systemctl enable mysql
systemctl start mysql
systemctl status mysql

配置软链

ln -s /usr/local/mysql/bin/mysql   /usr/bin/mysql
ln -s /usr/local/mysql/bin/mysqladmin   /usr/bin/mysqladmin
ln -s /usr/local/mysql/bin/mysqldump   /usr/bin/mysqldump
ln -s /usr/local/mysql/bin/mysqlshow  /usr/bin/mysqlshow
mysql -uroot -p

修改密码:

ALTER USER USER() IDENTIFIED BY 'root';
use mysql;update user set host='%' where user='root';
#授权
GRANT all PRIVILEGES on <库名>.* to 'root'@'%';
GRANT all PRIVILEGES on *.* to 'root'@'%';

完事!

下载ambari源码

我这里使用的2.8.0下载的版本选择:说到这里都是泪,最开始我使用了debian 12 系统用了大概2天的时间从0到1编译了ambari 2.8.0-rc1版本,已经成功的编译成deb文件,但是发现打开后只能选择BigTop3的redhat 7的rpm源…..我debian怎么编出来rpm啊,心态直接就崩了,看过源码后,才发现:
image.png
然后我又翻翻官网文档,直接吐血,我直接走step了,没看前面的提示!!!
image.png

环境总结

这里的依赖应该是编译报错中占绝大多数的原因可能有版本过低、过高、冲突等,很难统一环境,只能通过经验判断,这是我测试编译hadoop、zookeeper后没问题的环境:

CentOS-7-x86_64-DVD-2009.iso
yarn: v0.23.2
node v16.20.2
npm 8.19.4
maven-3.6.3
jdk1.8.0_421
gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
  • yarn: 这个系统比较老,在实际操作中有的报错可能是yarn版本高引起的变量不兼容,我就给hadoop的yarn修改成了v0.23.2,实测没问题了。

    编译

    这部分是整个步骤中最难的,一方面编译测试周期比较长,一方面报错大多数为底层gcc、cmake、npm、node版本等疑难杂症,可以先看一遍FAQ和参考文档、好心态与随机应变。

扩展:由于编译难度较大,我本来的思路是使用Bigtop官方的Jenkins库:
https://ci.bigtop.apache.org/view/Releases/job/Bigtop-3.2.0-centos-7 直接下载对应平台编译好的rpm包,但是直接命名rpm并没有生效,我通过rebuild重新打包,也没有成功,我感觉理论上是可行的,小伙伴们可以试试。

这里我只编译了3个组件:ambarizookeeperhadoop,走通流程后会持续更新。

编译ambari

官网文档比较全的了:
https://cwiki.apache.org/confluence/display/AMBARI/Installation+Guide+for+Ambari+2.8.0
按官网的步骤走,大概率一遍过,好点的配置,40~50分钟就能编完!
image.png
编译成功后生成server和agent包:
image.png|350

image.png|350

bigtop相关包

编译Zookeeper

执行

./gradlew zookeeper-rpm -Dbuildwithdeps=true -PparentDir=/usr/bigtop -PpkgSuffix -x test

打包完成后,将output中的目录,放到repo目录下/opt/bdp3.2

├── x86_64
│   ├── zookeeper_3_2_0-3.5.9-2.el7.x86_64.rpm
│   ├── zookeeper_3_2_0-debuginfo-3.5.9-2.el7.x86_64.rpm
│   ├── zookeeper_3_2_0-native-3.5.9-2.el7.x86_64.rpm
│   ├── zookeeper_3_2_0-rest-3.5.9-2.el7.x86_64.rpm
│   └── zookeeper_3_2_0-server-3.5.9-2.el7.x86_64.rpm
└── zookeeper_3_2_0-3.5.9-2.el7.src.rpm

编译Hadoop

比较难的来了!hadoop一共111个子模块,我编译用时50分钟左右,期间会遇到node、npm、github下载等各种各样的问题,我尽量整理到了FAQ下,不同环境肯定有不同的问题,总结下来就是几方面:

  • 网络方面
  • gcc、g++、cmake、clang等底层编译软件问题
  • node、npm、yarn等前端打包组件、版本问题
  • 其他很杂的问题
    # 可以先运行gradlew编译
    ./gradlew hadoop-rpm -Dbuildwithdeps=true -PparentDir=/usr/bigtop -PpkgSuffix -x test

    yarn-UI处很容易报错,可以通过一下命令在yarn-ui处开始调试编译:

cd /soft/code/bigtop/build/hadoop/rpm/BUILD/hadoop-3.3.6-src

mvn -Pdist -Pnative -Psrc -Pyarn-ui -Dtar -Dzookeeper.version=3.6.4 -Dhbase.profile=2.0 -DskipTests -DskipITs install -rf :hadoop-yarn-ui

编译完成后是这样的
打包完成后,将output中的目录,放到repo目录下/opt/bdp3.2

├── hadoop_3_2_0-3.3.4-1.el7.src.rpm
└── x86_64
    ├── hadoop_3_2_0-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-client-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-conf-pseudo-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-debuginfo-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-doc-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-hdfs-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-hdfs-datanode-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-hdfs-dfsrouter-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-hdfs-fuse-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-hdfs-journalnode-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-hdfs-namenode-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-hdfs-secondarynamenode-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-hdfs-zkfc-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-httpfs-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-kms-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-libhdfs-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-libhdfs-devel-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-libhdfspp-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-libhdfspp-devel-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-mapreduce-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-mapreduce-historyserver-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-yarn-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-yarn-nodemanager-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-yarn-proxyserver-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-yarn-resourcemanager-3.3.4-1.el7.x86_64.rpm
    ├── hadoop_3_2_0-yarn-router-3.3.4-1.el7.x86_64.rpm
    └── hadoop_3_2_0-yarn-timelineserver-3.3.4-1.el7.x86_64.rpm

编译hive

编译hive会自动编译hbase作为依赖:

./gradlew hive-rpm -Dbuildwithdeps=true -PparentDir=/opt/bigtop -PpkgSuffix -x test
├── hbase_3_2_0-2.4.13-1.el7.src.rpm
├── noarch
│   └── hbase_3_2_0-doc-2.4.13-1.el7.noarch.rpm
└── x86_64
    ├── hbase_3_2_0-2.4.13-1.el7.x86_64.rpm
    ├── hbase_3_2_0-master-2.4.13-1.el7.x86_64.rpm
    ├── hbase_3_2_0-regionserver-2.4.13-1.el7.x86_64.rpm
    ├── hbase_3_2_0-rest-2.4.13-1.el7.x86_64.rpm
    ├── hbase_3_2_0-thrift2-2.4.13-1.el7.x86_64.rpm
    └── hbase_3_2_0-thrift-2.4.13-1.el7.x86_64.rpm
hive
├── hive_3_2_0-3.1.3-1.el7.src.rpm
└── noarch
    ├── hive_3_2_0-3.1.3-1.el7.noarch.rpm
    ├── hive_3_2_0-hbase-3.1.3-1.el7.noarch.rpm
    ├── hive_3_2_0-hcatalog-3.1.3-1.el7.noarch.rpm
    ├── hive_3_2_0-hcatalog-server-3.1.3-1.el7.noarch.rpm
    ├── hive_3_2_0-jdbc-3.1.3-1.el7.noarch.rpm
    ├── hive_3_2_0-metastore-3.1.3-1.el7.noarch.rpm
    ├── hive_3_2_0-server2-3.1.3-1.el7.noarch.rpm
    ├── hive_3_2_0-webhcat-3.1.3-1.el7.noarch.rpm
    └── hive_3_2_0-webhcat-server-3.1.3-1.el7.noarch.rpm

image.png|450
image.png|475

验证

# 重新打包后必须重新createrepo 然后更新yum
createrepo bdp3.2/
#清除缓存:
yum clean all  
#生成缓存:
yum makecache

使用yum更新后,可以list下,看时候有hadoop_3_2_0开头的包,有的话就代表添加好了。
image.png

安装ambari

cd  ambari-server/target/rpm/ambari-server/RPMS/noarch/
yum install ambari-server*.rpm

image.png

ambari-server setup
[root@ambari-01 opt]# ambari-server setup 
Using python  /usr/bin/python
Setup ambari-server
Checking SELinux...
SELinux status is 'enabled'
SELinux mode is 'enforcing'
Temporarily disabling SELinux
WARNING: SELinux is set to 'permissive' mode and temporarily disabled.
OK to continue [y/n] (y)? y
Customize user account for ambari-server daemon [y/n] (n)? y
Enter user account for ambari-server daemon (root):
Adjusting ambari-server permissions and ownership...
Checking firewall status...
Checking JDK...
[1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
[2] Custom JDK
==============================================================================
Enter choice (1): 2
WARNING: JDK must be installed on all hosts and JAVA_HOME must be valid on all hosts.
WARNING: JCE Policy files are required for configuring Kerberos security. If you plan to use Kerberos,please make sure JCE Unlimited Strength Jurisdiction Policy Files are valid on all hosts.
Path to JAVA_HOME: /usr/local/jdk1.8.0_421
Validating JDK on Ambari Server...done.
Check JDK version for Ambari Server...
JDK version found: 8
Minimum JDK version is 8 for Ambari. Skipping to setup different JDK for Ambari Server.
Checking GPL software agreement...
GPL License for LZO: https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html
Enable Ambari Server to download and install GPL Licensed LZO packages [y/n] (n)? y
Completing setup...
Configuring database...
Enter advanced database configuration [y/n] (n)? y
Configuring database...
==============================================================================
Choose one of the following options:
[1] - PostgreSQL (Embedded)
[2] - Oracle
[3] - MySQL / MariaDB
[4] - PostgreSQL
[5] - Microsoft SQL Server (Tech Preview)
[6] - SQL Anywhere
[7] - BDB
==============================================================================
Enter choice (1): 3
Hostname (localhost): 
Port (3306): 
Database name (ambari): 
Username (ambari): root
Enter Database Password (bigdata): 
Re-enter password: 
Configuring ambari database...
Enter full path to custom jdbc driver: /usr/local/mysql/mysql-connector-java-8.0.11.jar
Copying /usr/local/mysql/mysql-connector-java-8.0.11.jar to /usr/share/java
Configuring remote database connection properties...
WARNING: Before starting Ambari Server, you must run the following DDL directly from the database shell to create the schema: /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
Proceed with configuring remote database connection properties [y/n] (y)? y
Extracting system views...
ambari-admin-2.8.0.0.0.jar

Ambari repo file doesn't contain latest json url, skipping repoinfos modification
Adjusting ambari-server permissions and ownership...
Ambari Server 'setup' completed successfully.

至此ambari-server安装成功!

cd  /opt/ambari-release-2.8.0-rc1/ambari-agent/target/rpm/ambari-agent/RPMS/x86_64
# agent需要安装到所有节点上,将分发到所有节点上,在所有节点上安装!
 yum install ambari-agent*.rpm

image.png

运行ambari-10步

运行http://127.0.0.1:8080

#启动server
ambari-server start
#在各节点上(1~5)上启动agent
ambari-agent  start 

image.png
默认密码:admin-admin

1.设置集群名-起名

image.png

2.选择版本(bigtop)

关联上面咱们自己配置的http服务
image.png

3.设置选项

image.png

填写主机信息和私钥

ambari-01
ambari-02
ambari-03
ambari-04
ambari-05

image.png
完成
image.png

等待 Please wait while the hosts are being checked for potential problems…完成即可

4.选择服务

image.png

5. 分配指标

不知道为什么只识别了30G的硬盘,但是问题不大🤨
image.png

6.分配角色与客户端

Snipaste_2024-11-05_15-25-45.jpg

7. 自定义服务

主要是对部分密码和配置的配置
Snipaste_2024-11-05_15-26-03.jpg
Snipaste_2024-11-05_16-34-27.jpg

8.安装总览

Snipaste_2024-11-05_16-37-00.jpg

9.执行安装安装

执行过程中可能会报错,日志中基本可以很快定位到问题,如果不好定位可以在指定的py脚本中用print 做debug。
image.png
image.png
可以后续收拾这 Ambari Metrics 组件
image.png

image.png

10.总览

image.png

OK!!!
image.png|525
image.png
到此,整个系统就已经搭建完毕!

云服务

整个架构其实可以完全迁移到云上,依赖PVE的API交互:
https://pve.proxmox.com/wiki/Proxmox_VE_API
直接对接pve的数据中心接口、LVM接口、虚拟机管理接口,此外我咨询了加拿大的VmXXX VPS供应商,他们就是使用pve api实现的,虚拟节点在3w左右,对于中小公司搭建自己的服务,还是问题不大的。

云服务的话还要考虑开源协议:bigtop、hadoop都是apache协议,比较宽松,但是据了解,pve是AGPL-3.0,需要特殊注意。

FAQ

设置为淘宝镜像源

npm config set registry https://registry.npmmirror.com/

还原为官方镜像源

npm config set registry https://registry.npmjs.org/


- 报错error: possibly undefined macro: AC_PROG_LIBTOOL?
https://blog.csdn.net/guyongqiangx/article/details/52759578
- watchman not found?
- https://note.xdq.me/centos-7-watchman-an-zhuang/

- 报AssertionError [ERR_ASSERTION]: 97 == 0问题:
可以尝试关闭http、https代理https://github.com/request/tunnel-agent/issues/20
如果git要用代理的话,可以单独配置git代理
```shell
# 查看当前代理
git config --global --get http.proxy
git config --global --get https.proxy
# 配置
git config --global http.proxy '127.0.0.1:10809'
git config --global https.proxy '127.0.0.1:10809'
# 取消代理
git config --global --unset https.proxy
git config --global --unset http.proxy