CentOS7虚拟机配置、Hadoop搭建、wordCount DEMO运行

1 篇文章 0 订阅
1 篇文章 0 订阅

安装虚拟机

最开始先安装虚拟机,我是12.5.7版本,如果要跟着我做的话,版本最好和我一致,不然后面可能会出一些莫名其妙的错误,下载链接如下(注册码也在里面了):

链接:https://pan.baidu.com/s/1qoqeKcgMsjFKPFQFBFP6lg 
提取码:2aog 

安装虚拟机直接下一步、下一步就好了,没什么可说的,安装好后,虚拟机询问是否更新,点不更新,更新了就改版本了。

配置虚拟机操作系统

接下来开始配置虚拟机系统。

首先下载CentOS7的镜像,下载链接如下:

链接:https://pan.baidu.com/s/17Guf4e0LKH2KfOgBlgBnNA 
提取码:skvu

然后打开虚拟机:文件——新建虚拟机,打开新建虚拟机向导(然后配置如下):

虚拟机向导完毕后,在左边出现一个虚拟机选项:右键设置——CD/DVD(IDE)——使用ISO映像文件——浏览,选择前面下载好的CentOS7镜像——确定:

点击开启此虚拟机:

进入操作系统安装界面,选择Install CentOS 7,回车:

待会还有一个回车要按,也可以等待一会它自动确认,然后会启动安装程序:

然后再点+号,添加另一个分区:

虚拟机系统安装完毕!重启后打开系统:

输入root用户名,回车,密码(就是你刚刚创建的密码),回车:

用root用户进入操作系统界面(root用户是权限最高的用户,所以执行一些指令都不需要sudo):

配置虚拟机静态NAT网络

接下来配置虚拟机的网络。

首先右键你的CentOS虚拟机——设置——网络适配器,右边网络连接选项卡中选择:NAT模式或自定义中的VMnet8,将操作系统网络设置为网络地址转换(NAT)模式,这两种选择的效果是一样的,都是通过VMnet8与物理主机互连,然后点击确定(我这里选择NAT模式选项)。

设置好后,在虚拟机界面:编辑——虚拟网络编辑器,点击右下角的更改设置,修改NAT模式的子网等配置。操作如下两张图图:

然后在主机windows界面:网络——属性——更改适配器设置,看到里面有个VMware Network Adapter VMnet8,是虚拟器自动生成的,右键它——属性——网络选项卡——点中Internet协议版本4(TCP/IPv4)——属性,修改如下图:

外部配置好了,现在开始配置虚拟机内CentOS的静态网络。

打开虚拟机进入CentOS的命令界面,登录Root用户,输入ip addr查看网卡名称:

接着输入vi /etc/sysconfig/network-scripts/ifcfg-ens33(ens33是网卡名称,如果你的不是ens33,就改成你的网卡名称)(vi是使用一个编辑器的命令,vi 后面加一些文本类文件可以打开它进行编辑),进入网络配置文件修改配置,按键盘Insert键进入编辑模式 ,修改如下图:

修改好后按ESC,从编辑模式进入命令模式,输入:wq(w代表write,q代表quit,如输入:q不保存直接退出)再按回车回到命令界面,不要忘记冒号“:”,如果冒号没打,按w会进入recording模式记录你的键盘操作,按q退出这个模式,再重新打:wq就行。

然后在命令界面输入service network restart,重新启动网络服务:

再接着输入网址,如ping www.baidu.com,就能联网了:

按键盘Ctrl+C退出联网,回到命令行:

还可以再试一试ping你刚刚填的VMnet8的IP地址,如我这里ping 192.168.157.2

在Windows主机打开CMD也可以ping 虚拟机的IP试试,我这里ping 192.168.157.10

可以看到三个ping都成功了,说明1、虚拟机能连接外网。2、虚拟机能和物理主机互连。3、物理主机能和虚拟机互连。这样,一个CentOS的静态NAT网络就算配置完成了。

