鸿 网 互 联 www.68idc.cn

虚拟机中搭建hadoop

来源:互联网 作者:佚名 时间:2016-05-15 06:52
Hadoop搭建过程 一、安装准备 虚拟机:CentOS-6.5-x86_64-bin-DVD1.iso Java:jdk-7u79-linux-x64.gz Hadoop:hadoop-2.6.0 安装过程为先在一台虚拟机中配置好时钟、安好jdk、安装并配置好hadoop再进行克隆操作,之后再在master和slave上分别进行其它配置。

Hadoop搭建过程

一、安装准备

虚拟机:CentOS-6.5-x86_64-bin-DVD1.iso

Java:jdk-7u79-linux-x64.gz

Hadoop:hadoop-2.6.0

安装过程为先在一台虚拟机中配置好时钟、安好jdk、安装并配置好hadoop再进行克隆操作,之后再在master和slave上分别进行其它配置。

二、安装过程

1、安装虚拟机

下载好的压缩包由三部分组成,第一个是序列号,安装时有一步需要将其粘贴上。第二个是汉化包。最后一个就是实际8.04版本的安装包。

安装时点击最后一个exe基本就“下一步”就可以,因为本来以前就装好了所以我点击时它提醒我已经有在运行的了。需要提一下的时,在进行汉化包的安装时,需要将虚拟机关掉。但实际是关掉以后后台还是有进程,所以需要到任务管理器里关。我在实际操作过程中并没有关掉后台进程,然后安装汉化包时会提醒有装不了的部分,之间点击“忽略”即可,因为一小部分不能汉化根本不影响使用。点击新建虚拟机。进入新建虚拟机向导界面。

这里需要注意的是我们习惯性会选择安装盘镜像文件,但这样不对。因为如果选择此项默认的是最简化安装。所以我们选择创建一个虚拟空白硬盘。对新建的虚拟机起名并分配20G存储空间,实际不需要这么大,而且这也不意味着我就有20G的剩余内存,只是给它设置成这样,之后实际使用中并不会这么大。

新建后的空硬盘如图,之后在这个壳中安装真正的Linux。

点击左上角“编辑虚拟机设置”,可以看到虚拟机设置,内存推荐的最大内存是8G,需要提的是Centos6最小内存是628M,所以分配不能少于这个数值。CPU可以选择虚拟化,就是将真实机的性能完全映射到虚拟机中,这特别适合跑大数据,但缺点是占用实际CPU。

CD中的设备状态必须选择“已连接”,此处没有选是因为还没有开机所以是灰的,一旦开机必须得选。否则光盘放进去以后虚拟机会找不到。下面的链接选择“使用ISO镜像文件”。

网络配置中,桥接代表可以直接和真实机通信,好处是配置简单,直接选择桥接即可,也可以和其他网络设备通信,缺点是虚拟机会占用真实机的一个网段的一个IP。但选择剩下两个是用虚拟网卡和真实机通信,但不能和其他网络设备通信。

虚拟机中有一个快照功能,点击第一个画圈处会建立快照,它会将你此时虚拟机的设置和状态完全保存下来,一旦系统奔溃或出现错误,点击第二个画圈处就可以恢复记录快照时的虚拟机状态,特别适合学习使用。在虚拟机、管理中有一个克隆,可选择连接克隆还是原始克隆,克隆出一个和当前虚拟机一模一样的虚拟机,不同是连接克隆当原先的崩溃时也不能用了,但原始克隆就不会。

打开电源以后,快速按F2键,选择BOOT可更改启动项,默认的是硬盘启动但我们现在硬盘里没有所以应该选择光驱启动,然后保存退出。需要注意的是在再一次启动时需要把硬盘启动改回来否则每次都是光驱启动。但实际上,虚拟机是十分智能的,这一步完全可以不做,虚拟机在开机时自己就识别出硬盘中没有内容然后跳到光驱启动了。

选择install进行安装。跳过镜像检查即可。“Ctrl+Alt+enter”全屏,“Ctrl+Alt”退出全屏。

