Hadoop平台搭建

来源:互联网 发布:常用的mac论文软件 编辑:程序博客网 时间:2024/06/05 01:03
一、VMWare安装
准备工具:
VMware-workstation-full-12.1.1-3770994.exe(VMware安装包)
vm12_keygen.exe(破解工具)

操作步骤:
1、双击“VMware-workstation-full-12.1.1-3770994.exe”按正常步骤安装;
2、安装完毕,打开VMware,打开“vm12_keygen.exe”,输入VMware Workstation12的许可证密钥;
3、破解成功;

二、Linux安装
准备工具:
CentOS-6.5-x86_64-bin-DVD1.iso(CentOS镜像)
CentOS-6.5-x86_64-bin-DVD2.iso(CentOS镜像)
VMware Workstation12

操作步骤:
1、打开VM,创建新的虚拟机。
2、“典型(推荐)”  -> 安装程序光盘影像文件(ISO) -> 浏览 -> “CentOS-6.5-x86_64-bin-DVD1.iso”。
3、最大磁盘大小,默认20G,可以先设置10G,最小不要低于5G。
4、虚拟机名称“CentOS 64 位”(随意,后期可以修改),位置“E:\学习\Hadoop\八斗学院\vm\CentOS_6.5”。
5、将虚拟磁盘存储为单个文件(好处:便于拷贝,拆分多个文件会容易漏内容,导致启动不起来
6、其他配置默认。
7、保存,等待虚拟机安装完毕,进入系统。

技巧:
Ctrl+Alt,可以让虚拟机中把鼠标释放。

遇到问题:
1、已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作。


重启电脑,点按“F1”进入BOIS,在Security中找到Virtualization Technology,改为“Enable”。
 

三、网络配置
准备工具:
1、已安装系统的虚拟机
2、SecureCRT

目的:
配置IP(与主机统一局域网,能通过主机上网)

操作步骤:
1、虚拟机设置网络,“NAT模式”,构造独立的局域网环境,不受外部干扰。
2、VM  - 编辑 - 虚拟网络编辑器 - 更改设置 - 选中VMnet8,移除网络  (VM给我们虚拟出来的几种网络设备,VMnet8是供NAT模式使用的
3、添加网络 - 添加新的VMnet8 - 在VMnet信息中,选中NAT模式  
VMnet8对应的子网地址是 192.168.153.X ,以后要遵循这个IP段,注意也不一定是153,要看移除后添加自动分配的为准
看下自己电脑的IP,cmd - ipconfig ,可以看出跟 192.168.153.X 完全不是一个子网段,所以192.168.153.X不会跟自己的主机冲突
NAT模式 - NAT设置,可以看到待会需要配置的网关,我这里是192.168.153.2


4、NAT模式也需要VM自动获取IP的服务,先桥接模式进行初始化。
5、桥接模式确定后,再选择NAT模式,确定后,ifconifg可以看到,当前没有分配IP(UP BROADCAST RUNNIG MULTICAST)


-----------------------------------------------------------------------------------------

为什么不用桥接模式?
桥接模式,由于每个人的网络环境不一样,IP地址提前分配,如果再设一个独立的IP,会有IP冲突的风险。
课程用NAT模式,即可满足上网需求,同时不用配同样的网段地址,相当于自己的主机中配置一个独立的局域网模式。

搞清楚VM中几种网络模式,桥接、NAT等

-----------------------------------------------------------------------------------------

6、编辑网卡eth0
进入网络配置:   cd /etc/sysconfig/network-scripts/
编辑eth0网卡信息:  vim ifcfg-eth0

这时默认的配置为:
  1. DEVICE="eth0"
  2. BOOTPROTO="dhcp"
  3. HWADDR="00:0C:29:C0:F3:22"
  4. IPV6INIT="yes"
  5. NM_CONTROLLED="yes"
  6. ONBOOT="yes"
  7. TYPE="Ethernet"

改为(把不要的行删掉):
  1. DEVICE="eth0"
  2. BOOTPROTO="static" #改为静态
  3. NM_CONTROLLED="yes"
  4. ONBOOT="yes"
  5. TYPE="Ethernet"
  6. IPADDR=192.168.153.10 #设置本机的IP地址,最后一位可以随意设置,与上述步骤子网段一致即可
  7. NETMASK=255.255.255.0 #子网掩码,固定
  8. GATEWAY=192.168.153.2 #网关,与上述步骤在NAT设置中一致即可
  9. DNS1=202.106.0.20 #这个是常用的联通的DNS

7、重启网络
Ctrl+Shift+T,新增一个终端标签,切换至root,然后找到命令重启。
  1. su (由于权限问题,需切换至root
  2. /etc/init.d/network restart


 
ifconfig,可以看到,已经改为刚才设置的地址


 
cmd下,ipconfig可以看到,自己的IP为 192.168.199.214,因此不冲突。


 
8、测试网络情况,看是否能上外网
curl www.baidu.com  (可以上网)
ping wwww.baidu.com (可以ping通)




9、配置SecureCRT
实际上,工作中用终端方式,远程操作(SecureCRT)
安装 “scrt73-x64.exe”
破解步骤:https://jingyan.baidu.com/article/066074d644a927c3c31cb076.html

1)选中Session - New Session
2)下一步 - Hostname “192.168.153.10” - Username “allen” (根据需要连接的IP和用户名,其他不用选)
3)双击进入新建的Session,输入密码,保存密码,确认
4)ifconfig,发现与上述一致
5)curl www.baidu.com  发现有乱码




6)点击“192.168.153.10”标签右键 - Session Options (设置终端的环境)
Terminal - Emulation 中 Terminal 改为 “Linux”,Scrollback Buffer 改为 128000 (改为linux,缓存改大)
Appearance 中Current color scheme 改为 “Traditional” ,Character encoding 改为 “UTF-8” (乱码消失)



四、Hadoop1.0安装

准备工具:
1、hadoop-1.2.1-bin.tar.gz,hadoop安装包
2、jdk-6u45-linux-x64.bin,java1.6
3、已经完成NAT网络配置的虚拟机环境,已经可以上外网

操作步骤:

A 搭建集群环境
模拟真实分布式环境,必然涉及到多台机器(学习阶段做三台),并且都是NAT环境。
1、打开虚拟机
2、把192.168.153.10作为主节点
做一个集群,需要一个主节点(master),再搭建两个从节点(slave)
Master(153.10),Slave1(153.11),Slave2(153.12)
3、把Master的VMware镜像,复制成两个独立的VMware镜像
4、挂起/关闭虚拟机(运行时数据会有变动,运行时拷贝会不全,很容易丢失数据)
5、找到镜像路径,找到“E:\学习\Hadoop\八斗学院\vm\CentOS_6.5”文件夹,复制两个副本
6、VM中打开两台复制的虚拟机镜像,在弹出框中,点击“我已复制虚拟机”
7、把虚拟机分别改名为master、slave1、slave2
8、查看master的IP(不变),查看是否能上网(可以)
查看slave1的IP(不变),查看是否能上网(不可以,地址冲突)
9、修改slave1、slave2的IP为约定好的11、12,并重启服务
  1. su
  2. [root@bogon network-scripts]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
  3. [root@bogon network-scripts]# /etc/init.d/network restart
  4. curl www.baidu.com (还是上不了网,是因为网卡的属性也复制过来了)

10、卸载网卡,点击VM右下角网络适配器 - 配置
移除硬件中的“网络适配器” - 添加“网络适配器” - NAT模式不变 - 确定
这个时候,新增了eth1的网卡,网卡物理地址发生改变,也能上网了
11、打开Secure,复制两个Session,右键Properties,修改SSH的Hostname为11、12
12、登录Session,查看IP,查看是否能上网

主节点会有额外资源开销,在真实生产环境中要配置多点内存,从节点要多存储。


B 安装Java
1、把jdk-6u45-linux-x64.bin通过VM共享目录的方式,拷贝到虚拟机中
2、在网络适配器 - 设置 - 选项 - 共享文件夹 - 总是启用 - 添加 - 增加一个“share_folder”(名字可以自己取) - 确定

 
3、复制 hadoop 和jdk 文件到,share_folder文件夹下
  1. hadoop-1.2.1-bin.tar.gz
  2. jdk-6u45-linux-x64.bin

4、进入终端,查看[allen@bogon ~]$ cd /mnt/hgfs/ 目录下是否有share_folder,里面是否有刚才复制的两个文件
5、把文件拷贝到src下
  1. [allen@bogon share_folder]$ su
  2. Password:
  3. [root@bogon share_folder]# ls
  4. hadoop-1.2.1-bin.tar.gz jdk-6u45-linux-x64.bin
  5. [root@bogon share_folder]# cp * /usr/local/src
  6. [root@bogon share_folder]# cd /usr/local/src/
  7. [root@bogon src]# ll
  8. total 107604
  9. -rwxr-xr-x. 1 root root 38096663 Aug 6 02:07 hadoop-1.2.1-bin.tar.gz
  10. -rwxr-xr-x. 1 root root 72087592 Aug 6 02:07 jdk-6u45-linux-x64.bin

6、安装jdk
  1. [root@bogon src]# ./jdk-6u45-linux-x64.bin
  2. done

7、编辑环境变
  1. [root@bogon src]# vim ~/.bashrc (修改根目录下bashrc文件)

/usr/local/src/jdk1.6.0_45 这个目录为Java的安装路径,改路径下有bin,bin下有java可以直接执行。
因此,需要把这个bin目录加到环境变量中。

  1. [root@bogon bin]# pwd
  2. /usr/local/src/jdk1.6.0_45/bin

~/.bashrc中添加Java环境变量(下面三行,JAVA_HOME根据安装的目录)
  1. export JAVA_HOME=/usr/local/src/jdk1.6.0_45
  2. export CLASSPATH=:$CLASSPATH:$JAVA_HOME/lib
  3. export PATH=$PATH:$JAVA_HOME/bin
  4. [root@bogon bin]# source ~/.bashrc (修改立即生效)

8、这时不用进入Java目录,可以直接使用
  1. [root@bogon bin]# which java
  2. /usr/local/src/jdk1.6.0_45/bin/java

9、复制java包到slave1、slave2
  1. [root@bogon bin]# cd /usr/local/src
  2. [root@bogon src]# ls
  3. hadoop-1.2.1-bin.tar.gz jdk1.6.0_45 jdk-6u45-linux-x64.bin
  4. [root@bogon src]# scp -rp jdk-6u45-linux-x64.bin 192.168.153.11:/usr/local/src/ (复制到11上)
  5. The authenticity of host '192.168.153.11 (192.168.153.11)' can't be established.
  6. RSA key fingerprint is bb:4b:d3:90:54:f9:d8:de:57:80:c5:76:f4:65:a0:1a.
  7. Are you sure you want to continue connecting (yes/no)? yes
  8. Warning: Permanently added '192.168.153.11' (RSA) to the list of known hosts.
  9. reverse mapping checking getaddrinfo for bogon [192.168.153.11] failed - POSSIBLE BREAK-IN ATTEMPT!
  10. root@192.168.153.11's password:
  11. jdk-6u45-linux-x64.bin 100% 69MB 34.4MB/s 00:02

10、切换到slave1、slave2进行安装
到目录下安装,然后修改环境变量,最后source(与上述步骤一致)

  1. [root@bogon ~]$ cd /usr/local/src/ (进入安装目录)
  2. [root@bogon src]# ./jdk-6u45-linux-x64.bin (安装jdk
  3. [root@bogon src]# vim ~/.bashrc (修改环境变量,与上述一致)
  4. export JAVA_HOME=/usr/local/src/jdk1.6.0_45
  5. export CLASSPATH=:$CLASSPATH:$JAVA_HOME/lib
  6. export PATH=:$PATH:$JAVA_HOME/bin
  7. [root@bogon src]# source ~/.bashrc (生效环境变量)

最后slave1、slave2的java都安装完毕。


C 安装Hadoop集群
1、解压hadoop压缩包
  1. [root@bogon src]# pwd
  2. /usr/local/src
  3. [root@bogon src]# ls
  4. hadoop-1.2.1-bin.tar.gz jdk1.6.0_45 jdk-6u45-linux-x64.bin
  5. [root@bogon src]# tar xvzf hadoop-1.2.1-bin.tar.gz


生成新的目录 hadoop-1.2.1
  1. [root@bogon src]# ls
  2. hadoop-1.2.1 hadoop-1.2.1-bin.tar.gz jdk1.6.0_45 jdk-6u45-linux-x64.bin

2、新增tmp文件夹
进入目录,新增tmp目录,用于存放之后的临时文件,包括后续hadoop运行中生成的临时文件,在这目录下统一管理
  1. [root@bogon src]# cd hadoop-1.2.1
  2. [root@bogon hadoop-1.2.1]# mkdir tmp

3、修改hadoop配置

修改conf/下的masters 和slaves文件
  1. [root@bogon hadoop-1.2.1]# cd conf/
  2. [root@bogon conf]# vim masters
master文件中,填写
  1. master

[root@bogon conf]# vim slaves
slaves文件中,填写(两个从节点)
  1. slave1
  2. slave2

修改conf/下的core-site.xml文件
9000端口是给namenode作准备
  1. [root@bogon conf]# vim core-site.xml
  2. <configuration>
  3. <property>
  4. <name>hadoop.tmp.dir</name>
  5. <value>/usr/local/src/hadoop-1.2.1/tmp</value>
  6. </property>
  7. <property>
  8. <name>fs.default.name<name>
  9. <value>hdfs://192.168.153.10:9000</value>
  10. </property>
  11. </configuration>

修改conf/下的mapred-site.xml(配置mapreduce的job tracker)
  1. [root@bogon conf]# vim mapred-site.xml
  2. <configuration>
  3. <property>
  4. <name>mapred.job.tracker</name>
  5. <value>http://192.168.153.10:9001</value>
  6. </property>
  7. </configuration>

修改conf/下的vim hdfs-site.xml (配置数据在HDFS存储的副本数,默认是3个,我们配置为3个)
  1. [root@bogon conf]# vim hdfs-site.xml
  2. <configuration>
  3. <property>
  4. <name>dfs.replication</name>
  5. <value>3</value>
  6. </property>
  7. </configuration>

配置conf/下的hadoop-env.sh在最后增加JAVA_HOME
  1. export JAVA_HOME=/usr/local/src/jdk1.6.0_45

4、本地网络配置
配置hostname以及hostname与IP的映射关系(修改/etc/hosts和/etc/sysconfig/network)
  1. [root@bogon conf]# vim /etc/hosts
在最下面增加host,访问master的时候,可以通过配置这个对应关系,直接通过hostname访问/登录这台机器,配置当前机器dns
  1. 192.168.153.10 master
  2. 192.168.153.11 slave1
  3. 192.168.153.12 slave2

生效hostname(临时,重启就会消失)
  1. [root@bogon conf]# hostname master
  2. [root@bogon conf]# hostname
  3. master

生效hostname(永久,重启后直接读network文件的配置)
  1. [root@bogon conf]# vim /etc/sysconfig/network
  2. HOSTNAME=master

接下来对slave1和slave2配置,因为master上的配置已经修改完毕,直接远程传给11和12
注意:这时候slaves的hostname还没生效,所以还是要用IP来传
  1. [root@bogon conf]# cd /usr/local/src
  2. [root@bogon src]# scp -rp hadoop-1.2.1 192.168.153.11:/usr/local/src
  3. [root@bogon src]# scp -rp hadoop-1.2.1 192.168.153.12:/usr/local/src

这时进入slave1和slave2,发现/usr/local/src下已经有文件夹hadoop-1.2.1拷贝过来

修改slave1和slave2的hostname和hostname与IP的映射关系(修改/etc/hosts和/etc/sysconfig/network)
  1. 192.168.153.10 master
  2. 192.168.153.11 slave1
  3. 192.168.153.12 slave2

因为每台机的hostname不一样
[root@bogon conf]# vim /etc/sysconfig/network
11配置为HOSTNAME=slave1
12配置为HOSTNAME=slave2

分别在两台机上手动制定hostname(该命令可以让系统不重启的情况下生效)
  1. [root@bogon conf]# hostname slave1 (在11上输入)
  2. [root@bogon conf]# hostname slave2 (在12上输入)

5、因为每个人的系统或网络环境配置不一样,为了避免网络连接的问题
因此需要尽量把防火墙关闭。

分别在三台机上操作
关闭防火墙
  1. [root@bogon src]# /etc/init.d/iptables stop (关闭防火墙)
  2. [root@bogon src]# iptables -L (检查防火墙是否关闭)

关闭selinux
  1. [root@bogon src]# setenforce 0
  2. [root@bogon src]# getenforce
  3. Permissive


6、免密认证
 执行ssh-keygen接着三个回车,不执行这个语句,就不会有~/.ssh/目录和里面的文件
[root@bogon src]# ssh-keygen 

 
进入隐藏目录
  1. [root@bogon src]# cd ~/.ssh/

将公钥id_rsa.pub拷贝给authorized_keys
  1. [root@bogon .ssh]# cat id_rsa.pub > authorized_keys

查看是否一致

在11和12上分别执行ssh-keygen ,进入~/.ssh/中,把id_rsa.pub中的公钥复制到10的authorized_keys中
拷贝完后,相当于master中包含了三行公钥(分别是三台主机的公钥)

把master的公钥,拷贝到slave1和slave2上(相当于三台机都有互相访问的公钥)
  1. [root@bogon .ssh]# scp -rp authorized_keys slave1:~/.ssh/
  2. [root@bogon .ssh]# scp -rp authorized_keys slave2:~/.ssh/

这个时候可以ssh到不同的机器,互信关系已建立起来。

7、启动hadoop集群
ssh进入master,第一次启动需要对namenode进行格式化
  1. [root@master ~]# cd /usr/local/src/hadoop-1.2.1/bin/
  2. [root@master bin]# ./hadoop namenode -format (对namenode格式化)
  3. [root@master bin]# ./start-all.sh (启动)

启动完毕后,输入jps,查看当前的进程
master上(只有是这四个的时候才是正常,其他的情况请检查上面的配置文件)
  1. [root@master bin]# jps
  2. 29161 NameNode
  3. 29447 Jps
  4. 29330 SecondaryNameNode
  5. 28559 JobTracker
  6. drwxr-xr-x - root supergroup 0 2017-08-07 09:02 /usr
  7. [root@master bin]# ./hadoop fs -put /etc/passwd / (复制文件到该目录下)
  8. [root@master bin]# ./hadoop fs -ls / (查看,发现passwd文件已经上传到集群中)
  9. Found 1 items
  10. -rw-r--r-- 3 root supergroup 1432 2017-08-06 07:31 /passwd
  11. [root@master bin]# ./hadoop fs -cat /passwd (这个文件可以读)


使用slave1、slave2执行查看命令,结果一样(集群中/下已经新增了passwd文件)
  1. [root@bogon bin]# ./hadoop fs -ls /
  2. Found 1 items

slave1上(只有是这三个的时候才是正常,其他情况请检查是否传输过来的配置文件有误)
  1. [root@bogon .ssh]# jps
  2. 28517 Jps
  3. 28449 TaskTracker
  4. 28364 DataNode

slave2上(只有是这三个的时候才是正常,其他情况请检查是否传输过来的配置文件有误)
  1. [root@bogon .ssh]# jps
  2. 28996 Jps
  3. 28924 TaskTracker
  4. 28839 DataNode

8、验证hadoop是否能用
  1. [root@master bin]# ./hadoop fs -ls /
  2. Found 1 itemsf
  3. -rw-r--r-- 3 root supergroup 1432 2017-08-06 07:31 /passwd




原创粉丝点击