[Hadoop学习笔记 1] Hadoop伪分布式环境部署(OpenSUSE 15.6 + Oracle JDK 8)

一、安装JDK

本文所搭建 Hadoop 伪分布式环境将使用 Oracle JDK 8 ,将从 Oracle Java SE 8 Archive Downloads 页面中下载 Linux 版本的 JDK ,下载地址如下:

Java Archive Downloads - Java SE 8u211 and later

建议下载 .tar.gz 格式的压缩包,以便于对 JDK 版本做出更为便利的管理,可根据实际需求将 JDK 压缩包放置到合适的位置,本文将压缩包放置到 /opt/software 目录下,并在此解压

localhost:/opt/software # tar -zxvf jdk-8u441-linux-x64.tar.gz

其中 jdk-8u441-linux-x64.tar.gz 为本文所使用的 JDK 压缩包文件名,请根据实际文件名作出修改

解压完成后对 Java 目录创建链接,以便于配置环境变量,切换 Java 版本仅需更改链接目标而无需更改环境变量,本文将在 /opt/softln 目录下创建链接,此步为可选操作,可根据自身实际需求进行调整执行

localhost:/opt/software # ls
jdk-8u441-linux-x64.tar.gz  jdk1.8.0_441
localhost:/opt/software # ln -sfn /opt/software/jdk1.8.0_441 /opt/softln/java

修改 /etc/profile 文件配置环境变量,多种远程 ssh 连接客户端如 MobaXterm 等可使用 NotePad++ 等工具对 Linux 端文件进行修改,本文使用 vim 

localhost:~ # vim /etc/profile

在文件末尾追加以下内容:

export JAVA_HOME=/opt/softln/java
export PATH=$PATH:$JAVA_HOME/bin

其中 JAVA_HOME 变量的值根据实际作出调整

保存后执行

localhost:~ # source /etc/profile

使配置的环境变量生效,验证

localhost:~ # java -version
java version "1.8.0_441"
Java(TM) SE Runtime Environment (build 1.8.0_441-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.441-b07, mixed mode)

二、添加hadoop用户和组

为了使权限管理更为精细化,本文中 hadoop 将不以 root 用户运行,而是添加 hadoop 用户和组以便于后续更为精细化的权限管理

添加 hadoop 组:

localhost:~ # groupadd hadoop

添加 hadoop 用户:

localhost:~ # useradd hadoop -g hadoop

三、配置ssh免密登录

将用户切换为 hadoop 并进入用户主目录

localhost:~ # su hadoop
hadoop@localhost:/root> cd ~

创建并进入 .ssh 目录

hadoop@localhost:~> mkdir -p .ssh && cd .ssh

生成私钥与公钥

hadoop@localhost:~/.ssh> ssh-keygen -t ecdsa -N '' -f './id_ecdsa' –q
hadoop@localhost:~/.ssh> cat id_ecdsa.pub > authorized_keys
hadoop@localhost:~/.ssh> chmod 600 authorized_keys
hadoop@localhost:~/.ssh> chmod 700 ~/.ssh

现在免密登录时还会出现

hadoop@localhost:~/.ssh> ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
ED25519 key fingerprint is SHA256:z5X8ELs2z1M9G20p5nowFijsselts3UO6VZN63GMoVg.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

切换 root 用户修改 /etc/ssh/ssh_config ,找到

#   StrictHostKeyChecking ask

取消注释改为

StrictHostKeyChecking no

切换回 hadoop 用户测试免密登录

hadoop@localhost:~/.ssh> ssh localhost
Warning: Permanently added 'localhost' (ED25519) to the list of known hosts.
Have a lot of fun...
hadoop@localhost:~>

四、安装配置Hadoop

国内镜像站或 Apache Archive 均可下载 Hadoop ,本文将安装 Hadoop 2.10.2 ,可在以下链接中下载

Apache Archive

Index of /dist/hadoop/common/hadoop-2.10.2

中国科学技术大学镜像站

Index of /apache/hadoop/common/hadoop-2.10.2/

推荐使用国内镜像站下载

将压缩包放置到合适的位置,本文依然将压缩包放置到 /opt/software 下,并在此解压

localhost:/opt/software # tar -zxvf hadoop-2.10.2.tar.gz

其中 hadoop-2.10.2.tar.gz 为本文所使用的压缩包文件名,请根据实际文件名修改

解压完成后创建对 Hadoop 目录创建链接,以便于配置环境变量,本文将在 /opt/softln 目录下创建链接,此步为可选操作,可根据自身实际需求进行调整执行

localhost:/opt/software # ls
hadoop-2.10.2  hadoop-2.10.2.tar.gz  jdk-8u441-linux-x64.tar.gz  jdk1.8.0_441
localhost:/opt/software # ln -sfn /opt/software/hadoop-2.10.2 /opt/softln/hadoop

更改目录归属,使其归属于 hadoop 用户和组

localhost:/opt/software # chown -R hadoop:hadoop hadoop-2.10.2

修改 /etc/profile 文件配置环境变量,将文件末尾环境变量配置修改为

export JAVA_HOME=/opt/softln/java
export HADOOP_HOME=/opt/softln/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

其中 HADOOP_HOME 变量的值根据实际做出调整

保存以后执行

localhost:~ # source /etc/profile

使配置的环境变量生效

修改主机名为 master 并重新启动,可根据需要选择其他主机名

localhost:~ # hostnamectl set-hostname master
localhost:~ # reboot

配置 /etc/hosts 文件,向文件末尾追加

192.168.171.129 master

其中 master 为上文所设置的主机名, 192.168.171.129 为当前 Linux 主机 IP ,请根据实际情况作出修改

