`

hadoop、hbase自动安装的脚本与步骤

阅读更多
要在多台服务器上搭建hadoop、hbase各种配置很繁琐,自动地安装既省时又省力。
    参考了这篇博客:http://www.cnblogs.com/tlm1992/p/tlm_hadoop_auto.html,并对其进行了一些修改。


     前提:安装了ssh
     处理流程:
     1.修改配置文件
     (1)修改hadoop的配置文件,修改hadoop/hadoop-1.2.1/conf/下的
hdfs-site.xml,mapred-site.xml,core-site.xml 这三个文件,不需要修改hadoop/hadoop-1.2.1/conf/里的slaves和masters文件,脚本会根据hosts的设置自动修改。
     (2)修改hbase的配置文件,修改hadoop/hbase-0.94.16/conf下的hbase-site.xml,不需要修改hadoop/hbase-0.94.16/conf/regionservers文件,脚本会根据hosts的设置自动修改。

     2.修改hadoop/setup文件夹里的hosts文件来设置所有节点的名字和ip
     3.编辑setHadoopOnce.sh的loginName变量(设置登录账号),pw变量(设置节点的密码)。账号、密码各节点必须都是同一个。此外还要修改slaveNum变量。
     4.利用终端cd到setup这个文件夹,执行setHadoopOnce.sh脚本。
 


    
     全部代码:
    1.setHadoopOnce.sh,该文件是文件脚本执行的起点
#!/bin/bash
#修改密码
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:.
export PATH

pw=123456
loginName=hadoop
master=master
slave=slave
slaveNum=1
set timeout 100000
> ../hadoop-1.2.1/conf/masters
> ../hadoop-1.2.1/conf/slaves
#update local file
while read line
do
	echo $line
	ip=`echo $line | cut -d" " -f1`
	name=`echo $line | cut -d" " -f2`
	if [ ! -z $ip ]; then
		echo $name
		if [[ $name == maste* ]]; then
		echo "$name" >> ../hadoop-1.2.1/conf/masters
		elif [[ $name == slave* ]]; then
		echo "$name" >> ../hadoop-1.2.1/conf/slaves
		echo "$name" >> ../hbase-0.94.16/conf/regionservers
		fi
	fi
done < hosts
#upload file to all nodes
while read line
do
	ip=`echo $line | cut -d" " -f1`
	name=`echo $line | cut -d" " -f2`
	if [ ! -z $ip ]; then
		expect copyDataToAll.exp $ip $loginName $pw
		expect setForAll.exp $ip $loginName $pw
	fi
done < hosts

while read line
do
	ip=`echo $line | cut -d" " -f1`
	name=`echo $line | cut -d" " -f2`
	if [ ! -z $ip ]; then
		if [[ $name == maste* ]]; then
			expect setForMaster.exp $ip $loginName $pw
		fi
	fi
done < hosts

while read line
do
	ip=`echo $line | cut -d" " -f1`
	name=`echo $line | cut -d" " -f2`
	if [ ! -z $ip ]; then		 
	     expect setForSSH.exp $ip $loginName $pw
	fi
done < hosts


2.copyDataToAll.exp在setHadoopOnce.sh中的36行被调用,以复制文件到所有节点。
#!/usr/bin/expect
proc usage {} {
    puts stderr "usage: $::argv0 ip usrname password"
    exit 1
}
if {$argc != 3} { usage }
set hostip [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
set timeout 100000
spawn scp -r ../../hadoop ${username}@${hostip}:~
expect {
	"*assword:" {
		send "$password\n"
		expect eof
	}
	expect eof
}

3.setForAll.exp为所有节点进行进一步的配置工作,在setHadoopOnce.sh中的37行被调用。
#!/usr/bin/expect
proc usage {} {
    puts stderr "usage: $::argv0 ip usrname password"
    exit 1
}
proc connect {pwd} {
	expect {
		"*(yes/no)?" {
			send "yes\n"
			expect "*assword:" {
				send "$pwd\n"
				expect {
					"*Last login:*" {
						return 0
					}
				}
			}
		}
		"*assword:" {
			send "$pwd\n"
			expect {
				"*Last login:*" {
					return 0
				}
			}
		}
		"*Last login:*" {
			return 0
		}
	}
	return 1
}
if {$argc != 3} { usage }
set hostip [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
set timeout 100000

spawn ssh ${username}@${hostip}
if {[connect $password]} {
	exit 1
}
#set host
send "sudo bash ~/hadoop/setup/addHosts.sh\r"
expect "*assword*"
send "$password\r"
expect "*ddhostsucces*"
sleep 1

send "ssh-agent bash ~/hadoop/setup/sshGen.sh\n"
expect {
	"*(yes/no)?" {
		send "yes\n"
		exp_continue
	}
	"*verwrite (y/n)?" {
		send "n\n"
		exp_continue
	} 
	"*nter file in which to save the key*" {
		send "\n"
		exp_continue
	}
	"*nter passphrase*" {
		send "\n"
		exp_continue
	}
	"*nter same passphrase again*" {
		send "\n"
		exp_continue
	}
	"*our public key has been saved*" {
		exp_continue
	}
	"*etsshGenSucces*" {
		sleep 1
	}
}

send "bash ~/hadoop/setup/setEnvironment.sh\n"
expect "*etEnvironmentSucces*"
sleep 1

send "exit\n"

expect eof



3.1 addHosts.sh在setForAll.exp中被调用,用于设置节点的hosts文件。
#!/bin/bash
hadoopRoot=~/hadoop

cat $hadoopRoot/setup/hosts >> /etc/hosts
echo "addhostsuccess"

3.2 sshGen.sh在setForAll.sh中被调用,用于生成sshkey.
#!/bin/bash
sshPath=~/.ssh
setupPath=~/hadoop/setup
rm "$sshPath"/authorized_keys
sleep 1
ssh-keygen -t rsa
cat "$sshPath"/id_rsa.pub >> "$sshPath"/authorized_keys
ssh-add
echo "setsshGenSuccess"

3.3 setEnviroment.sh 在setForAll.sh中被调用,用于设置环境变量
#!/bin/bash
hadoopRoot=~/hadoop
hadoopPath=$hadoopRoot/hadoop-1.2.1
hbasePath=$hadoopRoot/hbase-0.94.16
setupPath=$hadoopRoot/setup
JAVA_VERSION=`java -version 2>&1 | awk '/java version/ {print $3}'|sed 's/"//g'|awk '{if ($1>=1.6) print "ok"}'`

if [ "$JAVA_VERSION"x != "okx" ]; then
	cat "$setupPath"/jdkenv >> ~/.bashrc       
	sleep 1
	source ~/.bashrc
	sleep 1
fi


 echo "export JAVA_HOME=~/hadoop/jdk1.7.0" >> "$hadoopPath"/conf/hadoop-env.sh
 echo "export JAVA_HOME=~/hadoop/jdk1.7.0" >> "$hbasePath"/conf/hbase-env.sh


Hadoop_Version=`hadoop version|awk '/Hadoop/ {print $2}'|awk '{if ($1>=1.0) print "ok"}'`

if [ "$Hadoop_Version"x != "okx" ]; then
	cat "$setupPath"/hadoopenv >> ~/.bashrc
	sleep 1
	source ~/.bashrc
	sleep 1
fi

echo "setEnvironmentSuccess"

4 setForMaster.exp 远程sshsetForMaster.sh,配置无密码登录
#!/usr/bin/expect
proc usage {} {
    puts stderr "usage: $::argv0 ip usrname password"
    exit 1
}
proc connect {pwd} {
	expect {
		"*(yes/no)?" {
			send "yes\n"
			expect "*assword:" {
				send "$pwd\n"
				expect {
					"*Last login:*" {
						return 0
					}
				}
			}
		}
		"*assword:" {
			send "$pwd\n"
			expect {
				"*Last login:*" {
					return 0
				}
			}
		}
		"*Last login:*" {
			return 0
		}
	}
	return 1
}

if {$argc != 3} { usage }
set hostip [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
set timeout 100000
spawn ssh ${username}@${hostip}
if {[connect $password]} {
	exit 1
}

send "bash  ~/hadoop/setup/setForMaster.sh\n"
expect {
	"*etForMasterSucces*" {
		sleep 1
		
	}
	"*assword*" {
		send "$password\n"
		exp_continue
	}
	"*(yes/no)?" {
		send "yes\n"
		exp_continue
	}
}

  



4.1 setForMaster.sh
#!/bin/bash

while read line
do
	ip=`echo $line | cut -d" " -f1`
	name=`echo $line | cut -d" " -f2`
	if [ ! -z $ip ]; then
		if [[ $name == slave* ]]; then
			scp $ip:~/.ssh/authorized_keys ~/tmpkey
			cat ~/tmpkey >> ~/.ssh/authorized_keys
		fi
	fi
done < ~/hadoop/setup/hosts


sleep 1

rm -f ~/tmpkey
while read line
do
	ip=`echo $line | cut -d" " -f1`
	name=`echo $line | cut -d" " -f2`
	if [ ! -z $ip ]; then
		if [[ $name == slave* ]]; then
			scp ~/.ssh/authorized_keys $ip:~/.ssh/authorized_keys  
                                                                
		fi 
	fi
done < ~/hadoop/setup/hosts

echo "setForMasterSuccess"




5.setForSSH.exp配置了SSH,可能由于.ssh 目录和~/.ssh/authorized_keys权限不对,还是需要输入密码。因此修改权限。
#!/usr/bin/expect
proc usage {} {
    puts stderr "usage: $::argv0 ip usrname password"
    exit 1
}
proc connect {pwd} {
	expect {
		"*(yes/no)?" {
			send "yes\n"
			expect "*assword:" {
				send "$pwd\n"
				expect {
					"*Last login:*" {
						return 0
					}
				}
			}
		}
		"*assword:" {
			send "$pwd\n"
			expect {
				"*Last login:*" {
					return 0
				}
			}
		}
		"*Last login:*" {
			return 0
		}
	}
	return 1
}
if {$argc != 3} { usage }
set hostip [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
set timeout 100000

spawn ssh ${username}@${hostip}
if {[connect $password]} {
	exit 1
}
sleep 1

send "bash ~/hadoop/setup/setForSSH.sh\n"
expect {
  "*ForSSHSuccess*" { 
   sleep 1
   
}
}

send "exit\n"
expect eof


5.1setForSSH.sh
#!/bin/bash 
chmod 700  ~/.ssh
chmod 644 ~/.ssh/authorized_keys
 
sleep 1

echo "setForSSHSuccess"


文件目录:
本想上传源代码,发现文件不能超过10M,无法上传。


附件中是文件的目录,上面的linux脚本在setup目录下,其他的hbase,hadoop,jdk安装文件请自己下载吧。
  • 大小: 33.9 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Hadoop&Hbase安装完美教程

    在IT行业中,大数据处理与分析是至关重要的领域,而Hadoop和HBase是其中的两大核心组件。Hadoop是一个开源的分布式计算框架,它允许在大规模集群上存储和处理大量数据,而HBase是一个基于Hadoop的数据存储系统,提供...

    windows中安装Hadoop与Hbase

    在Windows系统中安装和配置Hadoop和Hbase涉及以下步骤和知识点: 1. 准备工作:包括下载安装包。Hadoop可以从Apache官网下载稳定版,Hbase也从官网下载稳定版,而JDK则可以从Oracle官网获取。 2. 环境配置:需要解...

    第10章Hadoop与HBase分布式集群安装与配置.pdf

    在进行Hadoop与HBase的分布式集群安装与配置时,需要特别注意版本兼容问题,配置文件中的参数设置以及网络环境配置的正确性。一旦配置错误,可能会导致集群无法启动,或者运行不稳定。因此,在实际操作过程中,建议...

    hadoop集群安装脚本

    自动化安装多系统多软件测试版可能意味着这个脚本不仅能安装Hadoop和Zookeeper,还可能涵盖了其他相关的大数据组件,如Hive、Spark、HBase等,提供了一站式的安装解决方案。这样的脚本大大减少了手动配置的时间,...

    zookeeper+hadoop+hbase.rar

    6. 【6、Hbase集群安装部署.txt】:HBase的安装和集群配置,包括设置HBase与Hadoop的交互、配置HBase的region server、master节点等。 这个压缩包中的所有文件合在一起,构成了一个完整的Hadoop、Zookeeper和HBase...

    hadoop2.2+hbase0.96+hive0.12安装整合详细高可靠文档及经验总结

    - **Shell脚本编写**:用于自动化Hadoop的安装配置过程。 - **文档配置**:正确配置Hadoop的核心配置文件,如`core-site.xml`, `hdfs-site.xml`, `mapred-site.xml`, `yarn-site.xml`等。 **2. 安装步骤详解:** -...

    Hadoop与HBase自学笔记

    - **下载与安装**:首先从官方网站下载安装程序setup.exe,然后按照步骤进行安装。 - 选择安装源:推荐选择`install from internet`。 - 设置安装路径:自定义安装路径。 - 选择安装源镜像:可以选择多个镜像以...

    Hbase 安装与基本使用

    通过以上步骤,你应该已经掌握了HBase的基本安装和使用方法。然而,HBase的复杂性远不止于此,如表设计、故障恢复、监控及性能优化等方面都需要深入学习和实践。在实际应用中,根据业务需求选择合适的数据库和优化...

    hadoop+hbase+hive集群搭建

    构建Hadoop+HBase+Hive集群是一项复杂而细致的工作,涉及到时间同步、网络配置、用户管理、软件安装与配置等多个方面。每一环节都需精心设计和实施,才能确保集群的高效、稳定运行。上述步骤涵盖了从基础设施搭建到...

    Hadoop技术-HBase安装与配置.pptx

    Hadoop技术-HBase安装与配置是一项关键的任务,尤其对于那些希望构建大数据处理平台的IT专业人员来说。HBase,作为Apache Hadoop生态系统中的一个分布式、高性能的NoSQL数据库,为半结构化数据提供了高可靠性和低...

    hadoop中安装hbase及创建表等.docx

    以上就是Hadoop中安装HBase的基本步骤,以及如何使用HBase Shell创建表和插入数据,以及通过Java API进行数据操作。理解并掌握这些基本操作是进行大数据处理和分析的基础。在实际项目中,根据需求,还需要考虑集群...

    Hadoop2.4.1上自编译安装HBase0.98.5

    在本文中,我们将深入探讨如何在Hadoop 2.4.1环境中自编译和安装HBase 0.98.5。这是一个重要的步骤,因为HBase是一个分布式、基于列族的NoSQL数据库,它构建在Hadoop之上,提供高吞吐量的数据访问。Hadoop 2.4.1是...

    hbase的安装与简单操作.doc

    ### HBase的安装与简单操作知识点详解 #### HBase安装步骤及注意事项 ##### 版本选择与准备 - **版本匹配**:选择合适的HBase版本时,必须确认它与所使用的Hadoop、ZooKeeper以及JDK版本兼容。例如,HBase 1.4.6与...

    Hbase和Hadoop JMX监控实战

    HBase与Hadoop的结合,使得HBase可以在Hadoop的分布式环境中高效地处理大规模数据。 JMX允许开发者在Java应用中定义管理对象(MBeans),这些对象可以暴露有关应用状态的信息,并提供操作来改变应用的行为。对于...

    HBase1.4.13安装步骤

    本文将详细解析HBase 1.4.13的安装步骤,以及如何进行单机模式和伪分布式模式的配置,同时也会涉及使用HBase Java API进行编程实践。 首先,安装HBase 1.4.13的过程从获取安装包开始,通常推荐从可靠的镜像源下载,...

    hadoop2.2 hbase0.96 hive0.12安装整合详细高可靠文档及经验总结

    ### hadoop2.2、hbase0.96与hive0.12的安装整合及高可靠部署 #### 一、Hadoop2.2的安装与配置 **1.1 安装前准备** - **操作系统环境**: Linux系统(推荐CentOS 6.x) - **JDK安装**: Hadoop依赖于JDK运行,需先...

    hadoop2.2+hbase0.96+hive0.12 安装文档

    综合以上信息,用户在进行hadoop2.2+hbase0.96+hive0.12的集成安装时,应该详细检查各个组件的版本兼容性,确保系统权限设置正确,按照实践指南执行相关配置步骤,并正确设置和使用MySQL数据库作为元数据存储。...

    一键安装Hadoop.zip

    "一键安装Hadoop"脚本是针对Hadoop部署过程的简化工具,通常包含自动配置环境变量、安装依赖、设置Hadoop配置文件等步骤。这个脚本默认安装的是Hadoop-3.2.1版本,这是Hadoop社区的一个稳定版本,具有更好的性能和...

    hadoop&hbase;高可用测试环境搭建

    - 安装HBase,确保版本与Hadoop兼容。 - 配置`hbase-site.xml`,设置HBase的Root目录、ZooKeeper地址以及Master节点的HA。 - 配置`regionservers`文件,列出所有RegionServer节点。 4. **启动和测试** - 启动...

Global site tag (gtag.js) - Google Analytics