点击下一步,选择简体中文、标准美式键盘、基本存储,填写主机名,选择上海(没有北京,北京和上海是同一时区)。我们选择自定义分区,/home 2000; /boot 200; swap 1000; / 剩下所有空间。点击下一步一直,选择最小化安装,完成安装。

2、添加root用户

系统hostname为master,username为jyli。为方便之后操作首先将jyli添加root权限。修改/etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:

## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
jyli     ALL=(ALL)    ALL

修改完毕,现在可以用jyli帐号登录,然后用命令 sudo – ,即可获得root权限进行操作。

3、VMtools安装

选择虚拟机—--VMware tools 后 桌面上会出现一个如图所示VMware tools 的光盘,打开并将里面的压缩包解压到桌面,在terminal中进入解压缩的文件夹,ls列出所有。找到vmware-install.pl。

执行sudo ./vmware-install.pl,一直enter下去。安装完后,执行sudo shutdown -r now生效。

4、时间同步

[jyli@master ~]$ crontab –e

输入 i,进入插入模式,键入下面的一行代码,按 Esc, 然后键入:wq 保存退出。

0 1 * * * /usr/sbin/ntpdate cn.pool.ntp.org

5、关闭防火墙

在终端中执行下面命令:[jyli@master ~]$ setup

光标移动选择“ Firewall configuration”选项,回车进入选项

如果该项前面有“ *”标,则按一下空格键关闭防火墙,如下图所示,然后光标移动选择“ OK”保存。

6、安装jdk

所用版本JDK jdk-7u79-linux-x64.gz,放到linux桌面,直接解压 tar zxf jdk-7u79-linux-x64.gz。用mv命令移动到/usr中。接下来进行配置,命令

vi ~/.bash_profile

进入插入模式后插入。

export JAVA_HOME=/usr/jdk1.7.0_79

export PATH=$JAVA_HOME/bin:$PATH

exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

保存退出。运行source ~/.bash_profile

测试:

7、hadoop安装和配置

Hadoop使用2.6.0版本,解压路径/usr。

环境变量配置:

vi ~/.bash_profile

#HADOOP

export HADOOP_HOME=/usr/hadoop-2.6.0

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

保存后退出。

在/usr下使用mkdir建文件夹hadoopdata,作为数据目录。接下来进行各种环境变量的配置。

7.1 配置环境变量hadoop-env.sh

环境变量文件中,只需要配置 JDK 的路径。

[jyli@masterhadoop-2.6.0]$ gedit /usr/hadoop-2.6.0/etc/hadoop/hadoop-env.sh

在文件的靠前的部分找到下面的一行代码:

exportJAVA_HOME=${JAVA_HOME}

将这行代码修改为下面的代码:

export JAVA_HOME=/usr/jdk1.7.0_79/

然后保存文件。

7.2配置环境变量yarn-env.sh

环境变量文件中,只需要配置 JDK 的路径。

[jyli@masterhadoop-2.6.0]$ gedit /usr/hadoop-2.6.0/etc/hadoop/ yarn-env.sh

在文件的靠前的部分找到下面的一行代码:

# exportJAVA_HOME=/home/y/libexec/jdk1.6.0/

