云服务器搭建HADOOP集群

目录

云服务器配置

本次采用三台服务器名称分别为
	nn1 :NameNode ,ResourceManager,JobHistoryServer
	dn1 :NodeManager,SecondaryNameNode,DataNode
	dn2 :DataNode,NodeManager
服务器版本:    centos 7.2
hadoop版本:   hadoop-2.7.2
JDK版本: 	 jdk-8u121-linux-x64

1. 设置安全组

为了防止外网攻击云服务器:
	将各个服务器的内外网地址添加进安全组
	将客户端外网地址添加进安全组
如用本机虚拟机搭建,则无需配置

2. 服务器配置

> 关闭防火墙和selinux 配置/etc/hosts
vi /etc/hosts
------>  nn1  <------
106.13.177.xxx dn1
106.12.7.xxx dn2
192.168.0.x nn1

------>  dn1  <------
192.168.16.x dn1
106.12.7.xxx dn2
106.12.51.xx nn1

------>  dn2  <------
106.13.177.xxx dn1
192.168.16.x dn2
106.12.51.xx nn1

这里注意本机地址必须配置为内网地址,其他两台设置必须为外网地址。 否则集成搭建完成后,idea写的JAVA程序访问不了集群
如果是本机虚拟机,则正常写入内网地址即可

> 创建hdp用户,设置主机互信
>>创建用户
useradd hdp
passwd hdp

>>设置主机互信
交换各主机密钥
分别在各个主机上运行
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub hdp@nn1
ssh-copy-id -i ~/.ssh/id_rsa.pub hdp@dn2
ssh-copy-id -i ~/.ssh/id_rsa.pub hdp@dn2
> 配置sudo
vi /etc/sudoers
在root    ALL=(ALL)       ALL下
添加如下内容
hdp    ALL=(ALL)       ALL
想免除密码输入加上NOPASSWD: 
hdp    ALL=(ALL)      NOPASSWD: ALL
> 编写xcall ,xrsync 文件
xcall -- 批量执行文件

#!/bin/bash
pcount=$#
if (( pcount<1 )) ;then
echo no args;
exit;
fi
for host in nn dn1 dn2 ;  ##主机名称
do
echo ---------------- $host ------------------
ssh $host $1
done

xrync -- 批量传输文件
#!/bin/bash
pcount=$#
if (( pcount<1 )) ;then
 echo no args;
 exit;
fi
p1=$1;
fname=`basename $p1`
echo fname=$fname;
pdir=`cd -P $(dirname $p1);pwd`
echo pdir=$pdir
cuser=`whoami`
for host in dn1 dn2 ;  ##主机名称
do
rsync $pdir/$fname $cuser@$host:$pdir
done

编写文件之后,将文件放入/usr/local/bin文件下
赋权chmod 755 /usr/local/bin/

3. 软件安装

利用xrsync将JDK和HADOOP安装包传到各个主机
利用xcall批量执行

> 安装JDK
>>卸载现有JDK
	查询现有JDK
		rpm -qa | grep java
	如有信息则卸载JDK
		sudo rpm -e 软件包
>>安装JDK
	解压
		tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/local/
	赋权
		chmod -R 777 jdk1.8.0_121
	配置JDK环境变量
	  vi /etc/profile
		export JAVA_HOME=/usr/local/jdk1.8.0_121
		export HADOOP_HOME=/usr/local/hadoop-2.7.2
		export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
	  vi ~/.bashrc   ##root,hdp都要做修改
	  	source /etc/profile
> 安装hadoop
>>解压
	tar -zxvf hadoop-2.7.2.tar.gz -C /usr/local
>>赋权
	chown -R hdp:hdp /usr/local/hadoop-2.7.2
>>配置环境变量
(与JDK配置相同,文件有带有hadoop的配置,如JDK环境变量已经配置,此步省略)
	vi /etc/profile
		export JAVA_HOME=/usr/local/jdk1.8.0_121
		export HADOOP_HOME=/usr/local/hadoop-2.7.2
		export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
	vi ~/.bashrc   ##root,hdp都要做修改
  		source /etc/profile
