VMware 下Hadoop集群环境搭建之虚拟机克隆,Hadoop环境配置 您所在的位置:网站首页 vm克隆虚拟机后登录界面 VMware 下Hadoop集群环境搭建之虚拟机克隆,Hadoop环境配置

VMware 下Hadoop集群环境搭建之虚拟机克隆,Hadoop环境配置

2024-06-29 04:38| 来源: 网络整理| 查看: 265

在上一篇我们完成了ContOS网络配置以及JDK的安装,这一篇将在上一篇的基础上继续讲解虚拟机的克隆,hadoop环境搭建

传送门: VMware 下Hadoop集群环境搭建之新建虚拟机 VMware 下Hadoop集群环境搭建之为虚拟机安装CentOS 6.7 64位系统 VMware 下Hadoop集群环境搭建之CentOS 6.7 网络配置的相关配置,JDK的安装

虚拟机克隆.

利用上一篇已经完成网络配置和jdk安装的虚拟机在克隆两台虚拟机. 1. 将拟机hadoop01关机. 2. 如动图演示那样,选中hadoop01,然后鼠标右键,在出来的菜单中选择 管理—>克隆: 这里写图片描述 3. 下一步: 这里写图片描述 4. 选中虚拟机中当前状态,然后下一步: 这里写图片描述 5. 选择创建完成克隆,然后下一步: 这里写图片描述 6. 这一步,将虚拟机名称更改为hadoop02,并将存储位置修改为与上一个虚拟机在相同文件夹下,其中每个虚拟机各自有一个文件夹,这里我的目录可能与上面两篇文章的目录有所不一样,原因是我发现之前的Hadoop就存了一个hadoop01,为了区分我的其他虚拟机,以及让每个虚拟机单独一个文件夹,我将Hadoop命名为hadoop01,并在上层目录下新建了一个bolg-hadoopes目录,然后将hadoop01拖到bolg-hadoopes下.注意,在改动了目录机构以后,在VMware中选中虚拟机可能就会报一个找不到虚拟机的错误,然后提示移除,移除就好了,然后VMware的菜单中 文件—>打开—>定位到hadoop01的位置,选中hadoop01.vmx打开即可. 这里写图片描述 这里写图片描述 7. 点击完成,等待克隆结束,就又创建了一个和上面那个一模一样的虚拟机: 这里写图片描述 这里写图片描述 8. 同样的方式,再克隆一台取名为hadoop03的虚拟机. 9. 分别开启刚克隆的这两台以及之前的那一台共3台虚拟机. 10. 用XShell登录到hadoop01,hadoop02,hadoop03,为避免混乱,在XShell中分别将3个虚拟机命名为h1,h2,h3.XShell连接到虚拟机的方式请参见上一篇文章. 这里写图片描述 11. 开启克隆的两台虚拟机的时候,我们会看到主机名都是hadoop1,ip也没有规律,这将给初学者的我们带来很大的不便,所以我决定将他们规划如下: hadoop1(192.168.93.120), hadoop2(192.168.93.121), hadoop3(192.168.93.122)

分别修改克隆的两台虚拟机主机名和IP地址

编辑/etc/udev/rules.d/70-persistent-net.rules 这个文件: vim /etc/udev/rules.d/70-persistent-net.rules

# PCI device 0x8086:0x100f (e1000) #这条是来自克隆的那台虚拟机的配置,将这条注释:原因是ATTR{address}=="00:0c:29:21:6f:26"的物理地址信息是来自克隆的虚拟机 #SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:21:6f:26", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" # PCI device 0x8086:0x100f (e1000) #将这条的NAME="eth1" 改成 NAME="eth0" #经过物理地址信息查看对比,00:0c:29:64:74:a4才是当前这台机器对应的物理地址. SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:64:74:a4", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

编辑网卡配置信息,修还物理地址和IP地址即可.物理地址查看方式请参见上一篇文章. vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 HWADDR=00:0c:29:64:74:a4 #修改物理地址,物理地址请根据自己的VMware获取 TYPE=Ethernet UUID=afcc5664-3e15-4768-b5ab-45f1c53f7a68 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=192.168.93.121 #修改IP地址 PREFIX=24 GATEWAY=192.168.93.2 DNS1=8.8.8.8 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0"

修改主机名: vim /etc/sysconfig/network

NETWORKING=yes HOSTNAME=hadoop2

分别编辑3台机器的hosts文件,在已有内容后面添加地址映射: vim /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.93.120 hadoop1 www.hadoop1.com 192.168.93.121 hadoop2 www.hadoop2.com 192.168.93.122 hadoop3 www.hadoop3.com 重启克隆的两台机器.测试3台机器之前是否可以相互通信. 用hadoop1分别ping hadoop2,hadoop3: 这里写图片描述用hadoop2分别ping hadoop1,hadoop3.用hadoop3分别ping hadoop1,hadoop2. 新建用户并配置sudo权限 我们在安装CentOS系统的时候,因为直接用root用户而被警告,因为root用户权限过大,如果经常有删除修改操作,可能会有危险,接下来,我们在hadoop1上新建一个hadoop用户,之后搭建hadoop环境,都用hadoop用户来完成,除非特别说明.添加hadoop用户 useradd hadoop给hadoop设置密码 passwd hadoop