将这行代码修改为下面的代码(将#号去掉):

exportJAVA_HOME=/usr/jdk1.7.0_79/

然后保存文件。

7.3 配置核心组件core-site.xml

[jyli@masterhadoop-2.6.0]$ gedit /usr/hadoop-2.6.0/etc/hadoop/ core-site.xml

用下面的代码替换 core-site.xml 中的内容:

<?xmlversion="1.0" encoding="UTF-8"?>

<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>

<!-- Put site-specificproperty overrides in this file. -->

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://master:9000</value>

</property>

<property>

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

<value>/usr/hadoopdata</value>

</property>

</configuration>

7.4 配置文件系统hdfs-site.xml

[jyli@masterhadoop-2.6.0]$ gedit /usr/hadoop-2.6.0/etc/hadoop/hdfs-site.xml

用下面的代码替换 hdfs-site.xml 中的内容:

<?xmlversion="1.0" encoding="UTF-8"?>

<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>

<!-- Put site-specificproperty overrides in this file. -->

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

7.5配置文件系统yarn-site.xml

[jyli@masterhadoop-2.6.0]$ gedit /usr/hadoop-2.6.0/etc/hadoop/yarn-site.xml

用下面的代码替换yarn-site.xml 中的内容:

<?xmlversion="1.0"?>

<configuration>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.resourcemanager.address</name>

<value>master:18040</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>master:18030</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>master:18025</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>master:18141</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>master:18088</value>

</property>

</configuration>

7.6 配置计算框架mapred-site.xml

复制 mapred-site-template.xml 文件:

[jyli@masterhadoop-2.6.0]$ cp /usr/hadoop-2.6.0/etc/hadoop/mapred-site.xml.template

/usr/hadoop-2.6.0/etc/hadoop/mapred-site.xml

使用 gedit 编辑:

[jyli@master~]$ gedit /usr/hadoop-2.6.0/etc/hadoop/mapred-site.xml

用下面的代码替换 mapred-site.xml 中的内容

<?xmlversion="1.0"?>

<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>

<configuration>

<property>

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

<value>yarn</value>

</property>

</configuration>

8、建slave节点、修改主机名并

由于前面这些配置基本一样所以可以直接将先建好的master克隆出一个slave,克隆时选择创建完成克隆,让slave脱离master存在。

配置主机名,命令gedit /etc/sysconfig/network。

进入后修改如下,保存退出。

NETWORKING=yes

HOSTNAME=master

确实修改生效命令:hostname master

输入hostname检测如下。

Slave节点使用同样的方法进行修改,只需将master单词改为slave。

9、配置IP

分别配置master和slave的IP,直接手动配置即可。

master:192.168.1.100

slave:192.168.1.101

右击桌面右上角小电脑图标,弹出IP配置,选择mannal手动输入后选择Apply。配置好的如下图。

 

10、配置host列表。

需要在 root 用户下( 使用 su 命令), 编辑主机名列表的命令:

[root@master jyli]$ gedit /etc/hosts

将下面两行添加到/etc/hosts 文件中:

192.168.1.100 master

192.168.1.101 slave

使用ping命令验证

10、免秘钥登录

master:

在终端生成密钥,命令如下(一路点击回车生成密钥)。

[jyli@master ~]$ ssh-keygen -t rsa

由于我的已经弄好了,所以会提示已经存在是否重生成。生成后进行复制,命令:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

修改authorized_keys 文件的权限,命令:

chmod 600 ~/.ssh/authorized_keys

将 authorized_keys 文件复制到 slave 节点,命令如下:

scp ~/.ssh/authorized_keys jyli@slave:~/

slave节点:

在终端生成密钥[jyli@slave ~]$ ssh-keygen -t rsa

将 authorized_keys 文件移动到.ssh 目录:[jyli@slave ~]$ mv authorized_keys ~/.ssh/

修改 authorized_keys 文件的权限,命令如下:

[jyli@slave ~]$ cd ~/.ssh

[jyli@slave .ssh]$ chmod 600 authorized_keys

验证:

11、启动

先格式化文件系统,hdfs namenode –format,进入hadoop-2.6.0目录后执行如下命令:./sbin/start-all.sh。

输入jps查看。

进入网页查看

 

三、安装过程中遇到的问题

WARN util.NativeCodeLoader: Unable to loadnative-hadoop library for your platform... using builtin-java classes whereapplicable

Starting namenodes on [master]

The authenticity of host 'master(192.168.1.100)' can't be established.

 

[jyli@master sbin]$ jps

3550 ResourceManager

3804 Jps

 

在进行启动时有警告,同时没有启动好,jps只显示2个。这个原因是因为官方提供的lib目录中.so文件是在32位系统下编译的,如果是64位系统,需要自己下载源码在64位上重新编译

http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/NativeLibraries.html

 [jyli@master ~]$ mvDesktop/hadoop-native-64-2.6.0 /usr/hadoop-2.6.0/lib/native

//把它放在native目录下了 但是没有覆盖

需要覆盖,先删除原先目录下的native再运行。问题解决。
网友评论
<