# 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 ```