给hadoop配置sudo权限(在命令前加上sudo,可以执行root权限才能执行的命令)

编辑sudoers文件,在编辑之前我们可能查看一下sudoers的信息: ll /etc/sudoers

-r--r-----. 1 root root 4002 Mar 2 2012 /etc/sudoers

我们可以看到该文件连root用户都是只读的.所以要想修改该文件内容,需要先修改一下该文件的权限,给root添加写权限: chmod u+w /etc/sudoers 编辑该文件:vim /etc/sudoers

## ## Allow root to run any commands anywhere root ALL=(ALL) ALL #给hadoop用户添加sudo权限 hadoop ALL=(ALL) ALL ## Allows members of the 'sys' group to run networking, software, ## service management apps and more. # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS ## Allows people in group wheel to run all commands # %wheel ALL=(ALL) ALL ## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL # 执行sudo权限时不需要输入密码 %hadoop ALL=(ALL) NOPASSWD: ALL ## Allows members of the users group to mount and unmount the

测试sudo权限.

在hadoop的home下新建一个file1文件. touch /home/file1.

查看/home/file1. 信息:

-rw-r--r--. 1 root root 0 May 1 00:32 /home/file1

从文件信息 可以看出,只有root可以读写删除该文件.

切换到hadoop su hadoop

删除/home/file1文件 rm -rf hadoop

