超级用户root密码设置为: qwqwqw ;
用户hadoop的密码设置为:hadoop123,hadoop在安装时选择了作为管理员。
宿主机:DELL precision 5510(移动工作站,4核心XEON CPU,16G内存,512GB SSD,64位Windows10中文专业版,无线网卡,也可接入USB以太网卡); 没有使用WLAN的“Internet连接共享”。
虚拟机:VirtualBox5.0.18;
客户机:64位CentOs7.2 (ISO文件:CentOS-7-x86_64-Everything-1511.iso)。
开始安装时间:2016年4月27日8点。
客户机的网卡设置:只选了Host-only网络。
在安装启动界面按向上键,选“Install CentOS7”后按回车键;
语言选择“中文”,“简体中文(中国)”;
点击“软件选择”,选“带GUI的服务器”,右侧的附加选项的选择如图一所示。图中未显示或未选择的附加项不安装。
图一
点击“完成”;点击“安装位置”,点击”完成”;
点击“开始安装”;点击“ROOT密码”设置root密码;点击“创建用户”,创建用户hadoop,选择“将此用户作为管理员”;
共1700个安装包。
等几分钟安装完成后,点击“重启”。
启动界面,如图二和图三所示。
图二CentOS7.2的启动界面
图三 piix4和intel_rapl信息(解决办法见后)
图四
按下数字键1,回车,按字符键C几次。图四这个协议同意屏幕只出现一次。
以root身份登录。
在“欢迎”对话框确定“汉语”打了勾,点击“前进”,选择“汉语(Intelligent Pin因)”后点击“前进”,然后点击“开始使用CentOSLinux”。
在客户机运行窗口中,点击“设备”,点击“安装增强功能”,弹出的对话框内点击“运行”。大约1分钟即可安装完毕(无需连网),如图五所示。
图五
必须重启客户机才能使得全部增强功能有效。执行立即关机命令shutdown –h now 。然后启动客户机。
客户机和宿主机之间可以共享剪贴板和互相拖放文件了。共享文件夹也有效了。共享文件夹默认只能由root操纵。可以由root将文件复制到客户机的某处,然后将权限授予普通用户。如图六所示。
图六
办法:创建黑名单文件,阻止试图载入这两个模块。
$sudo vi /etc/modprobe.d/blacklist.conf
内容:
blacklist i2c_piix4
blacklist intel_rapl
然后,客户机关机,启动。
到目前为止,客户机的网卡仍然处于关闭状态,无法与其它机器通讯,因此,需要启动。此时,宿主机也没有使用WLAN的“Internet连接共享”。
“Oracle VM VirtualBox管理器”的”管理”,”全局设定”,“网络”。如图所示。
图七
默认未启用仅主机(Host-Only)网络的DHCP服务器。
在宿主机上未对两个网卡做任何改动!如图所示。
图八
目的:使得该网卡自动随客户机启动,有静态的IP地址,能够和其他同在该仅主机(Host-Only)网络的客户机互相ping通。
图九
/etc/sysconfig/network-scripts/ifcfg-enp0s3
将ifcfg-enp0s3的内容改为:
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF= no
IPV6_DEFROUTE= no
IPV6_FAILURE_FATAL=no
NAME=enp0s3
UUID=a405ee0f-b609-43f2-afda-797a91344396
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.56.2
PREFIX=24
GATEWAY=192.168.56.1
DNS1=192.168.56.1
IPV6_PEERDNS= no
IPV6_PEERROUTES= no
#shutdown -h now
可见客户机IP设置成功。
客户机(192.168.56.2)和宿主机(192.168.56.1)可以互相ping通。但客户机此时不能连接Internet。
编辑/etc/hosts文件。
127.0.0.1 localhost localhost.localdomain localhost4localhost4.localdomain4
::1 localhost localhost.localdomainlocalhost6 localhost6.localdomain6
192.168.56.2 master
#systemctlstop firewalld.service #停止firewall
#systemctldisable firewalld.service #禁止firewall开机启动
#firewall-cmd--state #查看默认防火墙状态(关闭后显示not running,开启后显示running)
SSH免密码登录的原理:Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Slave(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。
当Master通过ssh连接Salve时,Salve就会生成一个随机数,并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave, Slave确认解密数无误之后就允许Master进行连接了。
这就是一个公钥认证过程,其间不需要用户手工输入密码。
用户hadoop登录客户机。进入用户的home目录,执行如下命令:
$ssh-keygen -t rsa-P '' -f ~/.ssh/id_rsa
# 注解:ssh-keygen表示生成密钥;-t指定密钥类型;-P 提供密语;-f生成的密钥文件;这条命令表示生成了一个未加密的密钥对,此时生成的/home/hadoop/.ssh目录下会生成 id_rsa和id_rsa.pub两个文件,前者是私钥,后者是公钥。
密钥类型也可以使用dsa。如果采用dsa加密算法,则将命令和文件中的rsa换成dsa即可。
图十
1)将公钥追加到授权key中:
$cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
2)将授权key文件权限改为600:
$chmod 600 ~/.ssh/authorized_keys
图十一
3)切换到root用户,修改ssh配置文件
/etc/ssh/sshd_config文件的属主是root,而且权限是600,所以root才能修改该文件。图形化环境中,可以用gedit改文件。
su root
#gedit /etc/ssh/sshd_config
4)去掉/etc/ssh/sshd_config内下列几行前的注释
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
5)验证是否可以免密码登录
客户机关机,然后启动,以hadoop身份登录客户机,然后做验证:
$ssh localhost
Last login: Thu Sep 10 07:38:10 2015 from localhost出现这样的信息,表示SSH免密码登录配置成功。 提示:第一次连接的时候可能会提示是否要连接,输入yes即可。
图十二
root从共享文件夹复制jdk-7u79-linux-x64.gz到root的桌面,解压到/usr,将解压出的目录jdk1.7.0_79及其子目录和文件的属主以及用户组改为hadoop。
# tar zxf jdk-7u79-linux-x64.gz -C /usr
# chown -hR hadoop /usr/jdk1.7.0_79
# chgrp -hR hadoop /usr/jdk1.7.0_79
用户hadoop登录客户机后,在/home/hadoop/ .bashrc末尾添加:
# JAVA Eniveronment
export JAVA_HOME=/usr/jdk1.7.0_79
exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/rt.jar
export PATH=$JAVA_HOME/bin:$PATH
$source /home/hadoop/.bashrc
$java –version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixedmode)
出现以上信息就表示安装成功了。
还可以测试一个Helloworld.java程序的成功编译与运行。
root登录客户机后从共享文件夹复制宿主机下载的hadoop-x.x.x.tar.gz到root的桌面。然后解压hadoop-x.x.x.tar.gz;解压后会得到目录名称为hadoop-x.x.x的目录,将该目录(包括其子目录和文件)的所有者属性以及组属性改为hadoop(用chown –hR和chgrp -hR命令)。最后,复制到/usr中。
# tar -zxvf hadoop-2.7.2.tar.gz
# cp -r hadoop-2.7.2 /usr
# chown -hR hadoop /usr/hadoop-2.7.2
# chgrp -hR hadoop /usr/hadoop-2.7.2
1. 本机独立模式(Local (Standalone)Mode);
2. 伪分布模式(Pseudo-Distributed Mode);
3. 全分布模式(Fully-Distributed Mode)。
这是Hadoop的默认模式,Hadoop作为单个java进程运行。这种模式方便调试程序。在/usr/hadoop-x.x.x内建立目录input;将hadoop-x.x.x的conf目录内的全部后缀名为xml的文件复制到input目录内,表示被分析的数据来源;然后用hadoop找出并显示与给定的正则表达式匹配的项。输出结果放置在output目录内。
注意,每次运行前,如果目录output存在,则用删除它。(命令: rm -r output )。
$ cd /usr/hadoop-1.2.1
$ mkdir input
$ cp conf/*.xml input
$ bin/hadoop jarhadoop-examples-*.jar grep input output 'dfs[a-z.]+'
$ cat output/*
结果: 1 dfsadmin
$mkdir input
$ cp etc/hadoop/*.xmlinput
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jargrep input output 'dfs[a-z.]+'
$ cat output/*
结果: 1 dfsadmin
Hadoop能够以伪分布式在单节点上运行,每个Hadoop新进程在单独的java进程内运行。这可分为两种运行方式:本地运行和在YARN上运行。
将/usr/hadoop-2.7.2/etc/hadoop内的部分文件更改为如下所示:
接下来的指令是为了在本地运行一个MapRerduce作业。如果想在YARN上执行一个作业,参见“YARN on Single Node”。
$cd /usr/hadoop-2.7.2
$bin/hdfs namenode –format
这一步只需做一次。
。。。省略某些输出。。。
$ sbin/start-dfs.sh
注意;
Hadoop-2.7.2不推荐使用start-all.sh 。
此时这两个进程没有被设置为随客户机启动而自动启动。
结果:
http://localhost:50070/
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/hadoop
命令中的红色hadoop是一个用户名
本地文件:/usr/hadoop-2.7.2/etc/hadoop内的全部文件。
$ bin/hdfs dfs -put etc/hadoop input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
$ bin/hdfs dfs -get output output
$ cat output/*
结果如图所示:
7)或者在分布式系统上看output的内容
$bin/hdfs dfs -cat output/*
结果如图所示:
当完成了全部任务后,可以关闭进程。
$ sbin/stop-dfs.sh
结果如图所示:
只需另外设置几个参数和运行ResourceManager进程与NodeManager进程即可。
假定已经完成了这些命令:
$cd /usr/hadoop-2.7.2
$bin/hdfs namenode –format
$ sbin/start-dfs.sh
将/usr/hadoop-2.7.2/etc/hadoop内的部分文件更改为如下所示:
运行sbin/start-yarn.sh
http://localhost:8088/
运行MapReduce作业。
$ sbin/stop-yarn.sh
完全分布模式部分:待续。
只支持USB1.1,而且无法挂载符合USB3.0标准的U盘。
办法:根据VirtualBox安装目录内的VirtualBox.chm的“8.36. VBoxManageextpack”,执行如图所示的命令:
在客户机的“设置”,“USB设备”内可以选择“USB3.0(xHCI)控制器”了。然后启动客户机,在宿主机上插入非NTFS格式的优盘,右击客户机优盘插头图标,选择优盘,该优盘会被自动挂载,如图所示:
[1] http://hadoop.apache.org/docs/current/hadoop-project-dist/
[2] http://hadoop.apache.org/docs/current/hadoop-project-dist/
hadoop-common/SingleCluster.html