在上一篇我们完成了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)
编辑/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
给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权限.
查看/home/file1. 信息:
-rw-r--r--. 1 root root 0 May 1 00:32 /home/file1
从文件信息 可以看出,只有root可以读写删除该文件.
删除/home/file1文件
rm -rf hadoop
rm: cannot remove `/home/file1': Permission denied
结果是删除文件失败,权限异常.
配置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
<configuration>
<property>
<name>fs.defaultFSname>
<value>hdfs://hadoop1:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/home/hadoop/apps/hadoop-2.7.5/datavalue>
property>
configuration>
设置hdfs-site.xml配置文件
cd /home/hadoop/apps/hadoop-2.7.5/etc/hadoop/
vim hdfs-site.xml
<configuration>
<property>
<name>dfs.replicationname>
<value>2value>
property>
configuration>
配置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
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
configuration>
配置yarn-site.xml配置文件
cd /home/hadoop/apps/hadoop-2.7.5/etc/hadoop/
vim yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>hadoop1value>
property>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
configuration>
配置slaves配置文件
cd /home/hadoop/apps/hadoop-2.7.5/etc/hadoop/
vim slaves
#指定干活的datanode
hadoop2
hadoop3
配置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
```
我在配置的时候,也出现这样那样的问题.所以配置过程中需要注意以下几点:
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