# hadoop学习
**Repository Path**: Vae_Yume/hadoop-learning
## Basic Information
- **Project Name**: hadoop学习
- **Description**: 个人hadoop学习
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2024-10-23
- **Last Updated**: 2025-06-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# hadoop学习
#### 介绍
个人hadoop学习
#### 一、Linux虚拟环境安装软件
1.CentOS 镜像已经停止服务,我们需要更换镜像(这里选择阿里云镜像)
> `cd /etc/yum.repos.d/`
> `cp CentOS-Base.repo CentOS-Base.repo.bak`
> `ls`
- 下载阿里云的 yum 源
> `sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo`
- 清除旧 yum 缓存
> `yum clean all`
> `yum makecache`
> `yum update -y`
2.下载基础工具包
> `sudo yum install -y epel-release`
3.关闭防火墙
> `sudo systemctl stop firewalld`
> `sudo systemctl disable firewalld`
4.重启虚拟机
> `reboot`
5.配置yume用户具有root权限
- 修改/etc/sudoers文件,在107行下添加
> `yume ALL=(ALL) NOPASSWD:ALL`
6.在/opt目录下创建文件夹
> `sudo mkdir hadoop`
> `sudo mkdir java`
- 修改文件夹的所有者
> `sudo chown yume:yume /opt/hadoop/ /opt/java/`
#### 二、jdk安装
1.卸载现有JDK
> `rpm -qa | grep jdk | xargs rpm -e --nodeps`
- 检查还有无jdk
> `rpm -qa | grep jdk`
2.安装jdk
- 将jdk拖入java
3.解压JDK到/opt/java
> `tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/java/`
4.配置JDK环境变量
- 新建/etc/profile.d/my_env.sh文件
> `sudo vim /etc/profile.d/my_env.sh`
- 添加如下内容
> `#JAVA_HOME`
> `export JAVA_HOME=/opt/java/jdk1.8.0_212`
> `export PATH=$PATH:$JAVA_HOME/bin`
5.测试JDK是否安装成功
> `java -version`
#### 三、hadoop安装
1.将hadoop拖入hadoop文件夹
2.进入到Hadoop安装包路径下
> `cd /opt/hadoop/`
3.解压安装文件到/opt/hadoop/下
> `tar -zxvf hadoop-3.1.3.tar.gz -C /opt/hadoop/`
- - 这里是列表文本
4.将Hadoop添加到环境变量
- 到hadoop目录
> `cd /opt/hadoop/hadoop-3.1.3/`
- 打开/etc/profile.d/my_env.sh文件
> `sudo vim /etc/profile.d/my_env.sh`
- 在文件末尾添加JDK路径:(shitf+g)
> `#HADOOP_HOME`
> `export HADOOP_HOME=/opt/hadoop/hadoop-3.1.3`
> `export PATH=$PATH:$HADOOP_HOME/bin`
> `export PATH=$PATH:$HADOOP_HOME/sbin`
5.让修改后的文件生效
> `source /etc/profile`
6.测试是否安装成功
> `hadoop version`
#### 四、Hadoop运行模式
1.官方WordCount案例
- 创建在hadoop-3.1.3文件下面创建一个wcinput文件夹
> `mkdir wcinput`
- 在wcinput文件下创建一个word.txt文件
> `cd wcinput`
> `vim word.txt`
- 在文件中输入
> `yume yume`
> `vae vae vae`
- 回到Hadoop目录/opt/hadoop/hadoop-3.1.3
- 执行程序
> `bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput/ ./wcoutput`
- 查看结果
> `cat wcoutput/part-r-00000`
- 看到如下结果:
> vae 3
> yume 2
2.完全分布式运行模式
- 编写集群分发脚本xsync
- 在/home/yume目录下创建xsync文件
> `cd /home/yume`
> `mkdir bin`
> `cd bin/`
> `vim xsync`
- 在该文件中编写如下代码
```
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop4 hadoop6 hadoop7
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
```
- 修改脚本 xsync 具有执行权限
> `chmod 777 xsync`
- 删除shell脚本多余空格
> `sed -i 's/\r$//' xsync`
- 测试脚本
> `sudo xsync /bin/xsync`
#### 五、集群配置
1. 核心配置文件
- 配置core-site.xml
> `cd /opt/hadoop/hadoop-3.1.3/etc/hadoop/`
> `vim core-site.xml`
- 插入文件内容如下:
```
fs.defaultFS
hdfs://hadoop4:8020
hadoop.tmp.dir
/opt/hadoop/hadoop-3.1.3/data
```
- 配置HDFS文件
> `vim hdfs-site.xml`
- 插入文件内容如下:
```
dfs.namenode.http-address
hadoop4:9870
dfs.namenode.secondary.http-address
hadoop7:9868
```
- YARN配置文件
> `vim yarn-site.xml`
- 插入文件内容如下:
```
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
hadoop6
yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
```
- MapReduce配置文件
> `vim mapred-site.xml`
- 插入文件内容如下:
```
mapreduce.framework.name
yarn
```
- 修改文件
> `cd $HADOOP_HOME/share/hadoop/hdfs/webapps/static`
> `vim dfs-dust.js`
- 在61行将其删去改成
> `return new Date(Number(v)).toLocaleString();`
- 分发 dfs-dust.js 文件
> `xsync $HADOOP_HOME/share/hadoop/hdfs/webapps/static/dfs-dust.js`
- 配置 workers 文件
> `vim /opt/hadoop/hadoop-3.1.3/etc/hadoop/workers`
- 将其改成
```
hadoop4
hadoop6
hadoop7
```
- 在集群上分发配置好的Hadoop配置文件
> `xsync /opt/hadoop/hadoop-3.1.3/etc/hadoop/`
#### 六、集群启动
1. 在4格式化 NameNode 文件
> `hdfs namenode -format`
- 在hadoop-3.1.3路径下启动
> `sbin/start-dfs.sh`
- 在6上启动yarn
> `sbin/start-yarn.sh`
2. 在网页端可以看到
```
hadoop4:9870
hadoop6:8088
hadoop7:9868
```
3. 集群崩溃解决
- 清理所有机子上的 data 和 logs 文件
```
rm -r /opt/module/hadoop-3.1.3/logs
rm -r /opt/module/hadoop-3.1.3/data
```
- 格式化 NameNode 文件
> `hdfs namenode -format`
- 再启动
#### 七、配置 SSH 无密码登录
> `ssh-keygen -t rsa`
> `ssh-copy-id hadoop4`
#### 八、集群基本测试
- 上传文件夹
> `hadoop fs -mkdir /wcinput`
- 上传文件到集群
> `hadoop fs -put wcinput/word.txt /wcinput`
> `hadoop fs -put /opt/java/jdk-8u212-linux-x64.tar.gz /`
- 上传文件后查看文件存放位置
> `cd /opt/hadoop/hadoop-3.1.3/data/dfs/data/current/BP-1469362576-192.168.18.4-1730014710646/current/finalized/subdir0/subdir0`
> `cat blk_1073741825`
- 出现:
```
yume yume
vae vae vae
```