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

  • 本机情况:这里选择用三台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
内添加以下内容
// 配置临时目录地址
hadoop.tmp.dir
/usr/local/src/hadoop1.2.1/tmp
fs.default.name
hdfs://192.168.61.10:9000 // 注意是 9000 端口
保存退出
3.3.4 配置mapred-site.xml vim mapred-site.xml
添加以下内容
mapred.job.tracker
htttp://192.168.61.10:9001 // 注意是 9001 端口
保存退出
3.3.5 配置 hdfs-site.xml vim hdfs-site.xml
//数据在hdfs存储的副本数,默认3个
dfs.replication
3
保存退出
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中存放的文件名)

如果都可以执行,那么集群部署成功






























你可能感兴趣的:(大数据)