rm: cannot remove `/home/file1': Permission denied

结果是删除文件失败,权限异常.

用添加sudo来删除 sudo rm -rf /home/file1 可以看到结果删除成功了,说明我们sudo权限配置成功.在hadoop2,hadoop3上同样的分别新建一个hadoop用户,并配置sudo权限. 安装hadoop并配置相关文件. 在hadoop1上切换至hadoop用户,注意,接下来的配置需要在hadoop用户下完成,如果在配置过程中,随意切换用户,导致某些操作在不同用户下来完成的,后期启动hadoop集群的时候会因hadoop文件的权限问题导致启动失败,排查起错误来也会比较困难.在hadoop的家目录下新建一个apps文件夹 mkdir /home/hadoop/apps用xftp上传hadoop-2.7.5.tar.gz包到该目录下(具体操作请参见上一篇)上传jdk的方式. hadoop-2.7.5.tar.gz的链接:https://pan.baidu.com/s/1o9CXsn71kfNVNKIQX0PW5w 密码:hf19解压hadoop-2.7.5.tar.gz包: tar -zxvf /home/hadoop/apps/hadoop-2.7.5.tar.gz解压后的结果: 这里写图片描述进入到hadoop-2.7.5 cd /home/hadoop/apps/hadoop-2.7.5在/home/hadoop/apps/hadoop-2.7.5新建一个data目录(hadoop参数的数据存放目录) mkdir /home/hadoop/apps/hadoop-2.7.5/data

配置hadoop-env.sh文件: cd /home/hadoop/apps/hadoop-2.7.5/etc/hadoop/ vim hadoop-env.sh

# set JAVA_HOME in this file, so that it is correctly defined on # remote nodes. # The java implementation to use. #在这里添加JDK安装目录的环境变量,这里我又尝试过 JAVA_HOME=${JAVA_HOME},但是不能起作用,还是老老实实的写吧 export JAVA_HOME=/home/java/jdk1.7.0_79 # The jsvc implementation to use. Jsvc is required to run secure datanodes

配置core-site.xml配置文件 cd /home/hadoop/apps/hadoop-2.7.5/etc/hadoop/ vim core-site.xml

fs.defaultFS hdfs://hadoop1:9000 hadoop.tmp.dir /home/hadoop/apps/hadoop-2.7.5/data

设置hdfs-site.xml配置文件 cd /home/hadoop/apps/hadoop-2.7.5/etc/hadoop/ vim hdfs-site.xml

dfs.replication 2

配置mapred-site.xml配置文件 cd /home/hadoop/apps/hadoop-2.7.5/etc/hadoop/ 默认mapred-site.xml不存在,将mapred-site.xml.template改成mapred-site.xml即可 mv mapred-site.xml.template mapred-site.xml vi mapred-site.xml

mapreduce.framework.name yarn

配置yarn-site.xml配置文件 cd /home/hadoop/apps/hadoop-2.7.5/etc/hadoop/ vim yarn-site.xml

yarn.resourcemanager.hostname hadoop1 yarn.nodemanager.aux-services mapreduce_shuffle

配置slaves配置文件 cd /home/hadoop/apps/hadoop-2.7.5/etc/hadoop/ vim slaves

#指定干活的datanode hadoop2 hadoop3配置hadoop1到hadoop2,hadoop3之间的免密通信,完成这一步操作,需要安装ssh软件,注意 如果机器中没有安装ssh-client软件,先需要安装,如果没有安装软件技能,推荐先了解下linux安装安软的知识.安装步骤如下1,2: 查找适合的软件包:yum list | grep openssh-clients 安装:yum install openssh-clients.x86_64 (openssh-clients.x86_64 是我查找到的结果).启动hadoop2,hadoop3,并都切换到hadoop用户下.配置免密登录之前,登录到hadoop2看看效果: ssh hadoop2 这里写图片描述 退出hadoop2的登录:exit 这里写图片描述在hadoop1的hadoop用户根目录下(注意,必须用hadoop用户来执行),执行以下命令产来密钥对: cd ~ ssh-keygen -t rsa 结果如下: 这里写图片描述将密钥拷贝到hadoop2,hadoop3: cd .ssh #.ssh是生成密钥对时产生的文件夹 ssh-copy-id hadoop1 #拷贝到hadoop1(hadoop1就是当前的机器,当前机器也需要设置免密登录) ssh-copy-id hadoop2 #拷贝到hadoop2 ssh-copy-id hadoop3 #拷贝到hadoop3 拷贝到hadoop2的截图如下: 这里写图片描述 拷贝到其他机器也是一样,就不一一截图了.验证免密登录是否配置成功. 这里写图片描述 不需要密码,直接就登录成功了.记得退出登录.

配置hadoop软件的环境变量:

配置之前:输入: which hadoop 这里写图片描述 发现是找不到hadoop这个命令的.

在/etc/profile文件中添加hadoop的环境变量 sudo vim /etc/profile #因为只有root用户才能编辑该文件,所以hadoop想要编辑,需要用sudo权限:

``` export JAVA_HOME=/home/java/jdk1.7.0_79 #申明hadoop的路径变量 export HADOOP_HOME=/home/hadoop/apps/hadoop-2.7.5 #在之前配置JAVA的环境变量之后追加hadoop的环境变量 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ``` source vim /etc/profile #让环境变量生效验证配置是否成功:which hadoop 这里写图片描述 结果如上表示配置成功.将已经配置好的hadoop整个文件包拷贝到hadoop2,hadoop3,这里需要注意的是hadoop2和hadoop3中即将放置hadoop包的路径需要保持一致,如果不一致,需要在上面配置的那几个hadoop配置文件中修改有路径的地方. 在hadoop2,hadoop3的hadoop家目录下新建一个apps目录.scp -r /home/hadoop/apps/hadoop-2.7.5 hadoop2:/home/hadoop/apps/scp -r /home/hadoop/apps/hadoop-2.7.5 hadoop3:/home/hadoop/apps/根据上面配置hadoop软件的环境变量一样去hadoop2和hadoop3上配置好hadoop的环境变量.分别重启3台机器.在hadoop1上,用户hadoop用户,格式化hadoop 的HDFS(文件系统),第一次使用需要格式化: hadoop namenode -format 这里写图片描述在hadoop1上启动hdfs文件系统: start-dfs.sh 待启动完成,再验证是否有该有进程:jps 这里写图片描述 在hadoop2,hadoop3上查看hadoop的进程:jps 这里写图片描述在hadoop1上启动yarn集群 start-yarn.sh 这里写图片描述 在hadoop2,hadoop3上查看进程: 这里写图片描述使用浏览器查看集群状态:http://192.168.93.120:8088 如果没法访问,查看防火墙状态: sudo service iptables status 这里写图片描述 关闭防火墙: sudo service iptables stop 这里写图片描述 最后正确的结果: 这里写图片描述查看HDFS文件系统状态:http://192.168.93.120:50070 这里写图片描述 如果结果都如上,表示hadoop集群搭建成功.那这篇文章的目的就达到了. 总结

我在配置的时候,也出现这样那样的问题.所以配置过程中需要注意以下几点: 1. 配置主机名时,以及在添加用户时,千万不要使用带有下划线的以及其他不符合规范的命名,我第一次配置时因为使用了下划线,导致启动集群时一直启动失败,折腾了好久好久. 2. hadoop的解压,配置,拷贝,需要使用配置了免密登录的用户来完成.比如我以上配置的就是hadoop用户来完成的. 3. 初始hadoop集群的时候,需要使用与解压,配置,拷贝hadoop时的用户一致. 4. 配置的时候仔细,仔细再仔细.可能因为一个字母错误,就会导致很多问题. 5. 我的3台虚拟机的hostname命名分别是hadoop1,hadoop2,hadoop3,在这三台虚拟机下都有一个用来搭建hadoop集群的用户hadoop,所以再阅读的时候不要混淆了. 6. 如果按照我的步骤来搭建,最后集群搭建完成时,每台机器的进程规划如下:

主机名进程 hadoop1 SecondaryNameNode ResourceManager NameNode hadoop2 DataNode NodeManager hadoop3 DataNode NodeManager

尽情期待下一篇Zookeeper的环境搭建,或者HDFS的API操作

创作不易.转载注明出处. qq交流群:775661488



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有