在Windows11上使用WSL安装Hadoop伪分布式
最近调试程序,由于各种原因把,不允许开发机器连接Hadoop集群,只能在本机部署了,我使用了Docker和WSL(适用于Linux的Windows子系统)两种方法,经过对比,最终决定用WSL,Docker还不算稳定,动不动就闪退了。
环境
- Hadoop 3.2.2
- JDK 1.8.221
- WSL子系统,我选择的是Ubuntu22.04 LTS
如果没开启WSL子系统,可通过如下命令进行开启:
1 | Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux |
JDK 默认算你配好的,如果只使用Hadoop,那么JDK11也是阔以滴,但我还需要用Hive,所以只能用JDK1.8了。
部署Hadoop
下载Hadoop安装包
在WSL终端中(不是PowerShell),执行如下命令:
1 | wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.2/hadoop-3.3.2.tar.gz |
如果提示证书有问题,可以添加--no-check-certificate参数跳过验证。
解压缩
先创建一个文件夹,方便管理
1 | mkdir ~/hadoop |
解压到该文件
1 | tar -xvzf hadoop-3.3.2.tar.gz -C ~/hadoop |
配置SSH免密
先执行如下命令尝试使用ssh连接
1 | ssh localhost |
如果提示端口不同,那说明没启动ssh,为了避免个别发行版没装ssh,先安装一发
1 | sudo apt install ssh |
然后启动ssh
1 | sudo apt-get install ssh |
配置免密
1 | ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa |
配置Hadoop
配置环境变量
1 | # 我使用的是zsh,所以我修改zshrc, |
添加以下环境变量:
1 | # 这个无所谓的,你配置JAVA17都可以,hadoop会读取hdoop-env.sh的java_home |
运行以下命令以获取最新变量:
1 | source ~/.zshrc |
配置hadoop-env.sh
1 | vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh |
只需要设置JAVA_HOME即可
1 | export JAVA_HOME=/usr/local/java/jdk1.8.0_221 |
配置core-site.xml
1 | vim $HADOOP_HOME/etc/hadoop/core-site.xml |
添加如下配置:
1 | <configuration> |
配置hdfs-site.xml
1 | vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml |
添加如下内容:
1 | <configuration> |
创建配置中的路径
1 | mkdir -p /home/charles/hadoop/dfs/nn |
配置mapred-site.xml
1 | vim $HADOOP_HOME/etc/hadoop/mapred-site.xml |
添加如下内容:
1 | <configuration> |
配置yarn-site.xml
1 | vim $HADOOP_HOME/etc/hadoop/yarn-site.xml |
添加如下配置:
1 | <configuration> |
格式化namenode
运行如下命令:
1 | cd $HADOOP_HOME |
启动Hadoop服务
启动HDFS
1 | cd $HADOOP_HOME |
通过jps确认进程
1 | jps |
查看namenode页面
可通过打开如下连接来查看
http://localhost:9870/dfshealth.html#tab-overview
启动yarn
1 | cd $HADOOP_HOME |
启动服务后,可以看到 NodeManager 和 ResourceManager 的另外两个进程。
通过页面来查看
建议
通勤的话建议把服务关了吧,挺费电的。
1 | # 关闭所有服务 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 码农笔记!
评论
WalineDisqus











