万事开头难,第一次搭建集群环境确实是比较难,比较苦恼。但,也不是说第二次搭建集群环境就会容易。
一般,第一次操作我们都会在测试环境中进行,当我们要搭建正式的环境时,是否还要像第一次那样搭建环境呢?
在搭了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生态系统中的关键组件,并结合提供的书籍资源进行讲解。 首先,Hadoop是一个开源的分布式计算框架,它允许在大规模集群上处理和存储大量...
在伪分布式模式下,Hadoop会在单个节点上模拟分布式集群,允许所有Hadoop服务在同一台机器上运行,这对于学习和调试非常方便。 另一个文件是“jdk-8u281-linux-x64安装包.tar.gz”,这代表了Java Development Kit ...
第三章则详细描述了大数据集群环境的搭建过程,包括硬件需求、软件安装、配置优化等步骤。在硬件层面,Hadoop集群通常需要多台服务器或虚拟机,每台机器应有足够的内存和存储空间。软件安装涉及Hadoop的下载、编译和...
- Hadoop本地模式主要用于测试和开发,便于快速搭建环境。 - 安装步骤包括下载Hadoop源代码包、解压并配置环境变量。 **2. Hadoop伪分布式模式安装** - 伪分布式模式允许在单台机器上模拟分布式环境,是学习...
本文将详细介绍在多节点环境下搭建Hadoop集群的过程,包括硬件准备、软件安装、配置优化等多个方面,旨在帮助读者掌握Hadoop集群的实际部署技巧。 #### 二、Hadoop集群概述 Hadoop集群主要由两个核心组件构成:...
标题“Hadoop开发环境搭建”指的是配置一个适合进行Hadoop应用开发的本地或集群环境。这个过程通常涉及安装Java运行环境、下载Hadoop二进制包、配置环境变量、初始化HDFS以及启动Hadoop服务。在这个过程中,我们需要...
《大数据原理与应用》实验作业 2020/2021 年 第一学期:Hadoop/Spark 集群环境搭建及疏散星团NGC2266的数据处理 一、PySpark 环境搭建 1、Python(推荐使用 Anaconda+PyCharm) Python 是数据处理的基础,而...
Hadoop集群通常包含NameNode(主节点)、DataNode(数据节点)、ResourceManager(资源管理器)和NodeManager(节点管理器)等组件,共同构成了一个完整的分布式计算环境。 ### 第三章 CentOS 7系统配置 3.1 **...
本文档详细介绍了如何在已有Hadoop集群的基础上搭建HBase的完全分布式集群。HBase作为一款高性能、可扩展的分布式数据库,非常适合处理大规模非结构化数据。通过本指南,您将能够顺利地在您的环境中部署并运行HBase...
- **定义**:伪分布式模式允许在一台物理机器上模拟多台机器的集群环境。 - **特点**:尽管各个组件在单独的进程中运行,但它们都在同一台物理机器上运行。 - **用途**:适合于开发和测试阶段,可以帮助开发者更好地...
### hadoop集群搭建——JDK的安装 #### 实验背景及目标 在部署Hadoop集群的过程...通过本次实验,学生不仅掌握了在分布式环境中安装JDK的方法,还学会了如何验证安装结果,为后续的Hadoop集群搭建打下了坚实的基础。
1. 实验描述:本实验旨在搭建一个基于Standalone模式的Spark集群,包括解压安装包、配置环境变量、启动集群及验证安装效果。 2. 实验环境:使用3台虚拟机,操作系统为Centos 7.5,Hadoop版本为2.7.3,Spark版本为...
3. `yarn`: 用于管理和调度YARN(Yet Another Resource Negotiator)资源的命令行工具,YARN是Hadoop的第二代资源管理系统。 4. `mapred`: MapReduce的命令行工具,MapReduce是Hadoop的分布式计算模型,用于处理和...
接着,通过“搭建Hadoop完全分布式集群”和“安装配置虚拟机”的内容,指导学员如何在本地或云端搭建一个完整的Hadoop集群,这是实际操作Hadoop的前提。 第三章“Hadoop基础操作”涵盖了Hadoop命令行工具的使用,如...
通过阅读,你可以了解到如何快速搭建Hadoop环境,并进行实际的数据处理任务。 其次,《hadoop入门教程.docx》可能是针对Hadoop初学者的基础教程,它可能涵盖了Hadoop的核心概念,如HDFS(Hadoop分布式文件系统)和...
学习Hadoop的第一步通常是搭建本地或集群环境。这涉及安装Java运行环境、配置Hadoop环境变量、修改Hadoop配置文件等步骤。《Hadoop入门教程》将详细讲解这些过程,以帮助初学者顺利启动Hadoop。 六、Hadoop编程 ...