>>source文件,使配置生效
	source /etc/profile

使用ssh执行命令 属于Login-shell,会自动读取 /etc/profile文件中定义的所有的变量!
ssh 执行远程机器命令属于non-login-shell,不会读取/etc/profile
如果在使用命令时,我们需要使用/etc/profile定义的一些变量,需要在目标机器的对应的用户的家目录/.bashrc中添加以下代码
source /etc/profile
如果不添加以上代码,在执行start-all.sh | stop-all.sh一定会报错!

> hadoop目录结构
bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
sbin目录:存放启动或停止Hadoop相关服务的脚本
share目录:存放Hadoop的依赖jar包、文档、和官方案例

4.HADOOP配置文件

以下配置文件均在 $HADOOP_HOME/etc/hadoop
配置完成后使用xrync将文件同步到各个节点

> core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
    	<name>fs.defaultFS</name>
  		<value>hdfs://nn1:9000</value>
</property>
<property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hdp/bigdata/data/tmp</value>
</property>
> hdfs-site.xml
<!--配置副本数,默认3 -->
<property>
     <name>dfs.replication</name>
     <value>2</value>
</property>

<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
  	 <name>dfs.namenode.secondary.http-address</name>
 	 <value>dn1:50090</value>
</property>
<property>
<!-- namenode 的备份目录,即 HDFS数据目录的本机备份 -->
	<name>dfs.namenode.name.dir</name>
	<value>file:///${hadoop.tmp.dir}/dfs/name,file:///home/hdp/bigdata/namespace</value>
</property>
> datanode也可以配置多个目录,但不是副本。
> 两个目录可以分别存放在不用的磁盘上,更加安全
在hdfs-site.xml 内添加
<property>
<name>dfs.datanode.data.dir</name>
     <value>file:///${hadoop.tmp.dir}/dfs/data1,file:///${hadoop.tmp.dir}/dfs/data2</value>
</property>
> mapred-site.xml
<property>
	<!--配置在yarn上运行 -->
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

<property>
  <!--日志监控服务的地址,一般填写为nodenode机器地址 -->
    <name>mapreduce.jobhistroy.address</name>
    <value>nn1:10020</value>
</property>
<property>
    <name>mapreduce.jobhistroy.webapp.address</name>
    <value>nn1:19888</value>
</property>

<property>        
    <name>yarn.log.server.url</name>         
    <value>http://nn1:19888/jobhistory/logs</value> 
</property>
> yarn-site.xml
<!-- Site specific YARN configuration properties -->
<!-- reducer获取数据的方式 -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
     <name>yarn.resourcemanager.hostname</name>
     <value>nn1</value>
</property>

<property>
     <name>yarn.log-aggregation-enable</name>
     <value>true</value>
</property>

<!-- 日志聚集功能使能 -->
<property>
	<name>yarn.log-aggregation-enable</name>
	<value>true</value>
</property>

<!-- 日志保留时间设置7天 -->
<property>
	<name>yarn.log-aggregation.retain-seconds</name>
	<value>604800</value>
</property>
> slaves
配置集群的数据节点
dn1
dn2

5.启停集群

注意切换到hdp 用户

> 操作
1.格式化NameNode(第一次启动时格式化,以后就不要总格式化)
	bin/hdfs namenode -format
2.启动hadoop集群
	start-all.sh
3.启动历史服务器
	sh mr-jobhistory-daemon.sh start historyserver
4.停止hadoop集群
	stop-all.sh
5.验证集群是否正常启动
	xcall jps

集群启动后各个节点进程

> 集群可视化UI
hadoop集群状态
	http://nn1:50070/
yarn
	http://nn1:8088/cluster
2nn
	http://dn1:50090/status.html

创作不易,请各位多多点赞,转载请注明出处。
我们可以在评论交流,长期更新,可以关注我哦~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值