找回密码
 会员注册
查看: 22|回复: 0

在ARM环境下搭建原生Hadoop集群

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
64095
发表于 2024-10-13 01:04:28 | 显示全部楼层 |阅读模式
在 ARM 环境下搭建原生 Hadoop 集群 360 一、X86 和 ARM众所周知,当前 CPU 的主流系统架构分为 X86 架构和 ARM 架构。其中 X86 架构的所有权归属于 Intel 公司,而 ARM 架构则是开源的。X86 架构的系统推出已经近 30 年,在这 30 年来互联网领域发展飞快,X86 架构也伴随着互联网的腾飞经过了高速发展的黄金时期,用户的应用、软件配套、软件开发等工具的配套和兼容都非常成熟,但由于 X86 架构的所有权问题,所有使用该架构的用户都需向 Intel 公司付费方可使用。而开源的 ARM 架构在近年来尤为受到关注,面对当前日益复杂的国际环境以及基于 ARM 架构本身在功耗上的优异表现,国内外大量企业自研基于 ARM 架构的服务器芯片,越来越多的应用和软件配套也适配 ARM 架构。二、Hadoop 集群搭建解决方案CDH(Cloudra's Distribution Apache Of Hadoop)是 Apache Hadoop 和相关项目的最完整,经过测试和最流行的发行版。CDH 是一个 WEB 操作平台,它集成了丰富的 Hadoop 生态,基于 CDH 版本的各种 Hadoop 框架和组件都能较为轻松并且高效的集成至 Hadoop 集群中。基于 CDH 的易用性和高效性,在 X86 架构下,绝大多数的公司和个人都会基于 CDH 进行大数据 Hadoop 集群的搭建与部署,但 CDH 本身并未提供基于 ARM 架构的版本,所以在当前火热的 ARM 架构和大数据发展下,如何在基于 ARM 架构的集群上搭建 Hadoop 集群是一个需要解决的问题。当前基于 ARM 架构的 Hadoop 集群搭建有多种解决方案:重新编译适用于 ARM 架构的 CDH 源码,基于编译后的 CDH 进行整体 Hadoop 集群部署。基于 Hadoop 开源版本的各个框架和组件,自行搭建部署 Hadoop 集群。自研 Hadoop 管理平台,即类似于 CDH 的 WEB 操作平台,用于整体 Hadoop 集群部署。上述解决方案中,基于 Hadoop 开源版本的部署,会更加的贴近于 Hadoop 生态的蓬勃发展,并且能够更好地基于需求进行整个 Hadoop 集群的升级或优化。本文将介绍如何基于 Hadoop 开源版本完成一个大数据 Hadoop 集群的搭建。三、Hadoop 组件和本地安装得益于当前 ARM 架构的蓬勃发展,当前国内基于 ARM 架构投入研发的公司也越来越多,伴随着大家的研发与开源贡献,当前主流并且较为核心的 Hadoop 框架都已有支持 ARM 架构的版本。本文将介绍如何安装 Zookeeper、Hadoop、Hive 和 Spark 用于实现基于开源 Hadoop 框架的大数据集群搭建。3.1、配置免密和时钟同步Hadoop 集群内部通信,需设置各个机器互相免密登录,并且各机器之间应确保时钟同步。设置免密可通过修改 .ssh/authorized_keys 文件,设置 ssh 访问,在此不详细赘述。设置 NTP 时间同步是用于确保分布式集群的时间一致性,在此不详细赘述。模拟集群模式至少需要 3 台机器,默认以 node1,node2 和 node3 来指代,其中 node1 作为 master 节点。3.2、JAVA3.2.1 简介Java 是搭建 Hadoop 集群最基础的配置,当前业界使用较为主流的是 JAVA8 和 JAVA11,由于当前 Hadoop 开源框架主流版本依旧使用 JAVA8,故本文使用 JAVA8。3.2.2 解压并移动上传 JAVA 包至 /usr/local 目录下,本文使用的是 zulu-java8-aarch64 的包。tar -zxvf /usr/local/java8.tar.gzmv /usr/local/java8 /opt/java3.2.3 修改环境变量vim ~/.bashrcexport JAVA_HOME=/opt/javaexport JRE_HOME=$JAVA_HOME/jreexport CLASSPATH=.JAVA_HOME/lib{JRE_HOME}/libexport ATH=$JAVA_HOME/binPATHsource ~/.bashrc3.2.4 验证java -version3.3 Zookeeper3.3.1 简介Zookeeper 是一个分布式、开源的分布式应用程序协调服务,Hadoop 集群的各个组件的通信都依赖于 Zookeeper,所以首先安装 Zookeeper。3.3.2 解压并移动上传 Zookeeper 包至 /usr/local 目录下,本文使用的是 zk-3.4.14 版本。tar -zxvf /usr/local/zookeeper.tar.gzmv /usr/local/zookeeper /opt/zookeeper3.3.3 修改 conf 下配置cd /opt/zookeeper/confcp zoo_sample.cfg zoo.cfgvim zoo.cfgdataDir=/opt/zookeeper/dataserver.1=node1:2888:3888server.1=node1:2888:3888server.1=node1:2888:38883.3.4 其他配置cd /opt/zookeepermkdir dataecho 1 > /opt/zookeeper/data/myid(node1 为 1,node2 为 2,node3 为 3)3.3.5 scp 至各机器并修改 myidscp -r /opt/zookeeper node2:/opt/zookeeper其他机器相同操作ssh node2echo 2 > /opt/zookeeper/data/myid3.3.6 添加环境变量export ZOOKEEPER_HOME=/opt/zookeeper/zookeeper-3.4.14export ATH=$ZOOKEEPER_HOME/binPATH# 更新source ~/.bashrc3.3.7 启动cd /opt/zookeeper/bin./zkServer.sh start3.3.8 查看状态jps有一个进程名为 QuorumPeerMaincd /opt/zookeeper/bin./zkServer.sh status3.4、Hadoop3.4.1 简介Hadoop 生态其实最初起源于 Hadoop 这个框架,Hadoop 中包括分布式文件存储系统 HDFS(Hadoop Distributed File System)、集群管理系统 YARN(Yet Another Resource Negotiator)和计算框架 MR(MapReduce)。3.4.2 解压并移动上传 Hadoop 包至 /usr/local 目录下,本文使用的是 hadoop-3.3.5-arrch64 版本。tar -zxvf /usr/local/hadoop.tar.gzmv /usr/local/hadoop /opt/hadoop3.4.3 配置环境变量vim ~/.bashrcexport HADOOP_HOME=/opt/hadoop/hadoop-3.3.5export HADOOP_USER_NAME=userexport ATH=$PATHHADOOP_HOME/binHADOOP_HOME/sbin# 更新source ~/.bashrc3.4.4 验证环境变量cd /opt/hadoop/bin./hadoop version3.4.5 修改 hadoop-env.sh 文件export JAVA_HOME=/opt/java# 修改启动用户为 rootexport HDFS_NAMENODE_USER=rootexport HDFS_DATANODE_USER=rootexport HDFS_SECONDARYNAMENODE_USER=rootexport YARN_RESOURCEMANAGER_USER=rootexport YARN_NODEMANAGER_USER=rootexport YARN_PROXYSERVER_USER=root3.4.6 配置 core-site.xml、hdfs-site.xml、yarn-site.xml 和 mapred-site.xmlcd /opt/hadoop/etc/hadoopcore-site.xmlcore-site.xml 文件中的主要是集群全局参数,用于定义系统级别的参数,如 HDFS 的 namenode 地址、Hadoop 临时目录等。           fs.defaultFS    hdfs://node1:8020         fs.trash.interval    1         io.compression.codecs    org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.DeflateCodec,org.apache.hadoop.io.compress.SnappyCodec,org.apache.hadoop.io.compress.Lz4Codec         hadoop.security.authentication    simple         hadoop.security.authorization    false         hadoop.rpc.protection    authentication         hadoop.security.auth_to_local    DEFAULT         hadoop.proxyuser.oozie.hosts    *         hadoop.proxyuser.oozie.groups    *         hadoop.proxyuser.flume.hosts    *         hadoop.proxyuser.flume.groups    *         hadoop.proxyuser.HTTP.hosts    *         hadoop.proxyuser.HTTP.groups    *         hadoop.proxyuser.hive.hosts    *         hadoop.proxyuser.hive.groups    *         hadoop.proxyuser.hue.hosts    *         hadoop.proxyuser.hue.groups    *         hadoop.proxyuser.httpfs.hosts    *         hadoop.proxyuser.httpfs.groups    *         hadoop.proxyuser.hdfs.groups    *         hadoop.proxyuser.hdfs.hosts    *         hadoop.proxyuser.yarn.hosts    *         hadoop.proxyuser.yarn.groups    *         hadoop.security.group.mapping    org.apache.hadoop.security.ShellBasedUnixGroupsMapping         hadoop.security.instrumentation.requires.admin    false         net.topology.script.file.name    /etc/hadoop/conf.cloudera.yarn/topology.py         io.file.buffer.size    65536         hadoop.ssl.enabled    false         hadoop.ssl.require.client.cert    false    true         hadoop.ssl.keystores.factory.class    org.apache.hadoop.security.ssl.FileBasedKeyStoresFactory    true         hadoop.ssl.server.conf    ssl-server.xml    true         hadoop.ssl.client.conf    ssl-client.xml    true  hdfs-site.xmlhdfs-site.xml 文件是关于 HDFS 的配置信息,其中重点包括 namenode 节点地址、second namenode 节点地址、hdfs 的副本数和 block 块大小等。         dfs.namenode.name.dir    /opt/hadoop/hadoop-3.3.5/data/namenode           dfs.namenode.servicerpc-address    node1:8022           dfs.namenode.secondary.http-address    node2:8022         dfs.https.address    node1:9871           dfs.datanode.data.dir    /opt/hadoop/hadoop-3.3.5/data/datanode         dfs.https.port    9871         dfs.namenode.http-address    node1:9870           dfs.replication    3           dfs.blocksize    134217728         dfs.client.use.datanode.hostname    false         fs.permissions.umask-mode    022         dfs.client.block.write.locateFollowingBlock.retries    7         dfs.namenode.acls.enabled    false         dfs.client.read.shortcircuit    false         dfs.domain.socket.path    /var/run/hdfs-sockets/dn         dfs.client.read.shortcircuit.skip.checksum    false         dfs.client.domain.socket.data.traffic    false         dfs.datanode.hdfs-blocks-metadata.enabled    true  yarn.site.xmlyarn-site.xml 文件是 YARN 的配置文件信息,主要包括 resource manager 地址和 yarn 日志存放地址等。                yarn.resourcemanager.hostname        node1                 yarn.nodemanager.aux-services        mapreduce_shuffle                    yarn.nodemanager.local-dirs        file:///home/shaocx/.bigdata/hadoop/data/nm                     yarn.log.server.url        http://node1:19888/jobhistory/logs/                 yarn.log-aggregation-enable        true                 yarn.web-proxy.address        node1:54321                 yarn.log-aggregation.retain-seconds        -1                 yarn.nodemanager.remote-app-log-dir        /logs                 yarn.nodemanager.pmem-check-enabled        false                 yarn.nodemanager.vmem-check-enabled        false    mapred-site.xmlmapred-site.xml 文件是 MapReduce 的参数配置文件,其中中的包括使用 yarn 进行 job 的调度管理、job 的历史文件存放位置等。                 mapreduce.framework.name        yarn                 mapreduce.jobhistory.address        node1:10020                 mapreduce.jobhistory.webapp.address        node1:19888                 yarn.app.mapreduce.am.env        HADOOP_MAPRED_HOME=/opt/hadoop/hadoop-3.3.5                 mapreduce.map.env        HADOOP_MAPRED_HOME=/opt/hadoop/hadoop-3.3.5                 mapreduce.reduce.env        HADOOP_MAPRED_HOME=/opt/hadoop/hadoop-3.3.5                 mapreduce.job.ubertask.enable        true    3.4.7 修改 workers 文件vim /opt/hadoop/etc/hadoop/workersnode1node2node33.4.8 scp 文件至各节点并配置scp -r /opt/hadoop node2:/opt/hadoop其他节点相同操作各节点设置环境变量vim ~/.bashrc3.4.9 初始化cd /opt/hadoop/bin./hadoop namenode -format3.4.10 启动cd /opt/hadoop/sbin./start-all.sh3.4.11 各节点状态查看MasterjpsJpsResourceManagerQuorumPeerMainNameNodeNodeManagerWebAppProxyServerDataNodeSecond Namenode jps SecondaryNameNode NodeManager Jps DataNode QuorumPeerMainWorkerjpsDataNodeNodeManagerJpsQuorumPeerMain3.5、Mysql3.5.1 简介Mysql 的安装是为了使用 Mysql 作为 Hive 的基础库。3.5.2 解压上传 Mysql 压缩包至 /usr/local 目录下,使用的是 mysql-5.7.27-aarch64 版本的包。tar -zxvf /usr/local/mysql-5.7.27-aarch64.tar.gz3.5.3 新建 log 文件夹mkdir -p /usr/local/mysql/logs3.5.4 赋权 mysql 账号可访问 mysql 文件夹chmod -R mysql:mysql /usr/local/mysql3.5.5 修改初始化启动免密登录cd /usr/local/mysqlvim my.cnf[mysqld]下增加 skip-grant-tables3.5.6 初始化cd /usr/local/mysql/bin./mysqld --initialize --console3.5.7 启动./mysqld -start 3.6、Hive3.6.1 简介Hive 是基于 Hadoop 之上的一个分布式数据仓库工具,可能经常能够听到说数仓的数据存储于 Hive 中,这其实是不准确的。Hive 本质是让开发人员能够使用类 SQL 的 HiveQL 对存储于 HDFS 上的文件能够进行快速操作,Hive 会将 HiveQL 转化为在 YARN 上 运行的 MapReduce 任务从而实现读取或操作。3.6.2 解压并移动上传 Hive 包至 /usr/local 目录下,使用的是 hive-3.1.2 版本的包。tar -zxvf /usr/local/hive.tar.gzmv /usr/local/hive /opt/hive3.6.3 配置文件cd /opt/hive/confcp hive-default.xml.template hive-site.xmlvim hive-site.xml删除 hive-site.xml 第 3215 行的 "&8"。将 hive-site.xml 中 "system:" 替换为 "",如 {system:java.io.tmpdir} 替换为 {java.io.tmpdir}hive-site.xml 最后追加数据库连接信息       javax.jdo.option.ConnectionUserName    root           javax.jdo.option.ConnectionPassword    password           javax.jdo.option.ConnectionURL    jdbc:mysql://node1:3306/hive         javax.jdo.option.ConnectionDriverName    com.mysql.cj.jdbc.Driver          hive.metastore.schema.verification     false  3.6.4 创建数据库在 Mysql 下创建 hive 库3.6.5 数据初始化上传 mysql-connector-java-8.0.15.jar 至 /opt/hive/lib 目录下cd /opt/hive/bin ./schematool -dbType mysql -initSchema3.6.6 修改环境变量vim ~/.bashrcexport HIVE_HOME=/opt/hive/apache-hive-3.1.2-binexport ATH=$PATHHIVE_HOME/binPATHsource ~/.bashrc3.6.7 验证查看 Mysql 下的 hive 库下是否新增 74 张表。启动 Hivecd /opt/hive/bin./hive3.7 Spark3.7.1 简介Spark 是一个类似于 MapReduce 的分布式快速计算框架,用于解决 MapReduce 的查询效率问题,Spark 将中间的查询结果读取到内存中用于后续继续计算,大大提高了查询效率。3.7.2 解压并移动上传 Spark 包至 /usr/local 下,使用的是 spark-3.3.2-hadoop3-scala2.13 版本,从包名可以看出这是基于 Hadoop3 和 Scala2.13 版本的 Spark-3.3.2。tar -zxvf /usr/local/sparkmv /usr/local/hive /opt/spark3.7.3 修改 spark-env 文件cd /opt/spark/confcp spark-env.sh.template spark-env.shvim spark-env.shexport JAVA_HOME=/opt/javaexport HADOOP_HOME=/opt/hadoopexport HADOOP_CONF_DIR=/opt/hadoop/etc/hadoopexport HADOOP_LOG_DIR=/opt/hadoop/logs3.7.4 修改 spark-defaults.conf 文件cp spark-defaults.conf.template spark-defaults.confvim spark-defaults.confspark.master yarnspark.eventLog.enabled truespark.driver.memory 5g3.7.5 启动cd /opt/spark/bin./spark-shell一段启动日志后,Spark 启动成功并进入操作控制台,可以执行增删改查命令。一个基于开源 Hadoop 框架的基础的大数据集群也就搭建完成了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-26 12:12 , Processed in 0.464483 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表