切换为 hadoop 用户并创建 tmp 目录, name 目录和 data 目录,本文中将这三个目录放置到 $HADOOP_HOME 中,可根据需求灵活选择

master:~ # su hadoop
hadoop@master:/root> mkdir -p $HADOOP_HOME/tmp
hadoop@master:/root> mkdir -p $HADOOP_HOME/hdfs/data
hadoop@master:/root> mkdir -p $HADOOP_HOME/hdfs/name

配置 $HADOOP_HOME/etc/hadoop/core-site.xml

<configuration> 标签中加入配置

  <property>
    <name>hadoop.tmp.dir</name>
    <value>file:/opt/softln/hadoop/tmp</value>
  </property>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
  </property>

/opt/softln/hadoop/tmp 值为先前创建的 tmp 目录, hdfs://master:9000 中的 master 为先前配置的主机名,请根据实际情况修改

配置 $HADOOP_HOME/etc/hadoop/hadoop-env.sh

export JAVA_HOME=${JAVA_HOME}

改为

export JAVA_HOME=/opt/softln/java

/opt/softln/java 为先前创建的链接,请根据实际情况修改

配置 $HADOOP_HOME/etc/hadoop/hdfs-site.xml

<configuration> 标签中加入配置

	<property>
		<name>dfs.replication</name>
		<value>3</value>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>/opt/softln/hadoop/hdfs/name</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>/opt/softln/hadoop/hdfs/data</value>
	</property>

其中 /opt/softln/hadoop/hdfs/name/opt/softln/hadoop/hdfs/data 均为上文所创建的 namedata 目录,请根据实际情况作出修改

配置 $HADOOP_HOME/etc/hadoop/mapred-site.xml

执行

hadoop@master:/root> cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml

<configuration> 标签中加入配置

	<property>
	  <name>mapreduce.framework.name</name>
	  <value>yarn</value>
	</property>
	<property>
	  <name>mapred.job.tracker</name>
	  <value>http://master:9001</value>
	</property>

其中 http://master:9001 中的 master 为上文配置的主机名,请根据实际情况修改

配置 $HADOOP_HOME/etc/hadoop/yarn-env.sh

JAVA_HOME=$JAVA_HOME

改为

JAVA_HOME=/opt/softln/java

/opt/softln/java 为先前创建的链接,请根据实际情况修改

配置 $HADOOP_HOME/etc/hadoop/yarn-site.xml

<configuration> 标签中加入配置

	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>master</value>
	</property>

其中 master 为上文配置的主机名,请根据实际情况修改

五、格式化NameNode

切换到 hadoop 用户执行

hadoop@master:~> hdfs namenode –format

六、启动dfs和yarn

操作前请先切换到 hadoop 用户

启动 dfs

hadoop@master:~> start-dfs.sh
Starting namenodes on [master]
master: starting namenode, logging to /opt/software/hadoop-2.10.2/logs/hadoop-hadoop-namenode-master.out
localhost: starting datanode, logging to /opt/software/hadoop-2.10.2/logs/hadoop-hadoop-datanode-master.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: Warning: Permanently added '0.0.0.0' (ED25519) to the list of known hosts.
0.0.0.0: starting secondarynamenode, logging to /opt/software/hadoop-2.10.2/logs/hadoop-hadoop-secondarynamenode-master.out

访问 http://192.168.171.129:50070/ 正常, 192.168.171.129 为本文 Linux 主机 IP ,请根据实际情况修改

启动 yarn

hadoop@master:~> start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /opt/software/hadoop-2.10.2/logs/yarn-hadoop-resourcemanager-master.out
localhost: starting nodemanager, logging to /opt/software/hadoop-2.10.2/logs/yarn-hadoop-nodemanager-master.out

访问 http://192.168.171.129:8088/ 正常, 192.168.171.129 为本文 Linux 主机 IP ,请根据实际情况修改

七、测试hdfs

生成测试文本文件

hadoop@master:~> echo "Hello Hadoop!" > test.txt
hadoop@master:~> ls
test.txt

hdfs 创建测试目录

hadoop@master:~> hdfs dfs -mkdir /test
hadoop@master:~> hdfs dfs -ls /
Found 1 items
drwxr-xr-x   - hadoop supergroup          0 2025-05-21 13:07 /test

hdfs 向测试目录上传文件

hadoop@master:~> hdfs dfs -put ./test.txt /test
hadoop@master:~> hdfs dfs -ls /
Found 1 items
drwxr-xr-x   - hadoop supergroup          0 2025-05-21 13:09 /test
hadoop@master:~> hdfs dfs -ls /test
Found 1 items
-rw-r--r--   3 hadoop supergroup         14 2025-05-21 13:09 /test/test.txt

查看测试文件内容

hadoop@master:~> hdfs dfs -cat /test/test.txt
Hello Hadoop!

八、测试yarn

wordcount 测试

hadoop@master:~> hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.2.jar wordcount /test/test.txt /testout

查看运行结果

hadoop@master:~> hdfs dfs -ls /
Found 3 items
drwxr-xr-x   - hadoop supergroup          0 2025-05-21 13:09 /test
drwxr-xr-x   - hadoop supergroup          0 2025-05-21 13:19 /testout
drwx------   - hadoop supergroup          0 2025-05-21 13:19 /tmp
hadoop@master:~> hdfs dfs -ls /testout/
Found 2 items
-rw-r--r--   3 hadoop supergroup          0 2025-05-21 13:19 /testout/_SUCCESS
-rw-r--r--   3 hadoop supergroup         18 2025-05-21 13:19 /testout/part-r-00000
hadoop@master:~> hdfs dfs -cat /testout/*
Hadoop! 1
Hello   1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值