IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hadoop集群部署(附集群启停脚本) -> 正文阅读

[大数据]Hadoop集群部署(附集群启停脚本)

集群部署规划(Hadoop3.1.3)

hadoop1hadoop2hadoop3
HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARNNodeManager

ResourceManager

NodeManager

NodeManager

(注意:1、NameNode和SecondaryNameNode不要安装在同一台服务器。2、ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台服务器。)

1.配置/etc/hosts集群名称(三台节点)

10.34.80.51 hadoop1
10.34.80.52 hadoop2
10.34.80.53 hadoop3

2.配置ssh免密登录(hadoop1)

? ?切换到~家目录 cd ~

? ?显示隐藏文件 ls -al

? ?进入.ssh,执行下面命令:

ssh-keygen -t rsa

? ?按3次回车

? ?将hadoop1的公钥拷贝到hadoop1(自己也需要拷贝) hadoop2 hadoop3

? ?ssh-copy-id hadoop1

? ?ssh-copy-id hadoop2

? ?ssh-copy-id hadoop3

? ?hadoop2 hadoop3执行上述两步操作

3.编写集群分发脚本(hadoop1)

? ?cd到/usr/local/bin/目录下,新建文件xsync,增加下面内容:

#1. 判断参数个数
if [ $# -lt 1 ]
then
        echo Not Enough Arguement!
        exit;
fi 

#2. 遍历集群所有机器                 
for host in hadoop1 hadoop2 hadoop3
do        
    echo ==================== $host ====================       
    #3. 遍历所有目录,挨个发送        
    for file in $@         
    do                   
        #4. 判断文件是否存在                  
        if [ -e $file ]                         
            then                                  
                #5. 获取父目录                                  
                pdir=$(cd -P $(dirname $file); pwd)                                 
                #6. 获取当前文件的名称                                  
                fname=$(basename $file)                                  
                ssh $host "mkdir -p $pdir"                                 
                rsync -av $pdir/$fname $host:$pdir                        
            else                  
                echo $file does not exists!
       fi 
    done
done

4.安装hadoop和jdk(hadoop1)

???下载jdk和hadoop安装包,上传到/opt/module/software/下

???执行tar -zxvf hadoop安装包名 -C /opt/module/

???执行tar -zxvf jdk安装包名 -C /opt/module/

5.使用脚本分发到hadoop2、hadoop3

? ?cd到/opt/module/下,执行命令:

xsync /hadoop-3.1.3
xsync /jdk1.8.0_212

6.配置jdk和hadoop环境变量(hadoop1)

? ?/etc/profile.d/下新建文件my_env.sh,增加下面内容:

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

? ?使用脚本分发到hadoop2、hadoop3

xsync /etc/profile.d/my_env.sh

? ?在所有节点上执行命令使环境变量生效:

source /etc/profile.d/my_env.sh

7.hadoop配置文件说明

? ? ? hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。

? ? ? 其中自定义配置文件:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径下,用户可以根据项目需求重新进行修改配置。

8.修改自定义配置文件(hadoop1)

? ? ?配置core-site.xml

<configuration>
    <!-- 指定NameNode的地址 -->
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://hadoop1:8020</value>
	</property>
	<!-- 指定hadoop数据的存储目录 -->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/module/hadoop-3.1.3/data</value>
	</property>
	<!-- 配置HDFS网页登录使用的静态用户 -->
	<property>
		<name>hadoop.http.staticuser.user</name>
		<value>root</value>
	</property>
</configuration>

? ? 配置hdfs-site.xml

<configuration>
	<!-- nn web端访问地址 -->
	<property>
		<name>dfs.namenode.http-address</name>
		<value>hadoop1:9870</value>
	</property>
	<!-- 2nn web端访问地址 -->
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>hadoop3:9868</value>
	</property>

	<property>
		<name>dfs.permissions</name>
		<value>false</value>
	</property>
</configuration>

? ? ?配置yarn-site.xml

<configuration>
	<!-- 指定MR走shuffle -->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<!-- 指定ResourceMnager的地址 -->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop2</value>
	</property>
	<!-- 环境变量的继承 -->
	<property>
		<name>yarn.nodemanager.env-whitelist</name>
		<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
	</property>
</configuration>

? ? 配置mapred-site.xml?

<configuration>
	<!-- 指定MapReduce程序运行在Yarn上 -->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>

9.配置workers(hadoop1)

? ?切换到目录hadoop3.1.3/etc/hadoop

? ?vi workers

? ?hadoop1

? ?hadoop2

? ?hadoop3

10.分发到hadoop2、hadoop3

? ?切换到目录hadoop3.1.3/etc/下,执行命令:

xsync hadoop

11.启动集群(hadoop1)

? ?(注意:如果集群是第一次启动,需要在hadoop1节点格式化NameNode,格式化NameNode会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到以往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)

? ?切到hadoop3.1.3目录执行下面命令:

hdfs namenode -format

? ? 启动集群命令:

sbin/start-dfs.sh

? ? 启动历史服务器命令:

mapred --daemon start historyserver

12.启动yarn(hadoop2)

? ?切到hadoop3.1.3目录执行下面命令:

sbin/start-yarn.sh

13.查看hadoop集群启动情况

? ? 1、通过jps命令查看

? ? ? ? ? hadoop1节点:NameNode、NodeManager、DataNode

? ? ? ? ? hadoop2节点:ResourceManager、NodeManager、DataNode

? ? ? ? ? hadoop3节点:SecondaryNameNode、NodeManager、DataNode

? ? 2、通过前端界面查看

? ? ? ? ? 访问yarn界面:http://hadoop2:8088/

? ? ? ? ? 访问hdfs界面:http://hadoop1:9870/

14.hadoop集群启停脚本

? ?cd到/usr/local/bin/目录下,新建hdp.sh

#! /bin/bash
if [ $# -lt 1 ]
then 
	echo "No Args Input..."
	exit ;
fi
case $1 in
"start")
	echo "==================启动hadoop集群==================="
	
	echo "------------------启动hdfs------------------"
	ssh hadoop1 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
	echo "------------------启动yarn------------------"
	ssh hadoop2 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
;;
"stop")
	echo "==================关闭hadoop集群=================="
	
	echo "------------------关闭yarn------------------"
	ssh hadoop2 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
	echo "------------------关闭hadoop----------------"
	ssh hadoop1 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
	echo "Input Args Error..."
;;
esac

启动hadoop集群:hdp.sh start

停止hadoop集群:hdp.sh stop

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-09 11:45:16  更:2021-12-09 11:46:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:23:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码