一、安装虚拟机管理工具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地址的映射关系

  1. 设置主机名:vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME= (自定义一个主机名)例如:myhadoop

保存退出

  1. 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,表示防火墙已开启。

  1. 关闭防火墙:systemctl stop firewalld.service

再次查看防火墙状态:systemctl status firewalld

若显示Active: active (dead),则表示防火墙已关闭。

另外一种查看方式:firewall-cmd  --state

若结果为not running,表示防火墙已关闭。

  1. 想要开启防火墙,输入:systemctl start firewalld即可。
  2. 禁止防火墙开机自启:systemctl disable firewalld.service
  • 六、安装jdk,配置环境变量

  1. 上传jdk:打开sercurecrt,连接到linux。快捷键:Alt+p,在sftp窗口中,将本地jdk拖入该窗口即可。
  2. 回到Linux根目录:cd ~ 
  3. 查看jdk是否上传成功:ls
  4. 在usr目录中新建java目录:

mkdir /usr/java/

  1. 将jdk解压到 /usr/java/ 目录:该操作一定要在linux的根目录~中执行:

回到根目录:cd ~

解压:tar -zxvf jdk-8u201-linux-x64.tar.gz –C /usr/java/

  1. 配置环境变量:

vi /etc/profile

在该文件的最后加入:

export JAVA_HOME= /usr/java/jdk1.8.0_201/  (jdk的安装目录)

export PATH=$PATH:$JAVA_HOME/bin

保存退出,使用source /etc/profile刷新该配置文件,最后使用javajavacjava -version验证是否配置成功。

  • 搭建hadoop伪分布式环境
  1. 上传hadoop压缩包。
  2. 创建一个用于存放解压Hadoop文件的目录;

mkdir /hadoop_cluster

  1. 解压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

  1. 配置hadoop-env.sh文件,该配置文件用于指定hadoop运行时jdk的路径:

vi hadoop-env.sh

export JAVA_HOME=自己的jdk安装目录

export JAVA_HOME=/usr/java/jdk1.8.0_201/

  1. 配置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>

    1. 配置hadoop运行时产生数据的存储目录,不是临时目录。

<property>

<name>hadoop.tmp.dir</name>

<value>/hadoop_ cluster /tmp</value>

</property>

 

  1. 配置 hdsf-site.xml文件,配置在hdfs中,一份文件存几份,默认是3份,一台机器只能存一份。

vi hdfs-site.xml

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

  1. 配置mapred-site.xml文件,map-reduce是hadoop中的一种计算模型,运行在yarn(资源调度系统)中。

mapred-site.xml

<property> <!--指定mapreduce运行在yarn上-->

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

  1. 配置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的环境变量,不配置该变量不影响使用,但使用起来不太方便。关于这部分内容,本人日后在补上。

 

 

 

 

 

 

 

 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