ifconfig命令和ip addr命令差不多,也可以查看ip等信息,然而操作系统没有这个命令,因为新安装的Minimal系统中并没有装这个命令,可以用yum install net-tools.x86_64命令从网上下载安装。

讲一个坑,害我找了半天的原因。虚拟机系统有时候会出错,关闭不了,甚至直接用任务管理器关闭都不行,再次打开虚拟机那个系统还是被占用不能打开。如果系统里没有保存什么重要的文件,或者有备份的话,就直接把那个系统移除了并在物理主机把它的文件删了一劳永逸。而原来我在网上找了一个方法,说在外部windows的运行中输入msconfig,打开启动项,直接把VMware的服务全都停止了,然后系统会变好,其实并没有用。这些服务中包含了VMware NAT service,一旦停了,虚拟机就不能通过NAT联外部网络了(不能ping www.baidu.com连接外部网络,但是还能ping局域网IP如192.168.157.2),导致我后来浪费好几个小时在这上面。

CentOS主机名修改

接下来进行CentOS的主机名修改。

这里面有三个“主机名”容易弄混淆:hosts文件保存的主机名、hostname文件保存的主机名、network文件保存的主机名。

hosts保存的是IP地址和域名的对应,比如局域网里有个主机域名叫node1,它的ip是192.168.3.3,那你保存这个对应进去以后,ping node1就等于ping 192.168.3.3。

network里面保存的就主机域名,现在暂时看不出啥用,因为hosts里面的域名不都是自己写的吗,和别的主机取域名叫啥好像没啥关系,但是为了便于辨认,就要修改。

hostname保存的是你这个操作系统的名称,自己看的名称而已,与网络没什么关系,为了辨认最好修改成和network里面的域名一样。

分别这样修改(vim是vi的升级版,没有这个命令就yum -y install vim安装一下)

network:

hosts:

hostname:

改好名以后关闭防火墙,用systemctl stop firewalld 关闭,systemctl disable firewalld 取消防火墙开机启动(复制会出错,最好自己打,一模一样都会出错,我都奇怪了)。reboot重启机器,进入root用户,再输入hostname,可以看到主机名是master:

CentOS安装JDK

系统配置完毕,现在给系统安装JDK(Java SE Development Kit)。因为是最简的系统,所以不能用图形界面,我们可以使用物理windows主机下载好jdk传给虚拟机来安装。传入文件的软件要用到XShell和XFtp。

Xshell和XFtp下载链接:

链接:https://pan.baidu.com/s/1dsLbd5pDZcSXqy1K5M_0qQ 
提取码:y80z

安装好后打开Xshell:文件——新建,填入虚拟机系统的IP点击确定就可以实现和虚拟机系统的连接(当然虚拟机系统要打开进入root用户)。

双击新建会话:

root用户,然后输入操作系统的密码,确定,连接完毕!界面和虚拟机里面的命令行一模一样,但是可以复制和粘贴代码哦~

连接好了以后,就可以点击上方的绿色按钮,Xshell会打开电脑中安装好的XFtp,让XFtp和虚拟机的操作系统连接,并且可以传输文件。(Xshell和XFtp是同一家公司出的,所以可以相互调用,但是我很奇怪都是连接操作系统,为什么不把功能集中到一个软件)

然后使用mkdir命令在/usr/local/里面创建一个java文件夹,其实也可以直接用XFtp进行创建,特别方便,就和图形界面一样:

然后把下载好的JDK压缩包拖进Java文件夹。我的使用的JDK包:

链接:https://pan.baidu.com/s/1jxsH25gdGTw1AK_yD24C8w 
提取码:wifb

然后在命令行中(虚拟机命令行或Xshell里都行)cd /usr/local/java进入java文件夹,tar -xvf jdk-8u231-linux-x64.tar.gz解压JDK,-xvf后面的名称对应的是你下载的JDK压缩包名称,如果使用的是我的JDK包,那就一样,别复制错了(后面版本问题我都不再提醒了,包括hadoop、mysql、mysql-connector-java等等,其中mysql和mysql-connector-java版本是有对应的,这是大坑,如果你的两个版本不对应的话,后面出错原因会很难找到,所以这些版本什么都和我一致最好,链接都提供了呢,这么良心的博主哪里找)

