①打开VMware虚拟机,用镜像CentOS创建一个新的命名为hadoop的虚拟机
VMware主页菜单栏 点击文件-->新建虚拟机(选择CentOS镜像)点击下一步继续
点击下一步,等待……直至完成创建
选择other,登录用户名为root,密码为:hadoop
登录后修改一下时区和时间
配置网关:
点击VMware虚拟机的菜单栏左上角的 编辑-->虚拟网络编辑器,出现以下界面:
查看NAT设置:
查看DPCH设置:
右击右上角图标-->Edit Connections
出现以下界面填写以下信息:
右击桌面-->open in the termintal,在终端中输入以下命令:
重启网卡:service network restart
检查是否连通网络:ping baidu.com
出现以上界面则网关配置成功!(ctrl+c 退出此网速测试状态!)
②打开已经安装好的SecureCRT8.1(用以对虚拟机进行远程操作)
点击左上角闪电图标,连接刚刚设置的IP地址,如图:
如果没有连接上就点击菜单栏闪电图标右边那个图标(reconnect)重连接
出现如下图,即为连接成功!
关闭防火墙:chkconfig iptables off
禁用selinux:vim /etc/sysconfig/selinux,修改其中的内容为:SELINUX=disabled
查看主机名:hostname
vim /etc/sysconfig/network,修改内容如下:HOSTNAME=hadoop
修改机名与IP对应关系:vim /etc/hosts 在文档末行添加内容:192.168.189.130 hadoop
重启hadoop虚拟机:reboot
总体情况如下:
等待虚拟机重启完成……
重启后,在CRT中重新连接hadoop虚拟机
ssh免密钥登录,输入命令ssh-keygen -t rsa后,点击三次回车键,生成密钥
输入命令:ssh-copy-id 192.168.189.130 (注意:password输入时看不到内容!)
免密设置成功!
创建不同的目录(用于存放不同文件):
[root@hadoop ~]# cd /home
[root@hadoop ~]# cd /home
[root@hadoop home]# ls
hadoop
[root@hadoop home]# rm -rf hadoop/
[root@hadoop home]# ls
[root@hadoop home]# mkdir tools
[root@hadoop home]# mkdir softwares
[root@hadoop home]# mkdir data
[root@hadoop home]# ls
data softwares tools
安装lrzsz(上传文件到虚拟机中的一个软件)
[root@hadoop home]# yum install -y lrzsz
安装成功!
上传jdk1.8.0_162.tar.gz到 /home/tools,输入命令rz选择文件jdk1.8.0_162.tar.gz,add,ok等待直到上传完毕
创建文件夹 /home/softwares/java8,将刚才上传的jdk解压到/home/softwares/java8中,
命令如下:tar -zxf jdk1.8.0_162.tar.gz -C ../softwares/java8/
等待解压完成……
解压完成:
配置java环境:
[root@hadoop java8]# pwd /home/softwares/java8
打开环境变量配置文件:
[root@hadoop java8]# vim /etc/profile
在文档末尾添加两行内容:
刷新文件:
[root@hadoop java8]# source /etc/profile
检测java环境是否配置完成:
[root@hadoop java8]# java -version
出现如下,则配置成功!
java version "1.8.0_162" Java(TM) SE Runtime Environment (build 1.8.0_162-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
上传hadoop-2.9.2-src.tar.gz到 /home/tools/ 中
将hadoop-2.9.2-src.tar.gz解压到 /home/softwares/ 中,命令:tar -zxf hadoop-2.9.2-src.tar.gz -C ../softwares/
解压完查看文件列表:
[root@hadoop tools]# cd ../softwares/hadoop-2.9.2-src/ [root@hadoop hadoop-2.9.2-src]# ls BUILDING.txt hadoop-hdfs-project LICENSE.txt dev-support hadoop-mapreduce-project NOTICE.txt hadoop-assemblies hadoop-maven-plugins patchprocess hadoop-build-tools hadoop-minicluster pom.xml hadoop-client hadoop-project README.txt hadoop-cloud-storage-project hadoop-project-dist start-build-env.sh hadoop-common-project hadoop-tools hadoop-dist hadoop-yarn-project [root@hadoop hadoop-2.9.2-src]#
查看文件所需外属文件:
[root@hadoop hadoop-2.9.2-src]# more BUILDING.txt
Build instructions for Hadoop
----------------------------------------------------------------------------------
Requirements:
* Unix System
* JDK 1.7 or 1.8
* Maven 3.0 or later
* Findbugs 1.3.9 (if running findbugs)
* ProtocolBuffer 2.5.0
* CMake 2.6 or newer (if compiling native code), must be 3.0 or newer on Mac
* Zlib devel (if compiling native code)
* openssl devel (if compiling native hadoop-pipes and to get the best HDFS encryption per
formance)
* Linux FUSE (Filesystem in Userspace) version 2.6 or above (if compiling fuse_dfs)
* Internet connection for first build (to fetch all Maven and Hadoop dependencies)
* python (for releasedocs)
* Node.js / bower / Ember-cli (for YARN UI v2 building)
继续在 /home/tools/ 目录中上传所需要的文件protobuf-cpp-3.1.0.tar.gz,findbugs-3.0.1.tar.gz,apache-maven-3.6.1-bin.tar.gz
将apache-maven-3.6.1-bin.tar.gz解压到 /home/softwares/ 中
配置apache-maven-3.6.1环境
需在环境变量文档末尾添加两行的内容:
export MAVEN_HOME=/home/softwares/apache-maven-3.6.1 export PATH=$PATH:$MAVEN_HOME/bin
注意:下图中第二行PATN已经改为PATH,原来写错了!!!
检查maven是否配置成功,出现以下界面则成功!(注:配置环境后刷新配置文件使其生效:source /etc/profile)
将findbugs-3.0.1.tar.gz解压到 /home/softwares/ 中
配置findbugs-3.0.1环境:
需要在环境变量文档末尾添加两行的内容:
export FINDBUGS_HOME=/home/softwares/findbugs-3.0.1 export PATH=$PATH:$FINDBUGS_HOME/bin
检查findbugs版本(注:配置环境后刷新配置文件使其生效:source /etc/profile)
将protobuf-cpp-3.1.0.tar.gz解压到 /home/softwares/ 中
[root@hadoop tools]# tar -zxf protobuf-cpp-3.1.0.tar.gz -C ../softwares/
进入到解压后的文件夹中:
[root@hadoop tools]# cd /home/softwares/protobuf-3.1.0/
安装protobuf:
检查protobuf:
[root@hadoop protobuf-3.1.0]# ./configure
安装系统依赖:
[root@hadoop protobuf-3.1.0]# yum -y install automake libtool cmake ncurses_devel openssl-devel lzo-devel zlib-devel gcc gcc-c++
安装:
[root@hadoop protobuf-3.1.0]# ./configure [root@hadoop protobuf-3.1.0]# make install
*****等待安装完成*******
上传编译包hadoop-2.9.2-linux-64.tar.gz到 /home/tools/中
[root@hadoop tools]# rz
将其解压到 /home/softwares/中
[root@hadoop tools]# tar -zxf hadoop-2.9.2-linux-64.tar.gz -C ../softwares/
[root@hadoop tools]# cd /home/softwares/hadoop-2.9.2/
打印出/home/softwares/hadoop-2.9.2/的路径并复制,用于配置环境变量
[root@hadoop hadoop-2.9.2]# pwd
打开环境变量配置文件,配置hadoop-2.9.2的环境
[root@hadoop hadoop-2.9.2]# vim /etc/profile
在文件末尾添加如下:
export HADOOP_HOME=/home/softwares/hadoop-2.9.2/
export PATH=$PATH:$HADOOP_HOME/bin
刷新配置文件
[root@hadoop hadoop-2.9.2]# source /etc/profile
查看IP地址:
[root@hadoop hadoop-2.9.2]# ifconfig
以下根据官网(https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html)来配置hadoop
打开Notepad++,点击菜单栏:插件-->插件管理-->搜索NppFTP,安装-->连接上hadoop(192.168.189.130)
找到hadoop-env.sh文件,打开,修改正确的jdk路径:export JAVA_HOME=/home/softwares/java8(注:可以直接用vim修改!)
查看JAVA_HOME环境变量的具体值(用于修改文档):
[root@hadoop softwares]# echo $JAVA_HOME /home/softwares/java8
下图中的jdk版本不同(盗的别人的图!将文件夹jdk1.7.0_79替换为java8即可)
打开core-site.xml文件,(注意可能文件中存在的是core-site.xml后面还带有其他后缀,直接将其重命名删掉后缀)
#在hadoop-2.9.2文件夹下创建几个文件夹,用于后面的配置:
[root@hadoop hadoop-2.9.2]# mkdir data [root@hadoop hadoop-2.9.2]# cd data [root@hadoop data]# mkdir tmp [root@hadoop data]# cd tmp [root@hadoop tmp]# pwd /home/softwares/hadoop-2.9.2/data/tmp
在core-site.xml文件添加如下内容:
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/softwares/hadoop-2.9.2/data/tmp</value>
</property>
打开hdfs-site.xml文件(注意同上),添加如下内容
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
[root@hadoop tmp]# cd .. [root@hadoop data]# cd ..
#格式化文件系统(格式化系统用于将系统中本来有的文件清楚干净,不要随便重复此步骤!!!)
[root@hadoop hadoop-2.9.2]# bin/hdfs namenode –format
#启动文件系统
[root@hadoop hadoop-2.9.2]# sbin/start-dfs.sh
#注意:对应的关闭命令为sbin/stop-dfs.sh
查看界面:用浏览器打开网址:192.168.189.130:50070 (下图为盗图)
配置yarn:修改mapred-site.xml,添加如下:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
修改yarn-site.xml,添加如下:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
启动yarn
[root@hadoop hadoop-2.9.2]# sbin/start-yarn.sh starting yarn daemons starting resourcemanager, logging to /home/softwares/hadoop-2.9.2/logs/yarn-root-resourcemanager-hadoop.out localhost: starting nodemanager, logging to /home/softwares/hadoop-2.9.2/logs/yarn-root-nodemanager-hadoop.out
#注意:对应的关闭命令为sbin/stop-yarn.sh
###############查看进程#####################5个(如果缺少进程则没有成功,解决方法见下方)
[root@hadoop hadoop-2.9.2]# jps 10849 ResourceManager 10974 Jps 10936 NodeManager 10535 SecondaryNameNode 10320 NameNode 10404 DataNode [root@hadoop hadoop-2.9.2]#
查看界面:在浏览器中输入192.168.189.130:8088 (下图为盗图)
至此,hadoop伪分布式集群搭建完成!!!如果没有成功,就用命令停止dfs和yarn,到/hadoop-2.9.2/data 中删除tmp文件夹(rm -rf tmp),并重新创建新的tmp文件夹,并将tmp的完整路径配置到前面的core-site.xml文件中的相应位置,并检查其他的环境是否正确,然后再启动dfs和yarn,重新尝试打开界面。
测试案例(wordcount)
进入/home/data/创建测试数据
[root@hadoop data]# touch words [root@hadoop data]# vim words
#在words文档中输入以下内容:
hello bigdata
hello Hadoop
通过hadoop命令上传words文件
[root@hadoop hadoop-2.9.2]# bin/hadoop fs -put /home/data/words /words
下图为盗图
!!!插入补充:
通过以下命令可以再服务器上创建新的文件夹(例如/swun/test):
bin/hadoop fs -mkdir -p /swun/test
注意:命令中的bin/hadoop fs部分等价于bin/hdfs dfs ,两个都可以用
词频统计:
[root@hadoop hadoop-2.9.2]# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /words /out
查看结果:
[root@hadoop hadoop-2.9.2]# bin/hadoop fs -ls /out
18/06/08 08:59:22 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 2 items
-rw-r--r-- 1 root supergroup 0 2018-06-08 08:55 /out/_SUCCESS
-rw-r--r-- 1 root supergroup 27 2018-06-08 08:55 /out/part-r-00000
[root@hadoop hadoop-2.9.2]# bin/hadoop fs -cat /out/part-r-00000
18/06/08 09:00:19 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
bigdata 1
hadoop 1
hello 2
下图为盗图
词频统计的原理如下:
Hdfs原始数据
|
Hello bigdata Hello Hadoop
Map阶段: 输入数据 <0,”hello bigdata”> <8,”hello Hadoop”>
输出数据 map(key,value,context){ String line=value; //hello a String[] words=value.split(“\t”); For(Stirng word:words){ //hello //bigdata //hello //Hadoop Context.write(word,1); } }
//hello 1 //bigdata 1 //hello 1 //Hadoop 1 |
Reduce阶段 |
输入数据 分组排序 <bigdata,1> <Hadoop,1> <hello,{1,1}>
输出数据 Reduce(key,value,context){ Int sum=0; String word=key; For(int i:value){ Sum+=I; } Context.write(word,sum); } |