系统环境版本:ubuntu 20.04
Hadoop版本:hadoop 3.1.4
安装java环境
访问Oracle官网下载JDK1.8-Linux版安装包 官网地址
在 /usr/local 目录下新建一个java文件夹,命令行进入/usr/local/java
sudo mkdir /usr/local/java
cd /usr/local/java
将JDK1.8的安装包移动入/usr/local/java文件夹中
sudo mv ~/桌面/jdk-8u161.tar.gz /usr/local/java
解压JDK1.8压缩包
sudo tar -zxvf jdk-8u161.tar.gz
sudo mv jdk1.8.0_161 jdk1.8.0 #将解压后的文件内容移动到jdk1.8.0,可不做该操作
配置JDK1.8环境变量
nano ~/.bashrc
在文件尾加入如下内容
export JAVA_HOME=/usr/local/java/jdk1.8.0
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JEW_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
Ctrl+O Enter保存配置,Ctrl+X退出
执行以下命令使配置生效
source ~/.bashrc
测试配置情况
java -version
得到如上结果即成功安装JDK,版本为1.8.0_161
创建Hadoop用户
创建用户
sudo useradd -m hadoop -s /bin/bash
设置密码
sudo passwd hadoop
给hadoop用户增加管理员权限
sudo adduser hadoop sudo
更新apt-get
sudo apt-get update
安装SSH并配置SSH无密码登陆
sudo apt install openssh-server
安装完成后通过以下命令的登陆本机
ssh localhost
测试完毕后开始配置无密码登陆SSH
用ssh-keygen生成密钥,并将密钥加入授权
cd ~/.ssh/
ssh-keygen -t rsa
查看当前文件夹目录,可见多了两个文件
将id_rsa.pub复制,命令如下
cat ./id_rsa.pub >> ./authorized_keys
复制完后就可以无密码登陆SSH了
安装Hadoop
下载地址:官网链接
将下载好的压缩包移动到 /usr/local 目录下解压
sudo mv hadoop-3.1.4.tar.gz /usr/local
cd /usr/local
tar -zxvf hadoop-3.1.4.tar.gz
移动hadoop-3.1.4到hadoop文件夹,并修改hadoop目录权限
sudo mv hadoop-3.1.4 hadoop
sudo chown -R hadoop ./hadoop # 前一个hadoop为用户名
进入hadoop目录查看hadoop的版本信息
cd hadoop
./bin/hadoop version
显示版本信息为 3.1.4,至此Hadoop 3.1.4版安装成功
Hadoop伪分布式配置
修改配置文件 core-site.xml,将core-site.xml中的
<configuration>
</configuration>
修改为一以下配置:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
修改配置文件 hdfs-site.xml,将 hdfs-site.xml中的
<configuration>
</configuration>
修改为以下内容
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
配置完成后,执行 NameNode 的格式化:
cd /usr/local/hadoop
./bin/hdfs namenode -format
成功格式化会看见“successfully formatted”的提示,如下图所示:
接着开启 NameNode 和 DataNode 守护进程。
cd /usr/local/hadoop
./sbin/start-dfs.sh
若报Error: JAVA_HOME is not set and could not be found. 错误,修改hadoop安装目录下 /usr/local/hadoop/etc/hadoop/hadoop-env.sh 文件,找到"export JAVA_HOME",将JAVA安装路径填写进去,如下图所示(以下是我的按装路径,具体请按自己的路径进行修改):
启动成功如下图所示:
启动完成后通过jps命令判断启动情况
运行Hadoop伪分布实例
首先在HDFS中创建用户目录:
./bin/hdfs dfs -mkdir -p /usr/hadoop/input
然后将 ./etc/hadoop 中的 xml 文件作为输入文件复制到分布式文件系统中
./bin/hdfs dfs -mkdir /user/hadoop/input
./bin/hdfs dfs -put ./etc/hadoop/*.xml /user/hadoop/input
复制完成后,查看文件列表:
./bin/hdfs dfs -ls /user/hadoop/input
伪分布式运行 MapReduce
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-example-3.1.4.jar grep /user/hadoop/input /user/hadoop/output 'dfs[a-z.]+'
查看运行结果:
./bin/hdfs dfs -cat /user/hadoop/output/*
将运行结果复制到本地
rm -r ./output # 若本地有该目录现执行删除语句
./bin/hdfs dfs -get output ./output
cat ./output/* # 查看本地文件
关闭 Hadoop
./sbin/stop-dfs.sh