大数据程序员新手一枚,最近做一个自动化部署的功能,部署的的是hdfs,hbase等大数据生态圈的组件,因为项目的集群上做测试的话容易破坏现有的环境,借着服务器的空闲自己弄了一套简单的Hadoop环境,踩了几个坑,特记录一下。
第一部分:准备搭建hdfs的虚拟机并且配置相应的环境。
第二部分:解压安装文件,修改配置文件,分发到各个主机节点上。
第三部分:启动hadoop集群环境,并检测是启动成功。
详细:
一,准备服务器,这个可以通过安装vmware的VMware Workstation Pro工具使用linux的镜像文件即可,这次是公司环境上有使用比较少的服务器,就直接拿来用了。这里用了三台服务器master,slave1,slave2.
1)第一个当然是安装JDK了,这里可以使用rpm安装,也可以直接下载源码文件解压安装
JDK:https://pan.baidu.com/s/1XFuU99-zj0nFPCWbyechxw 提取码:2i1m
配置hostname并将host的映射写入/etc/hosts的文件中
hostname的配置需要修改文件 /etc/sysconfig/network 通过vi 命令直接修改或者通过ftp工具下载修改再上传
内容修改如下:
NETWORKING=yes
HOSTNAME=主机名称
/etc/hosts修改内容格式如下:
主机IP 主机名称
修改完成需要重新启动服务器才会生效,重启以后执行hostname的命令,出现的主机名称和设置的一样说明设置成功了
2)配置ssh免密登陆(在这个地方有一个坑,踩了半天终于发现问题)
因为我在刚开始的时候就创建了一个对应的.ssh的文件夹,不是通过执行命令ssh-keygen -t rsa自动生成的文件,二者成
的方式不同,所以权限也不一样,这样在配置完成以后,ssh连接本机的时候总是不能连接成功
.ssh的目录权限一般为700 可以通过chmod 700 .ssh修改目录权限。
生成的文件权限也有要求:
按照这个给权限就没问题了。
在执行ssh-keygen -t rsa以后将生成的id_rsa.pub中的内容写到authorized_keys中,或者执行如下命令:
ssh-copy-id -i ~/.ssh/id_rsa.pub 主机名
在master的主机上执行这个命令,主机名分别为master和slave1,slave2
完成以后在master上通过ssh连接本机和其他节点查看是否能免密登陆
二、上传安装包并解压修改配置文件
安装包:hadoop-2.6.0-cdh5.13.1.tar.gz 下载地址:http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.13.1.tar.gz
解压命令:tar -zxvf hadoop-2.6.0-cdh5.13.1.tar.gz
将安装文件上传到指定的安装目录执行解压命令,创建软连接指向解压后的文件hadoop-2.6.0-cdh5.13.1
ln -sf 安装目录/hadoop-2.6.0-cdh5.13.1 安装目录/hadoop
修改配置文件:
hadoop-env.sh:
export JAVA_HOME=java_home的路径
core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hostname:8020</value>
</property>
</configuration>
hdfs-site.xml:
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data00/dfs/nn/image</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data00/dfs/dn,/data01/dfs/dn,/data02/dfs/dn</value>
</property>
</configuration>
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>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>ynzy0.cshdp.com</value>
</property>
slaves:
将datanode节点的hostname添加到该文件中即可
分发:将配置好的hadoop的文件发送到各个节点上
scp -r hadoop-2.6.0-cdh5.13.1 user@hostip:安装路径/
最后启动服务:
在master上进入安装目录hadoop的文件的bin目录,执行执行./hdfs namenode -format对namenode进行格式化
格式化,完成以后启动进入sbin目录执行./start-all.sh即可
完成以后jsp查看各个机器上的服务:
namenode:
datanode:
启动成功。
注意需要关闭防火墙和开通相应的端口,在这个地方我也踩坑半天,就是防火墙没关闭导致。