Hadoop伪分布式搭建
版本
本教程基于hadoop 2.7.7、java 1.8、CentOS 8.3
基本配置顺序相同,有区别处会标明
使用此教程之前确保虚拟机安装完毕,并且可以连接Xshell
1. 基础配置
关闭防火墙
systemctl stop firewalld
禁止防火墙开机自启
systemctl disable firewalld.service
更改时区
timedatectl set-timezone Asia/Shanghai
安装vim
yum install vim
2. 安装jdk
进入安装包目录
cd /usr/local/software/
解压jdk压缩包
tar -xzf jdk-8u202-linux-x64.tar.gz
// 或者
tar -xzvf jdk-8u202-linux-x64.tar.gz
注:参数也可添加v两者的区别是v参数可以查看解压过程信息
重命名,并将文件夹放入/usr/local下
mv jdk1.8.0_202/ /usr/local/jdk
配置系统环境变量
vim /etc/profile
添加
JAVA_HOME=/usr/local/jdk
JRE_HOME=/usr/local/jdk/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
使配置生效
source /etc/profile
查看java版本
java -version
3. SSH
首先配置hosts文件注:把ip修改为自己的ip
vim /etc/hosts
192.168.43.24 master
设置本地ssh
ssh master
cd ~/.ssh
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
设置后测试
ssh master
4. Hadoop安装
进入安装包目录
cd /usr/local/sortware/
解压hadoop压缩包
tar -zxf hadoop-2.7.7.tar.gz
重命名并改变位置
mv hadoop-2.7.7 /usr/local/hadoop
查看hadoop版本信息
cd /usr/local/hadoop
./bin/hadoop version
配置系统环境变量
vim /etc/profile
添加
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
使配置生效
source /etc/profile
5. Hadoop配置
编辑hadoop-env.sh环境配置文件,找到export JAVA_HOME=${JAVA_HOME},将该语句修改为
cd /usr/local/hadoop/etc/hadoop
vim hadoop-env.sh
export JAVA_HOME=/usr/local/jdk
编辑 core-site.xml
vim core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoopData/tmp</value>
</property>
编辑 hdfs-site.xml
vim hdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/root/hadoopData/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/root/hadoopData/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
通过yarn在单节点中管理MapReduce任务,配置 mapred-site.xml
由于没有mapred-site.xml 文件,需要从模板文件复制一个注:使用ls查看文件,如果有那就不用复制
jobhistroy服务不是必选项,如果后期学mapreduce,有jobhistroy服务更方便一点。
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<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>
<!-- 以下两项为启动jobhistory服务设置项,后面用到mapreduce 时需要 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
配置 yarn-site.xml
vim yarn-site.xml
<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,CLASSP
ATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
初始化
hadoop namenode -format
启动
/usr/local/hadoop/sbin/start-all.sh
debug:
启动时可能会报错:Attempting to operate on hdfs namenode as root
这句报错是因为你用root用户启动hadoop,解决方法也很简单。
在/hadoop/sbin路径下:将start-dfs.sh
stop-dfs.sh
两个文件顶部添加以下参数
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
start-yarn.sh
stop-yarn.sh
顶部也需添加以下:
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
修改后重启
/usr/local/hadoop/sbin/start-all.sh
开启 jobhistoryserver
/usr/local/hadoop/sbin/mr-jobhistory-daemon.sh start historyserver
最后使用jps命令查看服务是否都打开
jps
6. 测试运行
进入网页Web页面,分别在主机浏览器地址栏输入以下地址(用自己ip)
50070:HDFS WEB UI端口
8088 : Yarn 的WEB UI 接口
19888:jobhistory WEB UI端口
注:对于50070,如果hadoop版本为3.X,进入端口为9870
192.168.34.56:50070
192.168.34.56:8088
192.168.34.56:19888
运行mapreduce实例,结果为4.000000
cd /usr/local/hadoop/share/hadoop/mapreduce/
hadoop jar hadoop-mapreduce-examples-2.7.7.jar pi 2 3