1. 环境说明
搭建在vmware workstation上的虚拟机
主机名:node2
IP:10.0.0.53(在 /etc/hosts 中添加主机和ip的映射关系)
软件版本信息:ubuntu 18.04,jdk 1.8,Hadoop 3.2.2
2. 前置配置内容
1)关闭防火墙
sudo ufw status # 检查防火墙状态 sudo ufw disable # 停止防火墙
2)安装启动sshd
ubuntu18.04 在普通安装方式下,已经安装了ssh客户端,此处安装服务端即可
sudo apt install openssh-server sudo systemctl status sshd # 检查sshd启动配置
3)配置ssh无密码登录
ssh-keygen -t rsa # 生成密钥对 ssh-copy-id -i ~/.ssh/id.rsa.pub node2 # 追加公钥
执行完成后就在~/.ssh/authorized_keys中添加了认证信息,再次连接时无需密码
4)配置jdk
jdk下载完成后,解压并制作软链接,配置相关的环境变量完成java基础环境安装。
vim ~/.bashrc # 添加如下变量信息 export JAVA_HOME=/home/[USER]/jdk export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin export PATH=$PATH:${JAVA_PATH} source ~/.bashrc java -version # 检查安装配置
3. 安装hadoop
下载hadoop软件压缩包,解压并制作软链接,此处安装位置为/home/[USER]/hadoop。
sudo chown -R [USER]:[USER] /home/[USER]/hadoop # 修改hadoop属主属组 /home/[USER]/hadoop/bin/hadoop version # 简单验证hadoop执行
配置hadoop相关的环境变量
vim ~/.bashrc # 添加如下变量信息 export HADOOP_HOME=/home/[USER]/hadoop export PATH=$PATH:$HADOOP_HOME/bin/:$HADOOP_HOME/sbin
配置$HADOOP_HOME/etc/hadoop/下的hadoop-env.sh文件
vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh # 修改其中的JAVA_HOME如下信息 export JAVA_HOME=/home/[USER]/jdk
4. hadoop伪分布式配置
hadoop在单节点上运行没有实际意义的分布式结构,该节点同时作为NameNode和DataNode,使用HDFS分布式文件系统进行存储。配置过程需要修改$HADOOP_HOME/etc/hadoop下的两个基本配置文件core-site.xml和hdfs-site.xml
配置core-site.xml文件内容
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://node2:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/[USER]/hadoop/tmp</value> </property> </configuration>
配置hdfs-site.xml文件内容
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
配置完成后,进行NameNode格式化操作
$HADOOP_HOME/bin/hdfs namenode -format
格式化成功后,启动分布式文件系统
$HADOOP_HOME/sbin/start-dfs.sh # 运行过程中的警告信息可以忽略,错误信息需要分析处理
启动成功后,使用jps列出本机系统上插装的Java虚拟机,可以看到DataNode,NameNode都已经启起来了
启动完成后,通过web端工具能够查看相关信息,进行相应的文件系统操作,这里的控制台地址为:http://10.0.0.53:9870/
5. 执行mapreduce实例
运行wordcount的mapreduce任务,验证dfs的文件存取正常
1)在hdfs上创建input目录
hdfs dfs -mkdir /input
2)准备input的文件,将本地文件系统中作为input的文件上传
hdfs dfs -put [PATH]/input/* /input # 上传至/input hdfs dfs -ls /input # 查看hdfs下/input中的内容
3)执行wordcount
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /input /output
4)wordcount正确结束,查看输出的文件,已经得到了次数统计的结果
hdfs dfs -ls /output 或 控制台中使用文件系统浏览器查看