Hadoop分布式环境部署
本篇预期收益:
1:Hadoop分布式环境搭建部署
2:Hadoop基本配置文件的了解
3:集群管理工具clustershell的了解与使用
4:Linux免密登录配置
5:hadoop启动时异常信息的处理
使用JAR包进行安装部署
一:准备硬件( Linux 操作系统 )
一台物理机 window7 , 内存8GB , 硬盘1TB
VMware12 Pro创建了三个虚拟机
各虚拟机之前配置免密登录
对于Hadoop Master(ResourceManager/NameNode)节点硬件配置要高一些
安装一台虚拟机之后, 在克隆出来两个(注意:在克隆虚拟机的时候,最好是递归以此克隆,比如:我们将hadoop01克隆出来hadoop02, 那么在克隆hadoop03的时候 , 要在hadoop02基础上进行克隆, 因为涉及到在克隆之后 , 自动生成Mac地址的问题.如果我们在hadoop01的基础上进行克隆hadoop03,那么hadoop03的mac地址就会和hadoop02的一样.这样会导致Mac地址冲突问题)
克隆之后修改项 :
- 1.1: 修改hostname
vim/etc/sysconfig/network
修改hostname 为hadoop01
重启Linux : 命令reboot
- 1.2: IP设置
查看Mac地址
Vim/etc/udev/rules.d/70-persistent-net.rules
删除eth0 或者删除eth0之后将eth1修改为eth0
修改network-scripts
Vim /etc/sysconfig/network-scripts
将DEVICE设置为etho1
将IPADDR设置为我们需要的IP地址
我这里Hadoop三台机器的IP分别为192.168.17.140/141/142 重启网卡
servicenetwork restart
查看IP –ifconfig
然后将hadoop02,hadoop03按照上面的步骤进行设置
- 1.3:配置免密登录(各集群节点间,互相操作对方时,只需要输入对方ip或者host即可,不需要输入密码,即:免密登录)
配置免密登录步骤:
1):ssh-keygen –t rsa
- 连续敲三个回车
- 查看 ls /root/.ssh 有两个秘钥文件
4):将本机的秘钥文件,分别复制到其它两台中(这里可以将shell窗口设置为垂直排序,然后将命令行作用于所有窗口)
5):ssh-copy-id –i /root/.ssh/id_rsa.pub 192.168.17.140
ssh-copy-id –i /root/.ssh/id_rsa.pub 192.168.17.140
ssh-copy-id –i /root/.ssh/id_rsa.pub 192.168.17.140
- 修改hosts文件,通过hostname进行登录
命令 :vim /etc/hosts
每台机器的hosts文件都设置如图:
至此:免密登录设置完成
集群管理工具:clustershell
通过 yuminstall clustershell 安装 clustershell 只需要在一台机器上进行安装即可,这样所有的文件都通过这台机器分发到其它机器中。
安装完clustershell之后, 需要按照它的规则创建链接到其它服务的地址是多少
clustershell的配置文件在/etc/clustershell目录下,其中的groups是最常用的,我们只需要配置这个即可:
vim /etc/clushtershell/groups
配置为:
hadoop: hadoop[01-03]
这样我们就把hadoop01 hadoop02 hadoop03 都配置在了clustershell groups里面
或者hadoop: hadoop[01,02,03]
接下来验证一下:
在hadoop01 输入命令 clush –ghadoop echo $JAVA_HOME
我们可以看到所有机器的javahome配置信息,如图:
二:准备软件安装包,并安装基础软件(JDK)
JDK1.7和 Hadoop安装包
Hadoop安装包下载:
下载地址:http://apache.fayea.com/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz
通过linux命令下载:
首先进入到/opt/hadoop 目录下,然后
wget http://apache.fayea.com/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz
将hadoop压缩包下载到 /opt/hadoop目录下
解压缩hadoop-2.6.5.tar.gz
tar–zxvf hadoop-2.6.5.tar.gz
解压之后的目录结果为:
Hadoop文件结构说明:
bin:Hadoop最基本的管理脚本和使用脚本所在目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用hadoop
etc:hadoop配置文件所在目录,包括core-sit.xml/ hdfs-site.xml ,mapred-site.xml 等从hadoop1.0继承而来的配置文件和yarn-sit.xml 等 hadoop2.0新增的配置文件
include:对外提供的编程库头文件(具体动态库和静态库在lib目录中)这些头文件均是C 定义的,通常用于C 程序访问HDFS或者编写MapReduce程序
lib:该目录包含了Hadoop对外提供的编程动态库和静态库,与include目录中的头文件结合使用
libexec:各个服务对应的shell配置文件所在目录,可用于配置日志输出目录,启动参数(比如JVM参数)等基本信息
sbin:hadoop管理脚本所在目录,主要包含HDFS和YARN中各类服务的启动和关闭脚本
share:Hadoop各个模块编译后的jar包所在目录
Hadoop HA部署架构
三:修改配置文件
修改Hadoop配置文件
1 :配置文件存放目录
- 1.1 :Hadoop中所有的配置文件都在etc/hadoop 下面
- 1.2 :修改slaves文件
vimetc/hadoop/slaves
将localhost修改为hadoop01(注:修改本机的hostname)
- 1.3 : 修改hadoop-env.sh
将JAVA_HOME设置为本地JDK的路径
查看本机的JAVA_HOME安装路径
Echo $JAVA_HOME
编辑hadoop-env.sh
修改JAVA_HOME=/opt/hadoop/jdk1.7.0_79
- 1.4 : 修改mapred-site.xml
在配置目录中,有一个mapred-site.xml.template这个是hadoop为我们提供的关于mapred-site的模板文件,在后续还有很多类似的这样的文件
首先,我们将mapred-site.xml.template拷贝一份并重命名为mapred-site.xml
mvmapred-site.xml.template mapred-site.xml
然后编辑mapred-site.xml
设置为以下内容
代码语言:javascript复制<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
参数解释:mapreduce.framework.name采用yarn进行提交mapreduce作业
- 1.5 : 修改core-site.xml 文件
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop01:8020</value>
</property>
</configuration>
参数解释:
fs.default.name :NameNode的URL
- 1.6 : 修改hdfs-site.xml 文件
- 1.7 :修改yarn-env.sh
将去掉JAVA_HOME注释,并设置JAVA_HOME对应的JDK路径
JAVA_HOME=/opt/hadoop/jdk1.7.0_79
四:将Hadoop 配置完成之后的文件分发到其它节点中
命令 :scp –rhadoop-2.6.5 hadoop02:/opt/hadoop
scp –rhadoop-2.6.5 hadoop03:/opt/hadoop
五:启动服务
1 :格式化namenode (参考Hadoop技术点01)
命令:./bin/hdfsnamenode -format
2 : 启动HDFS
./sbin/start-dfs.sh
验证 hdfs
查看hadoop01 ,02,03的hdfs进程
jps
hadoop01 上面有datanode ,secondarynamenode
hadoop02 上面有 datanode
hadoop03 上面有 datanode
注:启动异常信息参考异常处理
4 :启动yarn
./sbin/start-yarn.sh
验证yarn
Hadoop01 启动的进程有 nodemanager ,resourcemanager,secondarynamenode,datanode
Hadoop02 启动进程有 nodemanager , datanode
Hadoop03 启动集成有 nodemanager ,datanode
1 : 格式化HDFSnamenode
./bin/hdfs namenode –format
六:验证是否启动成功
异常处理:
1 :启动HDFS时,报error:connotfind configuration directory:/etc/hadoop
解决方法1:
代码语言:javascript复制修改hadoop_env.sh中的 HADOOP_CONF_DIR
vim/etc/hadoop/hadoop_env.sh
// 将hadoop 的完整路径附上即可
// pwd得到完整目路径
exportHADOOP_CONF_DIR=/opt/hadoop/hadoop-2.6.5/etc/hadoop
然后 source etc/hadoop/hadoop_env.sh
解决方法2:
代码语言:javascript复制修改/etc/profile
在profile中加入 HADOOP_HOME=/opt/hadoop/hadoop-2.6.5
HADOOP_CONF_DIR=$HADOOP_HOME//etc/hadoop
然后 source /etc/profile