最近要搭hadoop环境,不想装双系统,所以就想在虚拟机上实验一番
环境准备
1、光盘镜像:CentOS-6.0-i386-bin-DVD.iso
2、VMware10
3、hadoop版本:hahadoop-2.2.0
4、jdk1.8.0
我们要建立一个具有如下配置的集群:
host name
ip address
os
1
master
192.168.230.128
CentOS6.0
2
slave1
192.168.230.129
CentOS6.0
其中master为name node和job tracker节点,slaveN为data node和task tracker节点。
安装和配置步骤具体如下:
1. 配置虚拟网络
如果你对VMWare和网络配置比较熟悉,可以忽略这一步,但是后面配置IP地址时具体的参数可能和我说的不一样。如果你想通过一步一步操作就能成功的话,就需要这些设置
通过VMWare -> Edit -> Virtual Network Editor打开如下对话框:
在上面的列表中选中VMnet8 NAT那一行,然后按图设置所有内容,之后点击NAT Setting按钮,打开如下对话框,确保各个参数如图中所示设置。
创建虚拟机比较简单,注意VMnet配置使用NAT就可以了,创建两个centOS6虚拟机,当然为了方便,最好装一下VMware Tools,这种资料网上很多,就不赘述了。
2. 配置网络
关掉SELINUX: vi /etc/selinux/config ,设置 SELINUX=disabled ,保存退出。
关闭防火墙: /sbin/service iptables stop;chkconfig --level 35 iptables off
修改IP地址为静态地址: vi /etc/sysconfig/network-scripts/ifcfg-eth0 ,将其内容改为如下图所示,注意HWADDR那一行,你所创建的虚拟机的值很可能与之不同,保持原值,不要修改它!
修改主机名称: vi /etc/sysconfig/network ,将其内容改为如下图所示:
修改hosts映射: vi /etc/hosts ,将其内容改为如下图所示。我们在这里加入了master和slave1的映射项。(这里我把localhost都给删了,最好还是保留吧,直接在后面append这些映射项就可以了)
执行: service network restart 以重启网络。
3. 安装JDK
下载最新版本的jdk,然后在namenode和datanode节点上安装
rpm -ivh jdk-8-linux-i586.rpmroot用户登陆,命令行中执行命令”vi /etc/profile”,配置环境变量
保存并退出,执行以下命令使配置生效
source /etc/profile
在终端输入java –version 查看java配置情况
4. 配置所有节点之间SSH无密码验证
(1)所有节点执行以下命令,生成rsa密钥对:
ssh-keygen -t rsa
这将在/root/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。
(2)将所有datanode节点的公钥id_rsa.pub传送到namenode上:
cp id_rsa.pub datanode01.id_rsa.pub//复制一份id_rsa.pub
scp datanode01.id_rsa.pub namenode节点ip地址:/root/.ssh/
//将公钥文件传送到namenode
(3)namenode节点上综合所有公钥(包括自身)并传送到所有节点上
cp id_rsa.pub authorized_keys //authorized_keys名字不能错!
cat datanode01.id_rsa.pub >> authorized_keys
然后使用SSH协议将所有公钥信息authorized_keys复制到所有DataNode的.ssh目录下
scp authorized_keys data节点ip地址: /root/.ssh/
这样配置过后,所有节点之间可以相互SSH无密码登陆,可以通过命令
“ssh 节点ip地址” 来验证。
配置完毕,在namenode上执行“ssh 本机,所有数据节点”命令,因为ssh执行一次之后将不会再询问。
在namenode和datanode节点上的/usr/etc/目录下新建hadoop文件夹,将hadoop-2.2.0解压到namenode节点的hadoop文件夹下(对于datanode节点上的hadoop,将用scp指令直接从namenode节点拷贝过去,这样更方便一些),修改namenode节点的/etc/profile文件,在后面添加环境变量,如下图所示:
保存并退出,执行以下命令使配置生效
source /etc/profile
5. 安装hadoop2.2
1)解压缩hadoop-2.2.0.tar.gz
tar -zxf hadoop-2.2.0.tar.gz
默认解压缩到当前目录下面,这里解压缩/usr/etc/hadoop/目录下面
2) 修改hadoop配置文件
打开hadoop-2.2.0/etc/hadoop,修改里面的配置文件
a) hadoop-env.sh,找到里面的JAVA_HOME,修改为实际地址(java_home不能写${JAVA_HOME},经过测试)
b) yarn-env.sh ,同样找到里面的JAVA_HOME,修改为实际路径 (java_home不能写${JAVA_HOME},经过测试)
c) slave 这个文件配置所有datanode节点,以便namenode搜索,本例配置如下
slave1
d) core-site.xml
fs.defaultFS
hdfs://master:9000
io.file.buffer.size
131072
hadoop.tmp.dir
/usr/etc /hadoop/hadoop-2.2.0/mytmp
A base for other temporarydirectories.
hadoop.proxyuser.root.hosts
master
hadoop.proxyuser.root.groups
*
注意fs.defaultFS为2.2.0新的变量,代替旧的:fs.default.name
e) hdfs-site.xml
dfs.namenode.name.dir
/usr/etc/ hadoop/name
true
dfs.datanode.data.dir
/usr/etc/ hadoop/data
true
dfs.replication
1
dfs.permissions
false
新的:dfs.namenode.name.dir,旧:dfs.name.dir,新:dfs.datanode.name.dir,旧:dfs.data.dir
dfs.replication确定 data block的副本数目,hadoop基于rackawareness(机架感知)默认复制3份分block,(同一个rack下两个,另一个rack下一 份,按照最短距离确定具体所需block, 一般很少采用跨机架数据块,除非某个机架down了)
f) mapred-site.xml.template(或者mapred-site.xml,这两个名字都可以,已通过测试)
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
master:10020
mapreduce.jobhistory.webapp.address
master:19888
mapreduce.jobhistory.intermediate-done-dir
/mr-history/tmp
mapreduce.jobhistory.done-dir
/mr-history/done
配置其使用 Yarn 框架执行 map-reduce 处理程序
这个地方需要把mapred-site.xml.template复制重新命名
新的计算框架取消了实体上的jobtracker, 故不需要再指定mapreduce.jobtracker.addres,而是要指定一种框架,这里选择yarn. 备注2:hadoop2.2.还支持第三方的计算框架,但没怎么关注过。配置好以后将$HADOOP_HOME下的所有文件,包括hadoop目录分别copy到其它3个节点上。
g) yarn-site.xml
yarn.resourcemanager.address
master:18040
yarn.resourcemanager.scheduler.address
master:18030
yarn.resourcemanager.resource-tracker.address
master:18025
yarn.resourcemanager.admin.address
master:18041
yarn.resourcemanager.webapp.address
master:8088
yarn.nodemanager.local-dirs
/usr/etc/ hadoop/mynode/my
yarn.nodemanager.log-dirs
/usr/etc/ hadoop/mynode/logs
yarn.nodemanager.log.retain-seconds
10800
yarn.nodemanager.remote-app-log-dir
/logs
yarn.nodemanager.remote-app-log-dir-suffix
logs
yarn.log-aggregation.retain-seconds
-1
yarn.log-aggregation.retain-check-interval-seconds
-1
yarn.nodemanager.aux-services
mapreduce_shuffle
3) 将上述文件配置好后,将hadoop-2.2.0文件复制到其余datanode机器上的相同路径下。
scp -r /usr/etc/hadoop/hadoop-2.2.0 slave1:/usr/etc/hadoop
切换到root用户,修改/etc/profile文件 设置hadoop环境变量,
增加之后保存,设置生效:source /etc/profile
最后两行特殊说明下,有的文章中遗漏掉这部分配置,最后在启动hadoop2.2时报了下面的错误
Hadoop 2.2.0 - warning: You have loaded library /home/hadoop/2.2.0/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard.
Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
查看更多关于VMware虚拟机、centos6下安装部署hadoop2.2的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did96457