您的位置:首页 > 运维架构

Hadoop2.5.2集群配置(基于VMware虚拟机)

2016-03-12 23:15 645 查看
写在前面:

文章内容为2015年年初准备毕业设计时随手记录的笔记

注:

当初搭建的时候,VMnet8的IP时不时就变成169.254,即使从VMware10升到VMware11也没法解决,初步怀疑是VMware在Win8下的问题,所以重置过很多次VMware的虚拟网卡配置,所以截图里的IP配置存在80、77等几个不同的网段。。

工具:

VMware 11

ubuntu 14.04.1

Hadoop 2.5.2

搭建步骤简述:

关闭VMware的NAT模式下的DHCP,

根据VMnet8的网段来分配三个节点的静态IP;



修改hosts文件;



安装jdk并配置环境变量;



安装/配置SSH;



安装hadoop并配置环境变量,修改相关文件;



克隆出另外两个节点,并修改:hostname、静态IP、hosts文件;



配置SSH、使NameNode能无密码访问DataNode;



修改NameNode上的yarn-site.xml文件,完成hadoop配置。

正文:

上一篇先大致讲了如何在VMware中安装ubuntu,下面讲如何配置

0. 配置物理机和虚拟机间网络连接(NAT)

使用NAT的话,就要开启VMnet8这个虚拟网卡作为路由器,查看VMnet8的信息:



查看VMware对NAT相关的配置:

将DHCP服务器取消:



查看NAT设置:



所以按照这个网段、网关来配置ubuntu主机的静态IP:



配置好后,虚拟机和物理机能互相ping通即可。

1. 各虚拟主机及hosts文件修改

分配好各节点的IP和主机名:

192.168.80.129 NameNode

192.168.80.131 DataNode1

192.168.80.132 DataNode2

命令: sudo gedit /etc/hosts



保存之后,重启网络 sudo /etc/init.d/networking restart 即可

2. 建立一个hadoop组和hadoop用户

P.S. 这一步的意图不太懂,用户这步应该都是为了后续的操作方便,添加到admin组应该是权限方面,但这块不太熟。。
按网上的步骤:

sudo
addgroup hadoop

sudo
adduser --ingroup hadoop hadoop

由于安装ubuntu的时候已经设置好了用户名和密码,所以这时会提示:



将用户hadoop添加到管理组:

sudo usermod -aG admin hadoop

但我这边提示没有admin组,不知道是什么原因。。

3. 安装SSH

ubuntu好像是已经有SSH了,当时装的时候报了一堆的问题,这里不讲安装,只讲配置

配置成免密码登录(这一步是在克隆出DataNode后做的)

在NameNode上执行: ssh-keygen -t rsa -P ""



按个回车就可以了,会在/home/{username}/.ssh下生成id_rsa和id_rsa.pub,前者为私钥,后者为公钥。

复制公钥:cp id_rsa.pub authorized_keys

把公钥发送到另外两台datanode,这个过程可能有几个影响因素:

①关闭防火墙

sudo ufw disable (好像需要重启?)

②authorized_keys文件的权限

chmod 600 authorized_keys

③目的路径

用户名@IP(hostname):/home/{用户名}/.ssh/

例:scp authorized_keys hadoop@DataNode2:/home/hadoop/.ssh/



自己在做的时候,看到了网上的一篇博客里这么写的:scp authorized_keys root@10.0.1.201:/root/.ssh/

然后就跟着写了root,但是一直提示权限不足,后来继续搜索其他几篇博客,综合了一下①和②两个步骤,最终先修改了keys文件的权限,然后把datanode1关闭了防火墙并重启了一下,再尝试之后依旧提示权限不足(当然是。。),然后才恍然大悟,写了.ssh的正确路径。。

配置成功后,能无密码直接SSH连接到其他节点:



4. 安装jdk

下载好jdk:jdk-7u75-linux-i586.gz
在/usr/local下创建java文件夹,把gz包复制进去,解压。
sudo mkdir java
sudo cp jdk-7u75-linux-i586.gz /usr/local/java
sudo tar -xzf jdk-7u75-linux-i586.gz



配置环境变量:

打开.profile,在最后加上这几句

export JAVA_HOME=/usr/local/java/jdk1.7.0_75

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

然后执行source ~/.profile



这样算是配置好了,但是还需要修改系统默认jdk(看上图的样子其实觉得默认jdk已经是新安装的了):

$ sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.7.0_75/bin/java 300

$ sudo update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.7.0_75/bin/javac 300

$ sudo update-alternatives --config java

$ sudo update-alternatives --config javac

这个版本的直接执行前两句就自动完成了,所以后两句不需要了



5. 安装hadoop

官网下载了比较新的2.5.2,与安装jdk类似,usr/local下新建hadoop文件夹,解压:



配置.profile,新增了这些(从网上学的):

export HADOOP_INSTALL=/usr/local/hadoop/hadoop-2.5.2

export PATH=$PATH:$HADOOP_INSTALL/bin

export PATH=$PATH:$HADOOP_INSTALL/sbin

export HADOOP_MAPRED_HOME=$HADOOP_INSTALL

export HADOOP_COMMON_HOME=$HADOOP_INSTALL

export HADOOP_HDFS_HOME=$HADOOP_INSTALL

export YARN_HOME=$HADOOP_INSTALL

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"

保存之后,执行生效:

source ~/.profile

配置完之后,修改hadoop相关配置文件:
这个部分是搭建环境最麻烦的地方,因为网上的文章错综复杂,修改的配置文件各不相同,而我初次接触hadoop,完全不知道怎么搞,只得多搜一些博客,综合一下,搭建完后再做测试看看有没有什么问题:
core-site.xml:

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/hadoop-2.5.2/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://NameNode:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
</configuration>


hdfs-site.xml(可选的配置):

<configuration>
<property>
<name>dfs.nameservices</name>
<value>NameNode</value>
<description>
Comma-separated list of nameservices.
</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///usr/local/hadoop/hadoop-2.5.2/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/local/hadoop/hadoop-2.5.2/tmp/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>


mapred-site.xml(先复制mapred-site.xml.template->mapred-site.xml):
sudo cp mapred-site.xml.template mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>NameNode:50030</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>NameNode:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>NameNode:19888</value>
</property>
</configuration>


yarn-site.xml(只针对NameNode):

<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>NameNode</value>
<description>The hostname of the ResourceManager</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>shuffle service for MapReduce</description>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>NameNode:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>NameNode:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>NameNode:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>NameNode:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>NameNode:8088</value>
</property>
</configuration>


slaves(记得把localhost删掉):



hadoop-env.sh:

export JAVA_HOME=/usr/local/java/jdk1.7.0_75

yarn-env.sh:

export JAVA_HOME=/usr/local/java/jdk1.7.0_75

=======================昏割线=======================

hadoop节点的安装配置就是这样,虚拟机的克隆没有在文章中描述,这步比较简单,下一篇讲如何启动hadoop进程检验有没有部署成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: