您的位置:首页 > 大数据

大数据学习第二章 hadoop集群的部署

2017-11-29 15:51 274 查看
本机情况:这里选择用三台centos6.5的虚拟机部署集群做测试使用,台数不限制,原理相同。

1. 配置三台独立的可上网的虚拟机做集群部署准备

如果不会配置则参考我的上一篇文章看怎么部署的master和ip配置等操作http://blog.csdn.net/liujun122/article/details/78666062

1.1 三台虚拟机的分工如下:

主机(多内存,需要额外的内存消耗) master ip:192.168.61.10

从节点1(多磁盘,执行任务 ) slave1 ip:192.168.61.11

从节点2(多磁盘,执行任务) slave2 ip:192.168.61.12

1.2 在安装好master之后,复制该系统的VM,然后分别命名为slave1和slave2(这里指在VM软件中对该系统的命名,不影响。可以不用,仅仅便于操作)

1.3 解决slave1 和 slave2 的ip问题,过程与主机设置ip过程相同,由于是复制的主机的VM,所以这个时候的三台虚拟机的ip是相同有冲突的,因此无法上网。将slave1和slave2的ip分别修改为 61.11和 61.12(当然这里可以随意修改,只要不相同没有冲突即可)

1.4 在解决了ip地址冲突以后仍然无法上网,是由于三台虚拟机的网络适配器有冲突,用了同一个网络适配器,需要在slave1和slave2的虚拟机设置里将当前网络适配器移除后重新添加选择NAT模式即可,此时三台虚拟机拥有不同的ip和不同的网络适配器,应该都可以上网,如果还不可以,那么重新检查
/etc/sysconfig/network-script/ 下面 ifcfg-eth0(类似文件)的ip配置,千万不能相同

2.安装jdk (hadoop需要Java支持,这里选择了jdk1.6及以上都可以)

2.1 在主机master中将jdk的安装包准备好,可以下载也可以在本机的windows系统中将文件共享到VM中,这里不再赘述网上下载方法,自行百度。如果需要文件共享给虚拟机,在VM软件中点击编辑虚拟机设置-选项-共享文件夹,打开并指定目录到本机中jdk的安装包的文件地址。

2.2 选择共享文件模式,安装包将在虚拟机的 /mnt/hgfs 目录下,将jdk复制到 /usr/local/src下,

执行命令:cp * /usr/local/src(复制当前文件夹所有)
或者 cp jdk /usr/local/src(jdk为当前jdk的文件全称,复制当前一个)

2.3 进入src目录下,执行当前jdk安装 命令: ./jdk...(当前JDK的全称, ./表示执行)

执行完成后,配置Java的环境变量

编辑环境变量信息 vim ~/.bashrc (~表示为隐藏文件)

添加以下信息:

export JAVA_HOME = /usr/local/src/jdk-1.6 (jdk安装好的目录)

export CLASSPATH = .:$CLASSPATH:$JAVA_HOME/lib

export PATH = $PATH:$JAVA_HOME/bin

保存退出

完成后执行命令 source ~/.bashrc 加载环境变量配置 ,此时可以检查当前虚拟机的 Java环境

2.4 将jdk远程复制到另外两个从节点slave1和slave2上,在src目录下找到jdk的安装包

执行以下命令: scp -rf jdk名 192.168.61.11:/usr/local/src 将文件复制给slave1

需要输入密码验证,完成后同理复制到slave2.

scp -rf jdk名 192.168.61.12:/usr/local/src

2.5 在虚拟机上同样执行2.3操作,完成jdk的安装以及环境变量的配置。

3.安装Hadoop,这里选择Hadoop1.2.1,稳定版本

3.1 同样将Hadoop安装文件共享移动至src目录下,执行解压命令

tar xvzf hadoop1.2.1...(hadoop的安装包)

3.2 进入解压后的目录 hadoop1.2.1文件夹,在当前目录新建一个tmp,用于存放之后的 运行产生的临时文件mkdir tmp

3.3 配置conf下的文件 cd conf/

3.3.1 配置 masters 文件 vim masters

将 localhost 修改为 master ,保存退出

3.3.2 配置 slave vim slave

添加 slave1 slave2 分别一行 ,保存退出

3.3.3 配置 core-site.xml vim core-site.xml

在<configuration>内添加以下内容

<property> // 配置临时目录地址

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

<value>/usr/local/src/hadoop1.2.1/tmp</value>

</property>

<property>

<name>fs.default.name</name>

<value>hdfs://192.168.61.10:9000</value> // 注意是 9000 端口

</property>

保存退出

3.3.4 配置mapred-site.xml vim mapred-site.xml

添加以下内容

<property>

<name>mapred.job.tracker</name>

<value>htttp://192.168.61.10:9001</value> // 注意是 9001 端口

</property>

保存退出

3.3.5 配置 hdfs-site.xml vim hdfs-site.xml

<property> //数据在hdfs存储的副本数,默认3个

<name>dfs.replication</name>

<value>3</value>

</property>

保存退出

3.3.6 配置 hadoop-env.sh vim hadoop-env.sh

在末尾加上 export JAVA_HOME = /usr/local/src/jdk(安装目录)

3.4 配置本地网络

vim /etc/hosts 设置host

添加以下内容,相当于别名,可以直接通过名称代替ip,便于后期使用

192.168.61.10 master

192.168.61.11 slave1

192.168.61.12 slave2

由于这里只配置了三台,因此只添加三条,注意每条ip对应的hostName要一致

完成后保存退出

使用命令 : hostname master 使配置生效

特别注意,这种方式是临时生效,当关机后将恢复,

因此还需要配置永久生效的方式 ,如下:

命令: vim /etc/sysconfig/network

修改 HOSTNAME = master

保存退出

使用命令 : hostname master 使配置生效

至此,master主机完成配置。

3.5 配置从节点slave1和slave2,此时比较方便,将master中解压后修改过配置文件 的hadoop文件夹直接远程复制给slave1和slave2,这样从节点就有了master主机的相关Hadoop配置信息

执行命令: scp -rp hadoop1.2.1 192.168.61.11:/usr/local/src

scp -rp hadoop1.2.1 192.168.61.12:/usr/local/src

注意:这里必须是解压后已经修改过配置信息的Hadoop文件夹,

这样才可以保 证集群的信息统一,完成复制后,可以到slave1和slave中

查看配置信息是否存在

3.6 配置slave1和slave2 的 本地网络

vim /etc/hosts 设置host

添加以下内容,相当于别名,可以直接通过名称代替ip,便于后期使用

192.168.61.10 master

192.168.61.11 slave1

192.168.61.12 slave2

保存退出

然后配置永久生效hostname

vim /etc/sysconfig/network 修改HOSTNAME分别为slave1和slave2

同样, hostname slave1 ,slave2节点执行 hostname slave2

3.7 解决一些后期常见的问题

3.7.1 防火墙问题,可以直接关闭防火墙 /etc/init.d/iptables stop

3.7.2 selinux问题, 执行 setenforce 0 即可

3.8 建立集群的互信关系,访问时就不需要密码

3.8.1 首先在master主机中 执行命令: ssh-keygen 回车

进入隐藏目录 .ssh 命令 : cd ~/.ssh/

查看当前文件目录结构,此时应该有三个文件

id_rsa id_rsa.pub hosts(大概记不清)

将公钥文件内容id_rsa.pub 拷贝个一个新文件authorized_keys

命令: cat id_rsa.pub > authorized_keys

3.8.3 在slave1和slave2中,同样进入隐藏目录.ssh中

命令: ssh-keygen

cd ~/.ssh/

查看公钥内容 cat id_rsa.pub 将内容复制到master的authorized_keys

同理,将slave2的公钥内容复制到master中,这样master中就有了集群

三个系统的公钥,然后将master的authoriezd_keys文件远程复制到

slave1和slave2的 .ssh目录下

命令: scp -rp authorized_keys slave1:~/.ssh/

scp -rp authorized_keys slave1:~/.ssh/

由于设置了别名,可以直接通过名称代替ip地址的方式。

此时三台机器都有了对方的公钥,互相访问则不需要密码即可

3.9 启动hadoop

进入 master 的 hadoop目录中

cd /usr/local/src/hadoop/bin/

第一次启动需要以下命令:

./hadoop namenode -format 格式化namenode

./start-all.sh 启动集群

此时可以通过命令 jps 查看进程,应该有4个

分别是 NameNode

SecondaryNameNode

Jps

JobTracker

这个时候可以直接查看slave1和slave2,直接执行命令 jps 就可以查看进程

slave1 和 salve2 应该有3个进程

分别是 DataNode

TaskTracker

Jps

这样集群就已经部署完成了

3.10 测试

在master中进行hadoop集群的测试

以下是hadoop的一些简单命令

1. 查看文件

./hadoop fs -ls /可以查看集群中HDFS中的文件

2. 上传文件

./hadoop fs -put /etc/passwd(文件目录地址)

3. 读取文件

./hadoop fs -cat/passwd(HDFS中存放的文件名)

如果都可以执行,那么集群部署成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: