1)在电脑上安装虚拟机软件VMworkstation12pro,并准备CentOS-7.0-1406-x86_64-DVD.iso镜像文件。
2)打开VMware,新建虚拟机,选择自定义安装。
接下来都选择默认选项,并点击下一步。完成后,出现masteractive虚拟机,这时候,点击CD/DVD,找到本地的CentOS-7.0-1406-x86_64-DVD.iso文件,点击确定,之后点击开启此虚拟机。
3)开启虚拟机,选择第一个install centosLinux7。鼠标点击黑色区域,进入到虚拟机里,同时按住Ctrl+Alt可以退出到主机。
4)选择语言后,进行手动分区。
点击安装位置。
选择“我要配置分区“,点左上角的“完成”,进入下面的界面。分区方案选择“标准分区”,并开始挂载分区,点击左下方“+”。
将/boot分区设为200M,文件系统方式为ext4,如图。设备类型选择标准分区。
同理:将/home目录设置为2G,文件系统方式为ext4,将swap分区设为2G,文件系统方式为swap。最后,给根分区/分配剩余的全部空间,文件系统方式为ext4,设备类型都选择标准分区。
分配完后,单击左上角的“完成”,出现如下界面,点击接受更改。
6)分区配置完成后,点击安装,在这个过程中配置ROOT密码。
注意:这里安装的是mini版本,即命令行模式,如果希望安装桌面版本,进入到Linux系统后,按照如下操作。
[root@masteractive ~]# mount /dev/sr0 /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
mount: /dev/sr0 is already mounted or /mnt busy
/dev/sr0 is already mounted on /mnt
确保centos7的镜像包挂载进来,如果发现镜像没有挂载进来,点击虚拟机右下角的光盘图标,选择设置,将ISO镜像文件挂载进来,再点击连接。
[root@masteractive~]# yum -y groupinstall "Server with GUI"
安装完成后,执行下面命令,启动桌面。
[root@masteractive~]# startx
【安装好后,一般会直接进入桌面。如果出现了黑白的协议页面,按下'1'为阅读协议,‘q’为退出,‘c’继续,‘r’刷新。首先键入‘1’,阅读协议,接着键入‘2’,accept接受协议,接着键入‘c’,继续。之后再弹出的协议许可,直接都按‘c’和回车即可。】
1)点击虚拟机,选择设置,弹出如下窗口,点击网络适配器,选择NAT模式。
2)点击虚拟机的‘编辑’,选择‘虚拟网络编辑器’,弹出如下窗口,选择VMnet8,并点击‘更改设置’。
弹出如下窗口,选择VMnet8,点击NAT设置。
弹出如下窗口,记住子网IP和网关,设置虚拟机的IP将会用到这两个信息(当然,你也可以设置其他值)。
3)进入系统,输入命令ifconfig查看网卡ip信息【不同电脑ip或者网卡情况会有所不同】。
[root@masteractive ~]# ifconfig
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1 (Local Loopback)
RX packets 8132712 bytes 2582460617 (2.4 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8132712 bytes 2582460617 (2.4 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
为了能够通过远程工具连接,这里需要设置静态ip地址,并设置开机启动。
[root@masteractive ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
#BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes #开机启动
IPADDR0=192.168.101.101 #这里的ip需要和虚拟网络编辑器中查看的子网ip对应起来,保持前三位一致
PREFIX0=24 #子网掩码 等同于255.255.255.0
GATEWAY0=192.168.101.2 #网关
DNS1=114.114.114.114 #DNS服务
保存退出后,并重启网卡。
[root@masteractive ~]# service network restart
Restarting network (via systemctl): [ 确定 ]
[root@masteractive ~]# ping wwww.baidu.com
PING ps_other.a.shifen.com (220.181.57.217) 56(84) bytes of data.
64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=1 ttl=128 time=48.5 ms
64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=2 ttl=128 time=41.8 ms
说明网卡正常,能正常访问网络,为了能够方便访问虚拟机,可以选择xshell软件进行远程连接。
4)配置主机名称,关闭防火墙。
编辑~/.bashrc,并添加如下内容
[root@masteractive ~]# vim ~/.bashrc
#iptables -F #清除预设表filter中所有规则链中的规则,centos7中防火墙默认不是这个。
#setenforce 0 #表示关闭selinux防火墙
hostname masteractive #配置主机名
[root@masteractive ~]# systemctl stop firewalld.service # 关闭防火墙
[root@masteractive ~]# systemctl status firewalld # 查看防火墙状态, inactive 表示关闭
5)配置host
[root@masteractive ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.101.101 masteractive
192.168.101.102 masterstandby
192.168.101.103 slave1
192.168.101.104 slave2
因为centos7没有安装vim,所以需要额外安装。
[root@masteractive ~]# rpm -qa | grep vim
vim-minimal-7.4.160-1.el7.x86_64
vim-common-7.4.160-2.el7.x86_64
vim-enhanced-7.4.160-2.el7.x86_64
vim-filesystem-7.4.160-2.el7.x86_64
若vim已经正确安装,则会显示上面几个包的名称,如果缺少了其中某个,执行:yum -y install +缺少的包名,下载安装该包即可。(注:执行 yum install vim -y 可一键自动安装)
重复上述虚拟机安装和配置操作,再创建3台虚拟机作为从节点,主机名和ip地址如下。创建4台虚拟机的目的是为了在学习Hadoop2.0时,搭建高可用的集群。在学习时,一般不会用到这么多台机器,1台虚拟机搭建伪分布式即可。
192.168.101.102 masterstandby
192.168.101.103 slave1
192.168.101.104 slave2
【当然,也可以采用复制虚拟机或者克隆的方式产生多台虚拟机,但由于是复制操作,虚拟机网卡将会一模一样,MAC值将会重复,导致不能上网,需要再手动修改,解决办法这里就不展开了。如果修改不成功再查找原因将耗费更多时间,得不偿失,建议直接安装,可以当做练手。】
5.ssh免密登录
建立每台机器的互信关系,使得每台机子之间登录不需要密码。
[root@masteractive src]# ssh-keygen #然后回车然后回车(回两次车)
[root@masteractive src]# cd ~/.ssh/
[root@masteractive .ssh]# ll
total 16
-rw-r--r--. 1 root root1179 Jan 30 08:05 authorized_keys
-rw-------. 1 root root1675 Jan 30 08:00 id_rsa
-rw-r--r--. 1 rootroot 393 Jan 30 08:00 id_rsa.pub
-rw-r--r--. 1 root root1971 Jan 30 08:07 known_hosts
Id_rsa.pub是共钥文件,id_rsa是密钥文件,将id_rsa.pub文件内容拷贝给authorized_keys(注:如果没有authorized_keys这个文件,需先创建),在其他节点上同理操作,并将其他节点上Id_rsa.pub文件里面的内容全部拷贝到主节点的authorized_keys中,masteractive节点再将最终的authorized_keys分发给其他节点。
[root@masteractive .ssh]# scp -rp authorized_keys slave1:~/.ssh/ #同理拷贝给slave2和masterstandby
[root@masteractive .ssh]# ssh slave1 #第一次可能会要求输入密码,输入密码回车后登录到从节点,第二次将会自动登录
通过xshell的Xftp插件(需要安装xftp),将jdk-8u144-linux-x64.tar.gz拖到/usr/local/src/目录下(当然也可根据习惯采用其他目录)。
[root@masteractive src]# tar xvzf jdk-8u144-linux-x64.tar.gz #安装jdk
在~/.bashrc文件的底部添加java环境变量:
[root@masteractive src]# vim ~/.bashrc
export JAVA_HOME=/usr/local/src/jdk1.8.0_144
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
[root@master src]# source ~/.bashrc #生效一下
[root@masteractive src]# scp -rp jdk1.8.0_144 masterstandby:/usr/local/src/ #同理将jdk分发到slave1和slave2,路径保持一致,再分别给masterstandby、slave1和slave2配置环境变量。
基础环境准备完毕后,开始大数据的基础学习,首先安装的就是hadoop-2.6.0-cdh5.7.0(采用cdh的原因是版本比较稳定)。
http://archive.cloudera.com/cdh5/cdh/5/
[root@masterstandby src]# yum install -y wget #如果没有wget命令就安装一下
[root@masterstandby src]# wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0.tar.gz #下载Hadoop
[root@masteractive src]# tar xvzf hadoop-2.6.0-cdh5.7.0.tar.gz
[root@masteractive src]# cd hadoop-2.6.0-cdh5.7.0/
[root@masteractive hadoop-2.6.0-cdh5.7.0]# mkdir tmp
[root@masteractive hadoop-2.6.0-cdh5.7.0]# cd etc/hadoop
1)core-site.xml
hadoop.tmp.dir
/usr/local/src/hadoop-2.6.0-cdh5.7.0/tmp
fs.default.name
hdfs://masteractive:9000
默认的hadoop.tmp.dir是/tmp/hadoop-${user.name},此时有个问题就是NameNode会将HDFS的元数据存储在这个/tmp目录下,如果操作系统重启了,系统会清空/tmp目录下的东西,导致NameNode元数据丢失,应该修改这个路径,所以在上面创建了tmp目录。
fs.default.name是namenode的RPC交互端口,默认是8020,这里改成9000是为了今后在spark中不会有端口冲突的问题。
2)hadoop-env.sh
export JAVA_HOME=/usr/local/src/jdk1.8.0_144 #添加java路径
3)mapred-site.xml
mapreduce.framework.name
yarn
指定mapreduce运行在yarn框架上。
4) hdfs-site.xml
dfs.replication
3
dfs.replication配置HDFS存储时数据的备份数量。
5)yarn-env.sh
export JAVA_HOME=/usr/local/src/jdk1.8.0_144 #配置jdk路径
6)yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
masteractive
NodeManager上运行的附属服务,需配置成mapreduce_shuffle,yarn框架才可运行MapReduce程序。yarn.resourcemanager.hostname指定了Resourcemanager运行在哪个节点上。
7)slaves
masteractive
masterstandby
slave1
slave2
如果要配置伪分布式,主节点masteractive也作为slave节点。
8)分发hadoop到从节点
[root@masteractive src]# scp-rp hadoop-2.6.0-cdh5.7.0 slave1:/usr/local/src/ #同理发送给slave2和masterstandby
9)配置hadoop环境变量
export HADOOP_HOME=/usr/local/src/hadoop-2.6.0-cdh5.7.0
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin
3.启动hadoop
格式化hdfs文件系统,启动hadoop集群
[root@masteractive bin]# ./hadoop namenode -format
[root@masteractive hadoop-2.6.0-cdh5.7.0]# ./sbin/start-all.sh
[root@masteractive hadoop]# jps
118561 DataNode
118446 NameNode
【注:有时候会发现DataNode未启动的问题,这很可能是clusterid的问题,因为如果多次格式化namenode,会导致主从的clusterid不一致。解决方法:删除tmp目录,目的是删除里面dfs文件夹下的data和name目录,之后再创建tmp目录,重新格式化即可。】
如果遇到主机无法用域名ping通虚拟机的问题,则修改C:\Windows\System32\drivers\etc的hosts,添加内容如下:
192.168.101.101 masteractive masteractive
到这里,就把hadoop的虚拟机环境搭建起来了,再继续学习时,将会安装其他组件,例如zookeeper、hive、HBASE、flume、kafka、storm、spark等等,在学习这些组件时,都有详细安装说明。