搭建hadoop3.1.2伪分布式环境详细讲解(优质防坑资料)
一、安装虚拟机管理工具vmwar_workstation安装路径:E:\vmwar_work_station(因为这个盘的剩余空间大一些);特别提示:当vmwar_workstation安装完成后,在宿主机的网络和共享中心的更改网路适配器中,会出现下图中的两个虚拟网络适配器;其中这两个适配器一定不能禁用,如果你禁用了,使用SecureCRT,putty等客户端连接你的虚拟机时,就无法连接,...
一、安装虚拟机管理工具vmwar_workstation
安装路径:E:\vmwar_work_station(因为这个盘的剩余空间大一些);
特别提示:当vmwar_workstation安装完成后,在宿主机的网络和共享中心的更改网路适配器中,会出现下图中的两个虚拟网络适配器;其中这两个适配器一定不能禁用,如果你禁用了,使用SecureCRT,putty等客户端连接你的虚拟机时,就无法连接,会报connect out time的错误,因此,这一点一定要切记;
二、创建虚拟机
环境说明: vmware workstation15pro + linux centos_7.x_X64_minmal + hadoop3.x _X64 + jdk_linux_X64
1、打开vmwar_workstaion,在管理界面单机创建新的虚拟机,创建一个虚拟机。
1.1 创建过程:选择自定义配置类型 —> 下一步 —> 稍后安装操作系 —> 选择客户机操作系统(你实际要装的操作系统) —> 选择系统版本(操作系统的版本) —> 设置虚拟机名称和安装路径(E:\\linux_virtual)—>为虚拟机分配cpu内核数和内存大小 —> 设置虚拟机的网络模式(仅主机模式) —> 创建新的虚拟磁盘 —> 将虚拟机磁盘拆分为多个文件 —> 完成 —> 设备 —> CD/DVD(IDE) —> 使用IOS镜像文件(选择linux镜像文件的位置) —> 确定 —> 开启此虚拟机,此时开始安装linux系统。
1.2 设置虚拟机的超级管理员和登录密码:
Username:设置用户名 Password:设置密码 |
三、配置虚拟机
1.查看网络配置:ip addr (在centos_6中使用ifconfig查看)
2.配制网络:vi /etc/sysconfig/network-scripts/ifcfg-ens33
2.1将该配置文件中的ONBOOT=no修改为yes(网络开机自启);
2.2将BOOTPROTO=dhcp修改为static(将ip设置为静态ip)
2.3为了能够通过外部访问到虚拟机,添加以下内容:
IPADDR=查看后的ip地址 (静态IP地址),供外部远程访问,非127.0.0.1 NETMASK=(子网掩码) GATEWAY=(网关) DNS1= (域名解析系统ip地址1) DNS2= (域名解析系统ip地址2) 保存退出 |
重新启动网络:service network restart
提示:以上配置需要在虚拟机中进行完成。以下操作使用sercure crt连接到linux后,在sercure crt中完成。
四、配置主机名和ip地址的映射关系
- 设置主机名:vi /etc/sysconfig/network
NETWORKING=yes HOSTNAME= (自定义一个主机名)例如:myhadoop 保存退出 |
- vi /etc/hosts
将主机名myhadoop和ip地址172.28.112.26进行映射;
Ip地址 空格 自定义主机名;例如:172.28.112.26 空格 myhadoop
保存退出,执行hostname myhadoop刷新,配置即可生效。
五、关闭防火墙状态
在linux centos7版本中,使用的防火墙不是iptables(linux centos6中使用的防火墙),而是firewall,所有以下操作中要使用firewall的相关指令。
1.查看防火墙状态:systemctl status firewalld
若显示Active: active (running),则表示防火墙已开启。
另外一种查看方式:firewall-cmd --state
若结果为running,表示防火墙已开启。
- 关闭防火墙:systemctl stop firewalld.service
再次查看防火墙状态:systemctl status firewalld
若显示Active: active (dead),则表示防火墙已关闭。
另外一种查看方式:firewall-cmd --state
若结果为not running,表示防火墙已关闭。
- 想要开启防火墙,输入:systemctl start firewalld即可。
- 禁止防火墙开机自启:systemctl disable firewalld.service
-
六、安装jdk,配置环境变量
- 上传jdk:打开sercurecrt,连接到linux。快捷键:Alt+p,在sftp窗口中,将本地jdk拖入该窗口即可。
- 回到Linux根目录:cd ~
- 查看jdk是否上传成功:ls
- 在usr目录中新建java目录:
mkdir /usr/java/
- 将jdk解压到 /usr/java/ 目录:该操作一定要在linux的根目录~中执行:
回到根目录:cd ~
解压:tar -zxvf jdk-8u201-linux-x64.tar.gz –C /usr/java/
- 配置环境变量:
vi /etc/profile
在该文件的最后加入:
export JAVA_HOME= /usr/java/jdk1.8.0_201/ (即jdk的安装目录) export PATH=$PATH:$JAVA_HOME/bin |
保存退出,使用source /etc/profile刷新该配置文件,最后使用java、javac、java -version验证是否配置成功。
- 搭建hadoop伪分布式环境
- 上传hadoop压缩包。
- 创建一个用于存放解压Hadoop文件的目录;
mkdir /hadoop_cluster |
- 解压hadoop到hadoop_ cluster目录:
tar -zxvf hadoop-3.1.2.tar.gz -C /hadoop_ cluster/ |
七、配置Hadoop
需要配置其中五个配置文件,进入到hadoop下etc下的hadoop目录,并查看该目录下的所有配置文件,并配置其中五个。
cd /hadoop_ cluster /hadoop-3.1.2/etc/hadoop/ ls |
- 配置hadoop-env.sh文件,该配置文件用于指定hadoop运行时jdk的路径:
vi hadoop-env.sh export JAVA_HOME=自己的jdk安装目录 export JAVA_HOME=/usr/java/jdk1.8.0_201/ |
- 配置core-site.xml文件,该文件是用户自定义文件。用于配置hadoop的文件系统。
vi core-site.xml
2.1配置hdfs的namenode的地址,使用的是hdfs协议:
<property> <name>fs.defaultFS</name> <value>hdfs://mycent.os:9000</value> (mycent.os指的是你自己配置的主机名,代表当前虚拟机) </property> |
-
- 配置hadoop运行时产生数据的存储目录,不是临时目录。
<property> <name>hadoop.tmp.dir</name> <value>/hadoop_ cluster /tmp</value> </property> |
- 配置 hdsf-site.xml文件,配置在hdfs中,一份文件存几份,默认是3份,一台机器只能存一份。
vi hdfs-site.xml <property> <name>dfs.replication</name> <value>1</value> </property> |
- 配置mapred-site.xml文件,map-reduce是hadoop中的一种计算模型,运行在yarn(资源调度系统)中。
mapred-site.xml <property> <!--指定mapreduce运行在yarn上--> <name>mapreduce.framework.name</name> <value>yarn</value> </property> |
- 配置yarn-site.xml文件,指定yarn的老大resourcemanager的地址(该地址是resourcemanager的主机地址,即主机名或该主机的ip地址)。
vi yarn-site.xml <property> <name>yarn.resourcemanager.hostname</name> <value>mycent.os</value> </property>
指定mapreduce执行shuffle时获取数据的方式 <property> <name>yarn.nodemanager.aus-services</name> <value>mapreduce_shuffle</value> </property> |
八、初始化hadoop
该初始化不是启动hadoop的hdfs,而是对hdfs做格式化,需要到hadoop的bin目录中进行相关命令的操作
1.进入到hadoop的bin目录:
cd /hadoop_ cluster /hadoop-3.1.2/bin/
输入./hdfs namenode -format进行初始化;
2.启动hadoop
进入到hadoop的sbin目录:
cd /hadoop_ cluster /hadoop-3.1.2/sbin/
start-all.sh
此时,在启动过程中,可能会遇到很多错误,不要惊慌,都是由于相关启动脚本还未配置造成的,主要有以下问题:
问题1:
Starting namenodes on [myhadoop]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
解决方法:在hadoop的sbin目录中,分别在start-dsf.sh文件和stop-dsf.sh文件中的顶部加入:
HDFS_DATANODE_USER=root HADOOP_SECURE_DN_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root 若加入以上配置后,在启动过程中出现警告,将全部替换为以下配置: HDFS_DATANODE_USER=root HDFS_DATANODE_SECURE_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root |
问题2:
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
问题3:
Starting secondary namenodes [myhadoop]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
问题4:
Starting resourcemanager
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
解决方法:在hadoop的sbin目录中,分别在start-yarn.sh 文件和stop-yarn.sh文件中的顶部加入:
YARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root |
问题5:
Starting nodemanagers
ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.
修改以上两处后,启动报错问题全部解决。但是此时启动hadoop时,会出现权限拒绝问题:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
这是因为:你还没有配置ssh免密登录,配置即可解决。
九、配置ssh免密登录
1.在root用户的根目录,输入 ls -al,可以看到有个.ssh的目录。
2.输入cd .ssh/进入到该目录。
3.输入ls -al查看该目录的内容。
4.在该目录下,输入:ssh-keygen -t rsa 一直回车即可。此时会生成一个RSA 2048文件,生成了一对公钥,一对私钥。
5.输入ls 查看生成的私钥和公钥。如果想要查看生成的一对秘钥,可以使用 more 秘钥名即可;
查看公钥: more id_rsa.pub
查看私钥: more id_rsa
6.进入到hadoop的根目录,执行以下命令:把公钥拷贝到使用ssh的当前机器上
ssh-cp-id localhost(或者是你的主机名);
或ssh-copy-id localhost(或者是你的主机名);
输入一次密码(登录linux系统的密码),待拷贝完成。
此时回到hadoop的sbin目录,执行./start-all.sh,此时所有进程将成功启动。可以使用jps查看进程,一共有以下6个进程。
8448 Jps 7457 DataNode 8065 NodeManager 7942 ResourceManager 7335 NameNode 7647 SecondaryNameNode |
7.最后在宿主机的浏览器中访问hadoop的hdfs,如访问成功,则说明伪分布式环境已搭建成功:
Hadoop2.X的版本中,访问hdfs的端口号是50070;
172.28.112.26:50070
Hadoop3.X的版本中,访问hdfs的端口号由50070修改成了9870;
172.28.112.26:9870
如浏览器成功访问到hdfs页面,则说明hadoop伪分布式环境配置成功:该页面如下图所示:
附录:查看linux系统中的服务
1.查看设备运行状态:service --status-all
2.查看sysv服务:chkconfig --list
3.查看原生 systemd 服务:systemctl list-unit-files
4.编辑文件:vi 文件全名
5.撤销编辑:退出插入模式,快捷键Shift+p,然后输入u,回车。撤销完成后,输入exit退出编辑。
6.查看文件:more 文件全名
7.创建一个目录:mkdir 目录名
8.删除一个空目录:rmdir 目录名
9.删除一个非空目录:rm –rf 目录名
题注:在本次hadoop伪分布式环境搭建过程中,由于时间原因,暂时没有配置hadoop的环境变量,不配置该变量不影响使用,但使用起来不太方便。关于这部分内容,本人日后在补上。
更多推荐
所有评论(0)