Hadoop 是一个开源的框架,主要用于处理海量数据。它能在分布式环境中存储和处理数据,具有高容错性、可扩展性和高性能等优点。Hadoop 可以处理结构化、半结构化和非结构化数据,适用于数据挖掘、机器学习、大数据分析等多种场景。
想象一个大型餐厅的运营:
需要掌握Linux基础
需要先准备三台centos服务器,每台硬盘50G,内存分配为4G , 2G ,2G,先创建一台即可,后续两台用克隆来进行创建
创建root用户
最终需要三台主机 ===> hadoop102 , hadoop103 , hadoop104
该笔记所有组件都是在/opt/module目录下
每搭建完一个组件要细心检查是否是多节点,如果是,那么是否需要修改某些配置
每搭建完一个组件需要配置并且source环境变量
在此处设置网段,这里我设置为10
# 导入依赖
sudo yum ‐y install vim
# 每台虚拟机终端配置IP地址
vim /etc/sysconfig/network‐scripts/ifcfg‐ens33
BOOTPROTO="static"
IPADDR=192.168.10.102
NETMASK=255.255.255.0
GATEWAY=192.168.10.2
DNS1=8.8.8.8
# 重启网络
service network restart
# hosts映射
vim /etc/hosts
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
# 创建组件存放目录
mkdir ‐p /opt/module/
这里需要先下载jdk和Hadoop对应压缩包,并通过tar命令解压到 /opt/module/
jdk采用1.8(jdk-8u212-linux-x64.tar.gz)hadoop采用3.3.4 (hadoop-3.3.4.tar.gz)
# 配置jdk、hadoop环境变量
# 这里解压完后习惯性使用mv命令去掉版本号
vim /etc/profile
# JAVA_HOME
export JAVA_HOME=/opt/module/jdk
export PATH=:$JAVA_HOME/bin:$PATH
# HADOOP_HOME
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export HADOOP_HOME=/opt/module/hadoop
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
source /etc/profile
cd /opt/module/hadoop/etc/hadoop
vim hadoop-env.sh
export JAVA_HOME=/opt/module/jdk
vim core-site.xml
<configuration>
<!-- 指定NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop/data</value>
</property>
<!-- 配置HDFS网页登录使用的静态用户为root-->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 配置该root(superUser)允许通过代理访问的主机节点 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<!-- 配置该root(superUser)允许通过代理用户所属组 -->
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<!-- 配置该root(superUser)允许通过代理的用户-->
<property>
<name>hadoop.proxyuser.root.users</name>
<value>*</value>
</property>
</configuration>
vim hdfs-site.xml
<configuration>
<!-- nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
<!-- 测试环境指定HDFS副本的数量1 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
vim mapred-site.xml
<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop102:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop102:19888</value>
</property>
</configuration>
vim yarn-site.xml
<configuration>
<!-- 指定MR走shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!--yarn单个容器允许分配的最大最小内存 -->
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<!-- yarn容器允许管理的物理内存大小 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
vim workers
hadoop102
hadoop103
hadoop104
以上操作进行完毕之后关闭虚拟机创建完整克隆两个,分别为hadoop103和hadoop104。
克隆完毕之后全部开启,然后进行以下操作
# 进入虚拟机修改ip地址 vim /etc/sysconfig/network-scripts/ifcfg-ens33 (对照hosts配置)
# 修改主机名:
hostnamectl set-hostname hadoop103~104 # (这里根据情况写103或104)
bash
# 防火墙关闭
systemctl stop firewalld.service
systemctl disable firewalld.service
# ssh免密登录hadoop102上操作即可
# 生成公钥私钥 (一直回车)
ssh-keygen
# hadoop102上配置免密登录到hadoop102 hadoop103 hadoop104
# 这里选择yes以及输入root用户密码进行确认
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
# 互信测试成功之后进行以下操作
# 如果需要重新格式化Hadoop需要对于Hadoop的core-site.xml的hadoop.tmp.dir属性把对应的tmp文件删除掉
# hadoop102下格式化namenode
hdfs namenode -format
输入echo $PATH , 最后一个路径就是用户可以在系统任何地方直接执行
创建/root/bin/目录
# 一键启动
vim allstart.sh
#!/bin/bash
# 启动 DFS
start-dfs.sh
# 启动 YARN ResourceManager
ssh hadoop103 "source /etc/profile;/opt/module/hadoop/sbin/yarn-daemon.sh start resourcemanager"
# 启动 YARN NodeManagers
for node in hadoop102 hadoop103 hadoop104; do
ssh $node "source /etc/profile;/opt/module/hadoop/sbin/yarn-daemon.sh start nodemanager"
done
echo "---------所有服务启动完成---------"
# 一键查看进程
vim xcall
#!/bin/bash
# 定义机器列表
machines=("hadoop102" "hadoop103" "hadoop104")
# 设置 Java 安装路径
JAVA_HOME="/opt/module/jdk" # 请将此路径替换为实际的 Java 安装路径
export PATH="$JAVA_HOME/bin:$PATH"
# 遍历机器并执行 jps 命令
for machine in "${machines[@]}"; do
echo "---------- $machine ----------"
ssh "$machine" "export PATH=$JAVA_HOME/bin:\$PATH; jps"
echo ""
done
chmod 777 /root/bin/*
输入xcall回车 , 会有以下进程
hadoop102
NodeManager NameNode Jps DataNode
hadoop103
NodeManager ResourceManager jps DataNode
hadoop104
SecondaryNameNode DataNode Jps NodeManager
浏览器输入访问地址 ===> http://hadoop102:9870/
要通过映射则需要在你本机的C:\Windows\System32\drivers\etc目录下的hosts进行映射
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
如不进行映射则需要通过ip来进行访问:http://192.168.10.102:9870/
http://hadoop104:9868/status.html
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。