导语:
继上一篇文章之后,在这里继续做Linux与Hadoop学习笔记。
在Linux配置静态IP搞定之后,我们就可以搞一个完全分布的集群来检测一下最近的学习情况啦。
Linux常用指令学习:https://blog.csdn.net/hu_belif/article/details/82389488
首先提供以下资源地址:
Hadoop的官网:http://hadoop.apache.org/
注意1:下载binary文件可以直接使用,但是32位的编码;当然您也可以下载source文件,自己导入lib来编译一个64位的文件。
注意2:建议不要下载最新的版本,Hadoop版本在2.8.4以上即可,也不要太老。
其次大概介绍一下什么是Hadoop以及它的作用:
引用官网的一段话:
Apache™Hadoop®项目开发了用于可靠,可扩展的分布式计算的开源软件。
Apache Hadoop软件库是一个框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储。库本身不是依靠硬件来提供高可用性,而是设计用于检测和处理应用层的故障,从而在计算机集群之上提供高可用性服务,每个计算机都可能容易出现故障。
该项目包括以下模块:
- Hadoop Common:支持其他Hadoop模块的常用实用程序。
- Hadoop分布式文件系统(HDFS™):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。
- Hadoop YARN:作业调度和集群资源管理的框架。
- Hadoop MapReduce:基于YARN的系统,用于并行处理大型数据集。
***********************************************开搞*******************************************************
一、基础环境检测
1.首先来检测一下我们的JavaJDK的配置情况:
在terminal中键入:
Javac -version
出现了以下状态后证明环境没问题,若有问题看Linux安装jdk详解。
javac 1.8.0_171
注意:Java的jdk版本必须要保证在1.7+(本人使用的1.8),版本太低则一会儿配置集群的时候会各种报错(jar包会出现不兼容或冲突)。
2.配置其他的两台虚拟机
主机的JavaJDK和静态IP以及网卡配置(上一篇文章)完毕后就可以进行克隆啦,再创造两个虚拟机,重复前面做的所有操作,保证与这台虚拟机的配置一样,当然IP与用户账户一定是不可以相同的。
三台虚拟机都打开。
3.其次我们需要检测一下我们的网络的一系列设置
在这里我们要把三台虚拟机的IP段都相互关联保存,处理一下。
①首先我们先来把三台主机的IP段都保存在一台主机上(主机自己三选一)
在Terminal中键入以下命令修改主机映射:
vim /etc/hosts
三台主机的IP加用户名插入后保存。如图:
注意:这个操作是必须的,建议这样做:
"/etc/hosts"这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应[HostName和IP]用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的IP地址。
我们要测试两台机器之间知否连通,一般用"ping 机器的IP",如果想用"ping 机器的主机名"发现找不见该名称的机器,解决的办法就是修改"/etc/hosts"这个文件,通过把LAN内的各主机的IP地址和HostName的一一对应写入这个文件的时候,就可以解决问题。
②检测自己的网络主机是否正确:
键入命令:
vim /etc/sysconfig/network
保证上面IP所对应的用户名是当前用户名。
,没有就手动添加。
注意:保证三台虚拟机可以相互联络。可以ping通,按上面的配置来的话就是ping hadoop2(3)。出现下面的状态就代表可以互相联络:
不能联络查看防火墙是否关闭:
service iptables status
注意:Linux的三台机器都要关闭。
应该是这个状态:
不是以上状态就要运行以下命令:
service iptables stop #临时关闭防火墙
chkconfig iptables off #永久关闭防火墙(重启后生效)
(特别特别重要)剩下的就是查看重写网卡与静态IP的配置啦,这里我就不做详述了,详细的请参阅:https://blog.csdn.net/hu_belif/article/details/82318539
4.同步三台机器的时间
要保证三台虚拟机的时间同步,最好不要相差10秒钟以上。
查看时间的命令:
date
修改时间的命令:
以2018年9月5日21点18分30秒为例;格式是 ----月日时分年.秒,如:
090521182018.30
分割一下就是:09/05/21/18/2018/.30
注意:年份后边有一个小数点哦。
5.再次检测防火墙和ssh免密登录
键入命令进行检测,保证防火墙已经完全关闭,并且三台虚拟机都可以互相的联络(ping)。
shh免密登录与防火墙的设置在上文以及Linux安装jdk详解中有详细步骤,可以参阅其中步骤进行装配。
~~~~~~~~~~~~~~~~~~~~~~~~~~~环境检测通过,下一步→~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
二、Hadoop的安装与基本配置
1、安装Hadoop
这里看这篇文章:https://blog.csdn.net/hu_belif/article/details/82391003
2、配置Hadoop
进入自己Hadoop的安装路径,首先需要在hadoop安装文件下创建三个目录,tmp,datanode,namenode,分别用来存储临时文件数据和计算路径。
接着进入配置路径 /etc/hadoop/ 路径下后,进行下面文件的配置;文件的打开方式均用vi 修改,cat查看。
①.
修改hadoop-env.sh及yarn-env.sh中的JAVA_HOME,与自己环境变量中的路径相同即可:
图例:
②.
修改core-site.xml文件,复制以下(不复制‘<configuration>
’)到自己的配置文件中的<configuration>标签内。
注意:把master修改为自己的用户名。
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
修改后的图例:
③
修改hdfs-site.xml配置,复制原理同上。
注意:把master修改为自己的用户名。
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/namenode</value>
</property>
<property>
<name>dfs.data.dir</name> <value>/usr/local/hadoop/datanode</value>
</property>
</configuration>
修改后的图例:
④
修改mapred-site.xml.template命名,不是强制的,但是为了配置更加便捷,建议把名字修改为mapred-site.xml。
然后复制原理同上的。
mapred-site.xml.template
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
修改后图例:
⑤
复制原理同上。
注意:把master修改为自己的用户名。
yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>
master
</value></property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2000</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2000</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name> <value>500</value>
</property>
<property> <name>mapreduce.reduce.memory.mb</name> <value>2000</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>2000</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>
master
:8032</value></property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>
master
:8030</value></property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name> <value>
master
:8031</value></property>
<
/configuration
>
修改后图例:
⑥
修改slaves
vi slaves
编辑从节点,可以将主节点也作为从节点进行编辑。
例如: 输入master,slave1,slave2或者hadoop1,2,3
图例:
三、配置从节点(其他的虚拟机)
①配置从节点
在保存完所有的设置后,我们需要同样配置其他从节点(其他几台虚拟机)。
可以硬复制,也可以将文件进行拷贝复制(下发到从节点),从master到slave1,slave2;
输入命令:
scp -r /usr/local/hadoop/ root@slave1:/usr/local/ #将Hadoop的全部文件递归复制到slave1
scp -r /usr/local/hadoop/ root@slave2:/usr/local/ #将Hadoop的全部文件递归复制到slave1
scp -r /etc/profile root@slave1:/etc/profile #将环境变量文件复制到slave1
scp -r /etc/profile root@slave2:/etc/profile #将环境变量文件复制到slave1
执行情况如下所示:
注意:在这个过程中不要随意点击鼠标,否则将导致死机。
②首次启动预备
所有的情况都已经配置完毕后,第一次启动Hadoop必须进行初始化(格式化),以后就不需要了。
注意:如果修改配置或更改Hadoop的其他设置后还需要格式化,需要先删除主机下的tmp,namenode,datanode三个文件夹,然后在新建tmp,namenode,datanode这个三个文件夹,最后才能再次格式化。三台虚拟机全都都要进行此操作。
现在首先需要对Hadoop进行系列的格式化:
命令:
hadoop namenode -format
③正式启动
格式化namenode后,就可以启动了。
start-dfs.sh #启动一(指启动分布式存储)
start-all.sh #启动二(全部启动,推荐使用)
四、成功之后的检测
①可以访问下面的网站,检测:
Daemon | Web Interface | Notes |
---|---|---|
NameNode | http://port_id:50070 | Default HTTP port is 50070. |
ResourceManager | http://port_id:8080 | Default HTTP port is 8088. |
MapReduce JobHistory Server | http://port_id:19888 | Default HTTP port is 19888. |
port_id指的是主机的IP地址,如上图中的地址栏所示。
②用MapReduce计算一下pi的值
测试mapreduce(分布式算法)(hadoop自带的程序,计算pi的值):
进入Hadoop安装目录下的 /share/hadoop/mapreduce/
然后执行:
hadoop jar hadoop-mapreduce-examples-2.8.4.jar pi 20 50
结果:
③jps验证
这样基本搭建已经完成,形成节点之间的连接。