解压好后, rm -rf  jdk-8u221-linux-x64.tar.gz删除原来的压缩包(强迫症,你不删除也行),当然在XFtp中也能右键删除。

然后配置环境,vim /etc/profile编辑文件,在最后一行加上:

加上以后ESC,然后:wq回车,退出编辑,在命令行里输入source /etc/profile,编译刚刚改过的文件,就完成JDK的配置了。

然后可以用 java -version 和javac -version 命令测试JDK是否成功安装:

配置安装hadoop

JDK装好了,现在正式开始装hadoop。

先下载hadoop镜像,链接:

链接:https://pan.baidu.com/s/17h4kxK9RoqjNE0mIHpsReQ 
提取码:nujr

在local下面创建hadoop文件夹,把镜像拖进里面,tar -zxvf hadoop,tab键,自动出现剩余的压缩包名称,解压tar包,然后删除压缩包。

vim /etc/profile修改环境变量:

HADOOP_HOME=/usr/local/hadoop/hadoop-2.8.5
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

:wq保存并退出编辑,source /etc/profile,编译刚刚的配置,然后在命令行输入hado,按Tab键,如果自动补全为hadoop,说明配置好了。

然后在hadoop下创建四个文件夹,分别是tmp、hdfs、name和data,name在hdfs下,命令如下:

mkdir /usr/local/hadoop/tmp

mkdir -p /usr/local/hadoop/hdfs/name

mkdir /usr/local/hadoop/hdfs/data

接下来进入hadoop文件 /etc/hadoop 目录,命令:

 cd /usr/local/hadoop/hadoop-2.8.5/etc/hadoop

里面存放的是hadoop的配置文件,要修改一些配置,分别是hadoop-env.sh、yarn-env.sh、core-site.xml 、hdfs-site.xml,如下(我直接通过XFtp修改了,你也可以用命令行修改):
export JAVA_HOME=/usr/local/java/jdk1.8.0_231/


<!-- 插入core-site.xml的代码 -->
	<property>
		<name> fs.default.name </name>
		<value>hdfs://master:9000</value>
		<description>指定HDFS的默认名称</description>
	</property>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://master:9000</value>
		<description>HDFS的URI</description>
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/usr/local/hadoop/tmp</value>
		<description>节点上本地的hadoop临时文件夹</description>
	</property>

<!-- 插入hdfs-site.xml的代码 -->
	<property>
		<name> fs.default.name </name>
		<value>hdfs://master:9000</value>
		<description>指定HDFS的默认名称</description>
	</property>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://master:9000</value>
		<description>HDFS的URI</description>
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/usr/local/hadoop/tmp</value>
		<description>节点上本地的hadoop临时文件夹</description>
	</property>

改好文件后,还是在/usr/local/hadoop/hadoop-2.8.5/etc/hadoop目录,输入cp mapred-site.xml.template mapred-site.xml,将mapred-site.xml.template文件复制到当前目录,并重命名为mapred-site.xml。

然后继续修改mapred-site.xml文件:

<!-- 插入mapred-site.xml的代码 -->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
		<description>指定mapreduce使用yarn框架</description>
	</property>

接着修改yarn-site.xml 文件:

<!-- 插入yarn-site.xml的代码 -->
	<property>	
		<name>yarn.resourcemanager.hostname</name>
		<value>master</value>
		<description>指定resourcemanager所在的hostname</description>
	</property>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
		<description>
			NodeManager上运行的附属服务。
			需配置成mapreduce_shuffle,才可运行MapReduce程序
		</description>
	</property>

最后修改slaves文件:

现在一台主机弄好了,现在添加其他的节点虚拟机系统。

在虚拟机中,右键虚拟主机,管理——克隆,打开克隆虚拟机向导:

克隆好node1后,右键node1虚拟机,设置——网络适配器

点击确定,回到虚拟机主界面,打开node1,因为是克隆master,所以用户名密码都是一样的,命令行的记录都还在。现在要修改三个文件:ifcfg-ens33、network、hostname,命令忘了就按键盘的上往前翻,改完ESC,:wq保存并退出:

改完输入reboot,重启一下,可以看到机器名变node1了,能ping百度还有外部主机(192.168.157.2)了,你如果把master打开也能ping的通:

node1克隆、配置好后,同样的克隆、配置一下node2:物理地址重新生成一下,把ifcfg-ens33、hostname、network对应的地方改一下,重启一下,OK!

最后配置ssh,打开master、node1、node2,登录root用户。

——在master机器上输入 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 创建一个无密码的公钥。

——在master机器上输入 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 将公钥id_dsa.pub添加进keys,这样就可以实现无密登陆ssh。

——在master机器上输入 ssh master 测试免密码登陆,出现询问,输入yes,回车继续。

我是在XShell上复制粘贴代码的,这一步我也不是很懂,但是的确可行,截图如下:

——在node1主机上执行 mkdir ~/.ssh,在node2主机上执行 mkdir ~/.ssh。

——在master机器上输入 scp ~/.ssh/authorized_keys root@node1:~/.ssh/authorized_keys 将主节点的公钥信息导入node1节点,导入时要输入一下node1机器的登陆密码。

——在master机器上输入 scp ~/.ssh/authorized_keys root@node2:~/.ssh/authorized_keys 将主节点的公钥信息导入node2节点,导入时要输入一下node2机器的登陆密码。

——在三台机器上分别执行 chmod 600 ~/.ssh/authorized_keys 赋予密钥文件权限。

——在master节点上分别输入 ssh node1 和 ssh node2 测试是否配置ssh成功:

——在master机器上,任意目录输入 hdfs namenode -format 格式化namenode,第一次使用需格式化一次,之后就不用再格式化,如果改一些配置文件了,可能还需要再次格式化:

到这里,hadoop终于完全搭建好了!

在master机器上,进入hadoop的sbin目录,输入 ./start-all.sh ,可以启动hadoop:

——输入 jps 查看当前java的进程,该命令是JDK1.5开始有的,作用是列出当前java进程的PID和Java主类名,nameNode节点除了JPS,还有3个进程,启动成功!如图:

node1、node2输入jps查看进程如下:

——在浏览器访问192.168.157.10的8088端口和50070端口可以查看hadoop的运行状况(如果打不开,有可能是master虚拟机的防火墙没有关闭,检查一下):

8088端口:

50070端口:

WordCount运行

配置好hadoop后,现在可以运行数据库世界的"Hello world!"程序了,WordCount就是数据库的"Hello world!",WordCount是用来统计一个文本每个词汇的出现数量的程序。

在hadoop文件里面自带有WordCount作为hadoop的demo了,我们直接使用它来运行一下。

首先进入hadoop文件夹:cd /usr/local/hadoop/hadoop-2.8.5,里面有个LISENCE.txt,里面有很多英语单词,我这里直接统计它的词汇。

cat LISENCE.txt查看一下:

用hadoop fs -mkdir /input命令在hadoop库中创建input目录,然后hadoop fs -ls /查看一下:

用hadoop fs -put LICENSE.txt /input把LISENCE.txt放到input目录下,hadoop fs -ls /input查看:

接下来用hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount /input /output,把input中的txt进行统计就行了(WordCount程序包的具体位置看这条命令,不同版本可能不同):

命令hadoop fs -ls /看出,HDFS系统下多了个/output 和/tmp目录。打开/output目录可以看到下面有两个文件(_SUCCESS和part-r-00000),说明已经运行成功了:

命令hadoop fs -cat /output/part-r-00000,打开part-r-00000查看结果:

参考链接:

CentOS7搭建:https://www.osyunwei.com/archives/7829.html

WordCount运行:https://blog.csdn.net/u010285974/article/details/81636719

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值