最终目的:实现Win7下,创建Ubuntu虚拟机搭建Hadoop多节点集群
1.当前pc环境
WindowS版本:Win7 专业版
处理器:Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz
安装内存(RAM):4.00GB
系统类型:64bitOS
ip:192.168.1.110
2.软件准备
宿主机:Win7专业版
桌面虚拟机软件:产品VMware? Workstation 12 Pro;版本12.1.0 build-3272444; VMwareworkstation_full_12.1.0.2487.1453173744.exe
桌面linuxOS:版本ubuntu 14.04LTS ; ubuntu-14.04.3-desktop-amd64.exe(64bit)
JDK :版本 1.8; jdk-8u73-linux-x64.tar.gz(64bit) jdk装到虚拟机里面,所以是linux的jdk
Hadoop:版本2.6; hadoop-2.6.4.tar.gz
Eclipse:
集群配置:Ubuntu14(虚拟机名称)Master.Hadoop(hostname) 192.168.1.111(ip)
Ubuntu14slave1(虚拟机名称) Slaver1.Hadoop(hostname)192.168.1.112(ip)
3.安装配置起航
3.1 安装VMware Workstation
安装流程可以参考 Windows 7下用VMware Workstation 10虚拟机安装 Ubuntu 14.04 http://www.linuxidc.com/Linux/2014-04/100473.htm
虚拟机软件安装的位置d:\Program Files(x86)\VMare\VMare Workstation\
注意事项:安装出现是否更新和参与用户体验,去掉勾,不选;许可证秘钥自行百度;安装完毕打开在帮助里面可以查看版本之类的信息。
3.2 安装虚拟机并配置Ubuntu环境
安装流程可以参考 http://www.linuxidc.com/Linux/2016-09/135192.htm
本人虚拟机名称:Ubuntu14 虚拟机位置:d:\Ubuntu64
Ubuntu14slave1 虚拟机位置:d:\Ubuntu14slave1
两个用户名都相同,用户名 ysu 密码 123456
注意事项:客户机是linux,版本是ubuntu;网络类型很重要:我选的是桥接,Win7宿主机和两个虚拟机在一个网段里面。
网络类型三种区分参考:
虚拟机网络连接方搜索式是如何设置的。如VMWare虚拟机提供了三种工作模式,它们是bridged(桥接模式)、NAT(网络地址转换模式)和host-only(主机模式)。要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式,然后就知道答案了。
bridged(桥接模式)
在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立的主机系统,那么就可以手工配置它的TCP/IP配置信息,以实现通过局域网的网关或路由器访问互联网。
host-only(主机模式)
在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用host-only模式。在host-only模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。
3.NAT(网络地址转换模式)
使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。也就是说,使用NAT模式可以实现在虚拟系统里访问互联网。NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚 拟系统也就无法和本局域网中的其他真实主机进行通讯。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。
经常提示软件更新,我们选择永不更新
3.3 修改虚拟机静态ip
参考 http://jingyan.baidu.com/article/b7001fe18f85fe0e7282ddaf.html
结果 Ubuntu14 ip192.168.1.111子网掩码 255.255.255.0 网关 192.168.1.1 DNS 202.206.240.12
Ubuntu14slave1 ip 192.168.1.112 子网掩码 255.255.255.0 网关 192.168.1.1DNS 202.206.240.12
使用 ifconfig查看结果
3.4 修改虚拟机主机名称和hosts文件
linux命令需要自行查阅,注意命令里面是否有空格
命令:鼠标左键空白区域,Ctrl+Alt+T ,弹出终端
sudo gedit /etc/hostname
sudo gedit /etc/hosts
结果:
Ubuntu14 hostname 文件 Master.Hadoop
hosts文件 127.0.0.1 localhost 192.168.1.111Master.Hadoop 192.168.1.112 Slaver1.Hadoop
Ubuntu14Slaver1 hostname 文件 Slaver1.Hadoop
hosts文件 127.0.0.1 localhost 192.168.1.111 Master.Hadoop 192.168.1.112 Slaver1.Hadoop
使用ping 互相连通宿主机和虚拟机(会用到ctrl+c让ping停止)
3.5 虚拟机安装配置jdk
保证虚拟机能联网,打开ubuntu火狐浏览器,下载安装参考 Ubuntu安装JDK详解 http://www.linuxidc.com/Linux/2016-11/136958.htm
我的jdk安装目录 /usr/lib/jvm/jdk1.8.0_73
使用java-version查看jdk
3.6 SSH无密码登陆验证配置
安装ssh
命令:sudo apt-get install openssh-server
sudo apt-get install openssh-client
使用ssh version 查看ssh是否安装成功
生成无密码密钥对:id_rsa(私钥)id_rsa.pub(公钥),默认存储在/home/ysu(用户名)/.ssh目录下
命令:ssh-keygen -t rsa -P ''
使用ls 查看是否有这两个钥
把id_rsa.pub追加到授权的key里面去。
命令:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
使用root用户登陆修改ssh配置文件
命令:su //输入root密码切换到超级用户
gedit /etc/ssh/sshd_config
检查下面几行
PermitRootLogin yes(要改成yes)
RSAAuthentication yes # 启用 RSA 认证 (去掉最前面#)
PubkeyAuthentication yes # 启用公钥私钥配对认证方式(去掉最前面#)
AuthorizedKeysFile %h/.ssh/authorized_keys # 公钥文件路径 (去掉最前面#)
重启ssh服务
/home/ysu/.ssh/ service ssh restart
使用exit 退出root登陆,验证ssh是否设置成功
ssh localhost
在测试有可能出现 Agent admitted failure to sign using the key
解决的办法: ssh-add ~/.ssh/id_rsa
将公钥传到远程主机上
命令:cd /home/ysu/.ssh
ssh-copy-id ysu@Slaver1.Hadoop//这里是Master传入Slaver1
enter完后输入Slaver1.Hadoop密码
检测是否可以无密码登陆
命令:ssh Slaver1.Hadoop
结果 ysu@Master:~$变成ysu@Slaver1:~$
最后Slaver1机器也按照以上的步骤重复一遍
3.7 Hadoop安装配置
注意:Hadoop2.X版本跟1.X版本很多命令不一样,需要配置的文件也不一样。
保证虚拟机能联网,打开ubuntu火狐浏览器,下载Hadoop(默认下载到/home/ysu/下载目录里面)
root用户登陆将hadoop安装包移动到/usr目录下
cp /home/ysu/下载/hadoop-2.6.4.tar.gz /usr/
解压安装包
cd /usr/
tar -xzvf hadoop-2.6.4.tar.gz
重命名为hadoop
mv hadoop-2.6.4 hadoop
给ysu用户分配hadoop文件夹读权限
chown -R ysu:ysu hadoop
删除安装包
rm -rf hadoop-2.6.4.tar.gz
本地文件系统创建一下文件夹
mkdir /usr/hadoop/tmp
mkdir /usr/hadoop/dfs/data
mkdir /usr/hadoop/name
修改 /etc/profile文件 添加hadoop路径
cd profile
sudo gedit /etc/profile
文件中
# set hadoop path
export HADOOP_HOME=/usr/hadoop
export PATH=PATH:PATH:HADOOP_HOME/bin
配置7个文件 均在/usr/hadoop/etc/hadoop/
配置 hadoop-env.sh //修改JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_73
配置 yarn-env.sh//修改JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_73
配置slaves文件//增加slave节点
Slaver1.Hadoop
配置core-site.xml文件
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master.Hadoop:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
<description>Abasefor other temporary directories.</description>
</property>
<property>
</configuration>
配置hdfs-site.xml//增加hdfs配置信息(namenode、datanode端口和目录位置)
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master.Hadoop:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
配置 mapred-site.xml 文件//增加mapreduce配置(使用yarn框架、jobhistory使用地址以及web地址)
注意/usr/local/hadoop/etc/hadoop/文件夹下有mapred.xml.template文件,需要复制并重命名
cp mapred-site.xml.template mapred-site.xml
sudo gedit mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>Master.Hadoop:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>Master.Hadoop:19888</value>
</property>
</configuration>
配置yarn-site.xml//增加yarn功能
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>Master.Hadoop:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>Master.Hadoop:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>Master.Hadoop:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>Master.Hadoop:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>Master.Hadoop:8088</value>
</property>
</configuration>
以上Master的hadoop配置完毕,配置salver的hadoop
把master下的hadoo文件夹传到salver即可
普通用户和root用户均可注意sudo 和su的区别
命令:scp -r /usr/hadoop root@Salver1.Hadoop:/usr/
给ysu用户分配hadoop文件夹读权限
chown -R ysu:ysu hadoop
修改 /etc/profile文件 添加hadoop路径
cd profile
sudo gedit /etc/profile
文件中
# set hadoop path
export HADOOP_HOME=/usr/hadoop
export PATH=PATH:PATH:HADOOP_HOME/bin
这样slave的机器hadoop也配置好了
3.8 启动Hadoop
格式化HDFS
hdfs namenode -format
启动hadoop
/usr/hadoop/sbin/start-dfs.sh
/usr/hadoop/sbin/start-yarn.sh
3.9查看集群和进程
jps//jps命令
/usr/hadoop/bin/hdfs dfsadmin -report //查看集群 (结果没出来,有待修复)
火狐浏览器打开
Master.Hadoop:50070
Master.Hadoop:8088(结果没出来,有待修复)
Slaver1.Hadoop:8042
CIO之家 www.ciozj.com 公众号:imciow