以下仅为Hadoop本地环境搭建:
一、准备工具包:
1、下载jdk,官方地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html
2、下载hadoop包,地址:https://archive.apache.org/dist/hadoop/common/hadoop-2.8.3/(其中src是源码包,未编译的,直接下载已编译的tar.gz包)
二、配置jdk环境和hadoop环境
1,jdk环境:在usr目录下新建java文件夹:mkdir /url/java
2,编辑环境变量: vi /etc/profile
在结尾加上:
export JAVA_HOME=/usr/java/jdk-12.0.2
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
3,编辑完成后保存退出:!wq ,重新启动配置文件:source /etc/profile
4,输入验证是否配置成功:java version (成功如下)
5,hadoop环境:在home目录下新建myHadoop文件夹:mkdir /home/myHadoop
6,解压hadoop压缩包到myHadoop中:tar -zxvf hadoop-2.8.3.tar.gz -C /myHadoop
7,解压完hadoop包后配置java环境,进入环境文件:vi ./myHadoop/hadoop-2.8.3/etc/hadoop/hadoop-env.sh
结尾添加java路径:export JAVA_HOME=/usr/java/jdk-12.0.2
三、配置hadoop配置文件:进入目录(/home/myHadoop/hadoop-2.8.3/etc/hadoop/)下对以下四个配置文件进行相应配置
1,配置core-site.xml(添加NameNode的地址和临时配置文件的配置信息):vi core-site.xml
因为我配置的hostname是localhost,所以写的是localhost,以方便映射地址
修改hostname映射关系:注释前面两个,以防止其他端口会映射到前面的地址去,192.168.6.66是我配置nat网络的固定地址
修改后,输入命令重新加载网络使得修改生效:/etc/init.d/network restart
2,配置hdfs-site.xml(配置HDFS副本的数量,在单独一个datanode上运行):vi hdfs-site.xml
3,配置mapred-site.xml (配置mapreduce运行在yarn上):vi mapred-site.xml
配置文件里面是没有mapred-site.xml文件的,
所以需要把 mapred-site.xml.template复制一份并重命名为 mapred-site.xml:mv mapred-site.xml.template mapred-site.xml
4,配置yarn-site.xml(配置ResourceManager的地址和reducer获取数据的方式):vi yarn-site.xml
5,关闭防火墙:(针对系统默认防火墙-firewall)
(1)查看防火墙状态:firewall-cmd --state
(2)停止防火墙:systemctl stop firewalld.service
(3)禁止开机自启动:systemctl disable firewalld.service
(4)重启防火墙:firewall-cmd --reload
(5)打开防火墙:systemctl start firewalld
6,关闭selinux:进入--vi /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled
以上配置完成后,开始准备运行hadoop
四、运行hadoop服务
1,格式化hdfs:先去到hadoop包的bin目录下运行: ./hdfs namenode -format
格式化成功信息:
2,启动测试hdfs:去到hadoop包的sbin目录下运行:./start-all.sh
或者在当前目录下直接运行:../sbin/start-all.sh
运行后将一个个启动hadoop的5个服务,且需要输入密码,解决方案如下:
本地模式自动配置ssh免密登录配置如下:
(1)安装openSSH包:yum install openssh-server
(2)安装完成后,执行 以下安装命令 生成秘钥文件 : ssh-keygen -t rsa,弹出需要enter的地方一直点击enter键即可,成功生成信息如下:
(3)实现本地登录免密码登录,运行:cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
3,配置ssh后,下次启动hdfs,则不必再输入密码,运行jps,即可看到运行的5个服务如下:
4,访问地址:192.168.6.66:50070,成功如下:
5,访问地址:192.168.6.66:8088,成功如下:
五,注意点
1,输入netstat -lntp|grep java ,即可查看所有java服务的开放端口(红框处是映射为配置的hostname对应的地址,若映射为127.0.0.1,可配置/etc/hosts文件,注释127.0.0.1地址,或配置其他映射地址即可成功访问)
2,dataNode 没有启动起来的原因:每一次format,namenode都会生成新的clusterID , 而datanode还是保持原来的clusterID.
提供两种解决方法如下:
(1)去到tmp/dfs/name/current/VERSION目录下 复制namenode的clusterID.用该clusterID把所有datanode节点机器中tmp/dfs/data/current/VERSION中的clusterID替换掉
(2)直接删掉hadoop的临时文件tmp,在core-site.xml中配置的tmp文件路径,删掉该目录后,重新格式化(hadoop包的bin目录下执行命令:./hdfs namenode -format)format hdfs后即可重新生成对应的clusterID