念念不忘
必会回响

在Windows11上使用WSL安装Hadoop伪分布式

最近调试程序,由于各种原因把,不允许开发机器连接Hadoop集群,只能在本机部署了,我使用了Docker和WSL(适用于Linux的Windows子系统)两种方法,经过对比,最终决定用WSL,Docker还不算稳定,动不动就闪退了。

一、环境

  • Hadoop 3.2.2
  • JDK 1.8.221
  • WSL子系统,我选择的是Ubuntu22.04 LTS

如果没开启WSL子系统,可通过如下命令进行开启:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

JDK 默认算你配好的,如果只使用Hadoop,那么JDK11也是阔以滴,但我还需要用Hive,所以只能用JDK1.8了。

二、部署Hadoop

1. 下载Hadoop安装包

在WSL终端中(不是PowerShell),执行如下命令:

wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.2/hadoop-3.3.2.tar.gz

如果提示证书有问题,可以添加--no-check-certificate参数跳过验证。

2. 解压缩

先创建一个文件夹,方便管理

mkdir ~/hadoop

解压到该文件

tar -xvzf hadoop-3.3.2.tar.gz -C ~/hadoop

3. 配置SSH免密

先执行如下命令尝试使用ssh连接

ssh localhost

如果提示端口不同,那说明没启动ssh,为了避免个别发行版没装ssh,先安装一发

sudo apt install ssh 

然后启动ssh

sudo apt-get install ssh

配置免密

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

4. 配置Hadoop

4.1 配置环境变量

# 我使用的是zsh,所以我修改zshrc,
vim ~/.zshrc

# 如果没装zsh,执行如下
vim ~/.bashrc

添加以下环境变量:

# 这个无所谓的,你配置JAVA17都可以,hadoop会读取hdoop-env.sh的java_home
export JAVA_HOME=/usr/local/java/jdk1.8.0_221
export HADOOP_HOME=~/hadoop/hadoop-3.3.2
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

运行以下命令以获取最新变量:

source ~/.zshrc
# 或者 source ~/.bashrc

4.2 配置hadoop-env.sh

vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh

只需要设置JAVA_HOME即可

export JAVA_HOME=/usr/local/java/jdk1.8.0_221

4.3 配置core-site.xml

vim $HADOOP_HOME/etc/hadoop/core-site.xml

添加如下配置:

<configuration>
     <property>
         <name>fs.defaultFS</name>
         <value>hdfs://localhost:9000</value>
     </property>
</configuration>

4.4 配置hdfs-site.xml

vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml

添加如下内容:

<configuration>
     <property>
         <name>dfs.replication</name>
         <value>1</value>
     </property>
     <property>
         <name>dfs.namenode.name.dir</name>
         <value>/home/charles/hadoop/dfs/nn</value>
     </property>
     <property>
         <name>dfs.datanode.data.dir</name>
         <value>/home/charles/hadoop/dfs/dn</value>
     </property>
</configuration>

创建配置中的路径

mkdir -p /home/charles/hadoop/dfs/nn
mkdir -p /home/charles/hadoop/dfs/dn

4.5 配置mapred-site.xml

vim $HADOOP_HOME/etc/hadoop/mapred-site.xml

添加如下内容:

<configuration>
     <property>
         <name>mapreduce.framework.name</name>
         <value>yarn</value>
     </property>
     <property>
         <name>mapreduce.application.classpath</name>
         <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
     </property>
</configuration>

4.6 配置yarn-site.xml

vim $HADOOP_HOME/etc/hadoop/yarn-site.xml

添加如下配置:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</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>
</configuration>

5. 格式化namenode

运行如下命令:

cd $HADOOP_HOME
bin/hdfs namenode -format

三、启动Hadoop服务

1. 启动HDFS

cd $HADOOP_HOME
sbin/start-dfs.sh

Starting namenodes on [localhost]
Starting datanodes
Starting secondary namenodes [charles]

通过jps确认进程

jps

8022 Jps
7820 SecondaryNameNode
7390 NameNode
7583 DataNode

查看namenode页面

可通过打开如下连接来查看

2. 启动yarn

cd $HADOOP_HOME
sbin/start-yarn.sh

Starting resourcemanager
Starting nodemanagers

启动服务后,可以看到 NodeManager 和 ResourceManager 的另外两个进程。

通过页面来查看

http://localhost:8088/cluster

四、建议

通勤的话建议把服务关了吧,挺费电的。

# 关闭所有服务
sbin/stop-all.sh 
# 启动所有服务
sbin/start-all.sh
赞(5) 打赏
未经允许不得转载:堆上小栈 » 在Windows11上使用WSL安装Hadoop伪分布式

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册