`
winse
  • 浏览: 94380 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

快速搭建第二个hadoop分布式集群环境

阅读更多

万事开头难,第一次搭建集群环境确实是比较难,比较苦恼。但,也不是说第二次搭建集群环境就会容易。

 

一般,第一次操作我们都会在测试环境中进行,当我们要搭建正式的环境时,是否还要像第一次那样搭建环境呢?

在搭了2^n次环境后,这里提供一种稍稍便捷一点的配置方式来搭建集群,所有的操作都在namenode上面进行!

 

192.168.3.100 h100可以认为是测试环境的namenode。

将来搭建的环境包括3台机器,已经全部安装好redhat的操作系统:

192.168.80.81 h81 #namenode

192.168.80.82 h82 #datanode1

192.168.80.83 h83 #datanode2

 

使用SecureCRT工具,root用户登录到namenode。步骤参考,有些步骤需要输入密码,不能一次性全部执行。

 

## 生成root用户的密钥对
ssh-keygen 

## 建立到100机器的无密钥登录
ssh-copy-id -i .ssh/id_rsa.pub hadoop@192.168.3.100

## 拷贝JDK,将加入hadoop用户的环境变量
mkdir -p /opt/java
scp -r hadoop@192.168.3.100:/opt/java/jdk1.6.0_29 /opt/java

## 把集群的IP和机器名对应加入hosts文件
vi /etc/hosts

# 192.168.80.81 h81
# 192.168.80.82 h82
# 192.168.80.83 h83

## 定义常量
namenode='h81'
hosts=`cat /etc/hosts | grep 192.168 | awk '{print $2}'`

## 修改时间
DATE='2013-03-01'
TIME='10:30:00'

for host in $hosts
do
	ssh $host date -s $DATE
	ssh $host date -s $TIME
done

## 建立namenode到datanodes的无密钥访问,这里需要输入对应datanode的root用户的密码
for host in $hosts
do
	ssh-copy-id -i .ssh/id_rsa.pub $host
done

#### 
for host in $hosts
do
	## 在集群所有节点上创建hadoop用户,会提示很多次输入密码。可以通过修改/etc/shadow替换密码输入的步骤
	ssh $host useradd hadoop
	ssh $host passwd hadoop

	## 拷贝jdk到datanodes
	if [ $host != $namenode ]
	then
		scp /etc/hosts $host:/etc/hosts
		ssh $host mkdir -p /opt/java
		scp -r /opt/java/jdk1.6.0_29 $host:/opt/java 2>&1 > jdk.scp.$host.log & 
	fi

	## 修改集群的hostname主机名称
	ssh $host hostname $host
	ssh $host cat /etc/sysconfig/network | sed s/localhost.localdomain/$host/g > /tmp/network && cat /tmp/network > /etc/sysconfig/network

	## 创建数据目录,并把权限分配给hadoop
	ssh $host mkdir /opt/cloud
	ssh $host chown hadoop /opt/cloud

done

## !切换到hadoop用户
su - hadoop

## 生成hadoop用户的密钥对
ssh-keygen

## 在hadoop用户的终端定义变量(root的终端变量获取不到的)
namenode='h81'
hosts=`cat /etc/hosts | grep 192.168 | awk '{print $2}'`

## 使namenode的hadoop用户无密钥登录到集群各个机器
for host in $hosts
do
	ssh-copy-id -i .ssh/id_rsa.pub $host
done

## 更新hadoop用户的环境变量,
vi .bashrc

# export JAVA_HOME=/opt/java/jdk1.6.0_29
# PATH=$JAVA_HOME/bin:/usr/sbin:$PATH
# export PATH

## 修改datanodes的环境环境变量,同时为集群创建必要的目录
for host in $hosts
do
	if [ $host != $namenode ]
	then
		scp .bashrc $host:~/.bashrc
	fi

	ssh $host source .bashrc
	ssh $host mkdir -p /home/hadoop/cloud/zookeeper
	ssh $host mkdir -p /home/hadoop/pids/katta/pids
	ssh $host mkdir -p /home/hadoop/pids/hadoop/pids 

done

## 建立namenode下的hadoop用户到192.168.3.100的无密钥访问
ssh-copy-id -i .ssh/id_rsa.pub 192.168.3.100

## 从100上拷贝集群程序
rsync -vaz --delete  --exclude=logs --exclude=log  192.168.3.100:~/lucene ~/
rsync -vaz --delete  --exclude=logs --exclude=log  192.168.3.100:~/sqoop-1.4.1 ~/
rsync -vaz --delete  --exclude=logs --exclude=log  192.168.3.100:~/zookeeper-3.3.5 ~/

rsync -vaz --delete  --exclude=logs --exclude=log  192.168.3.100:~/hadoop-1.0.0 ~/
rsync -vaz --delete  --exclude=logs --exclude=log  192.168.3.100:~/hbase-0.92.1 ~/
rsync -vaz --delete  --exclude=logs --exclude=log  192.168.3.100:~/katta-core-0.6.4 ~/
rsync -vaz --delete  --exclude=logs --exclude=log  192.168.3.100:~/lucene-shared-lib ~/

## 查找配置文件中与测试环境有关的信息
[hadoop@h81 ~]$ find */conf | while read conf; do if grep -E 'h100|192.168.3.100' $conf > /dev/null; then echo $conf;fi;done
hadoop-1.0.0/conf/mapred-site.xml
hadoop-1.0.0/conf/core-site.xml
hadoop-1.0.0/conf/masters
hbase-0.92.1/conf/hbase-site.xml
katta-core-0.6.4/conf/katta.zk.properties
katta-core-0.6.4/conf/masters
lucene/conf/config-env.sh
[hadoop@h81 ~]$ 

## 替换为新的nameode的hostname
find */conf | while read conf; do if grep -E 'h100|192.168.3.100' $conf > /dev/null; then  cat $conf | sed s/h100/h81/g > /tmp/conf && cat /tmp/conf > $conf ;fi;done

## 修改其他配置
vi hadoop-1.0.0/conf/slaves
vi hbase-0.92.1/conf/regionservers
vi katta-core-0.6.4/conf/nodes

## 确认是否还有原有集群的余孽!
find */conf | while read conf; do if grep -E 'h10' $conf > /dev/null; then echo $conf;fi;done

## 拷贝集群程序到datanodes
for host in $hosts
do
	if [ $host != $namenode ]
	then
		rsync -vaz --delete  --exclude=logs --exclude=log  ~/hadoop-1.0.0 $host:~/ &
		rsync -vaz --delete  --exclude=logs --exclude=log  ~/hbase-0.92.1 $host:~/ &
		rsync -vaz --delete  --exclude=logs --exclude=log  ~/katta-core-0.6.4 $host:~/ &
		rsync -vaz --delete  --exclude=logs --exclude=log  ~/lucene-shared-lib $host:~/ &
	fi
done

 

在批处理文件内容替换时,使用到了临时文件,当然也可以先把文件备份后,再写入新文件中:

 

ssh $host \
mv /etc/sysconfig/network /etc/sysconfig/network.back && \ 
cat /etc/sysconfig/network.back | sed s/localhost.localdomain/$host/g > /etc/sysconfig/network

 

但,先备份再写入新文件 有个缺陷就是原始文件的权限会丢失!

 

最后你懂的:

 

 hadoop-1.0.0/bin/hadoop namenode -format
 hadoop-1.0.0/bin/start-all.sh

 

通过for,scp, ssh, sed, awk,rsync,vi, find,ssh-copy-id, mkdir等命令仅在namenode上完成集群的部署工作。

 

 

------新增节点,又不想修改配置文件!可以用下面的方法启动新节点:

[hadoop@h101 ~]$ hadoop-1.0.0/bin/hadoop-daemon.sh start datanode 

starting datanode, logging to /home/hadoop/hadoop-1.0.0/libexec/../logs/hadoop-hadoop-datanode-h101.out

[hadoop@h101 ~]$ hadoop-1.0.0/bin/hadoop-daemon.sh start tasktracker

starting tasktracker, logging to /home/hadoop/hadoop-1.0.0/libexec/../logs/hadoop-hadoop-tasktracker-h101.out

[hadoop@h101 ~]$ 

 

-------

如果你举得sed修改麻烦,要备份,在写回!其实有sed -i(--in-place)参数提供了直接写入的功能。

分享到:
评论

相关推荐

    Hadoop分布式搭建配置/Hive/HBase

    本文将围绕“Hadoop分布式搭建配置/Hive/HBase”这一主题,深入探讨Hadoop生态系统中的关键组件,并结合提供的书籍资源进行讲解。 首先,Hadoop是一个开源的分布式计算框架,它允许在大规模集群上处理和存储大量...

    Hadoop伪分布式.rar

    在伪分布式模式下,Hadoop会在单个节点上模拟分布式集群,允许所有Hadoop服务在同一台机器上运行,这对于学习和调试非常方便。 另一个文件是“jdk-8u281-linux-x64安装包.tar.gz”,这代表了Java Development Kit ...

    基于Hadoop大数据集群的搭建.docx

    第三章则详细描述了大数据集群环境的搭建过程,包括硬件需求、软件安装、配置优化等步骤。在硬件层面,Hadoop集群通常需要多台服务器或虚拟机,每台机器应有足够的内存和存储空间。软件安装涉及Hadoop的下载、编译和...

    最详细的Hadoop环境搭建

    - Hadoop本地模式主要用于测试和开发,便于快速搭建环境。 - 安装步骤包括下载Hadoop源代码包、解压并配置环境变量。 **2. Hadoop伪分布式模式安装** - 伪分布式模式允许在单台机器上模拟分布式环境,是学习...

    安装hadoop集群

    本文将详细介绍在多节点环境下搭建Hadoop集群的过程,包括硬件准备、软件安装、配置优化等多个方面,旨在帮助读者掌握Hadoop集群的实际部署技巧。 #### 二、Hadoop集群概述 Hadoop集群主要由两个核心组件构成:...

    Hadoop开发环境搭建

    标题“Hadoop开发环境搭建”指的是配置一个适合进行Hadoop应用开发的本地或集群环境。这个过程通常涉及安装Java运行环境、下载Hadoop二进制包、配置环境变量、初始化HDFS以及启动Hadoop服务。在这个过程中,我们需要...

    Hadoop-Spark集群环境搭建及疏散星团NGC2266数据处理1

    《大数据原理与应用》实验作业 2020/2021 年 第一学期:Hadoop/Spark 集群环境搭建及疏散星团NGC2266的数据处理 一、PySpark 环境搭建 1、Python(推荐使用 Anaconda+PyCharm) Python 是数据处理的基础,而...

    基于CentOS 7的Hadoop集群配置的研究与实现.docx

    Hadoop集群通常包含NameNode(主节点)、DataNode(数据节点)、ResourceManager(资源管理器)和NodeManager(节点管理器)等组件,共同构成了一个完整的分布式计算环境。 ### 第三章 CentOS 7系统配置 3.1 **...

    HBase完全分布式搭建-new.docx

    本文档详细介绍了如何在已有Hadoop集群的基础上搭建HBase的完全分布式集群。HBase作为一款高性能、可扩展的分布式数据库,非常适合处理大规模非结构化数据。通过本指南,您将能够顺利地在您的环境中部署并运行HBase...

    史上最详细的Hadoop环境搭建

    - **定义**:伪分布式模式允许在一台物理机器上模拟多台机器的集群环境。 - **特点**:尽管各个组件在单独的进程中运行,但它们都在同一台物理机器上运行。 - **用途**:适合于开发和测试阶段,可以帮助开发者更好地...

    hadoop集群搭建——JDK的安装

    ### hadoop集群搭建——JDK的安装 #### 实验背景及目标 在部署Hadoop集群的过程...通过本次实验,学生不仅掌握了在分布式环境中安装JDK的方法,还学会了如何验证安装结果,为后续的Hadoop集群搭建打下了坚实的基础。

    Spark实验:Standalone模式安装部署(带答案)1

    1. 实验描述:本实验旨在搭建一个基于Standalone模式的Spark集群,包括解压安装包、配置环境变量、启动集群及验证安装效果。 2. 实验环境:使用3台虚拟机,操作系统为Centos 7.5,Hadoop版本为2.7.3,Spark版本为...

    hadoop3.3.0-winutils所有bin文件

    3. `yarn`: 用于管理和调度YARN(Yet Another Resource Negotiator)资源的命令行工具,YARN是Hadoop的第二代资源管理系统。 4. `mapred`: MapReduce的命令行工具,MapReduce是Hadoop的分布式计算模型,用于处理和...

    Hadoop大数据开发基础-PPT课件.rar

    接着,通过“搭建Hadoop完全分布式集群”和“安装配置虚拟机”的内容,指导学员如何在本地或云端搭建一个完整的Hadoop集群,这是实际操作Hadoop的前提。 第三章“Hadoop基础操作”涵盖了Hadoop命令行工具的使用,如...

    Hadoop的各种资源文件

    通过阅读,你可以了解到如何快速搭建Hadoop环境,并进行实际的数据处理任务。 其次,《hadoop入门教程.docx》可能是针对Hadoop初学者的基础教程,它可能涵盖了Hadoop的核心概念,如HDFS(Hadoop分布式文件系统)和...

    Hadoop入门教程

    学习Hadoop的第一步通常是搭建本地或集群环境。这涉及安装Java运行环境、配置Hadoop环境变量、修改Hadoop配置文件等步骤。《Hadoop入门教程》将详细讲解这些过程,以帮助初学者顺利启动Hadoop。 六、Hadoop编程 ...

Global site tag (gtag.js) - Google Analytics