本文以三台机器组成的一个Hadoop集群的安装与配置为例。
三台机器的信息如下:
hostname 角色 IP
dc01 mast 192.168.68.57
dc02 slave 192.168.68.58
dc03 slave 192.168.68.59
用户名均为root。
1.安装JDK1.6并配置好java环境,参考:
CentOS6 安装Tomcat7 中的安装jdk部分
2.配置centos的SSH无密码登录:
ssh-keygen -t dsa -P "" -f ~/.s sh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
测试是否配置成功:
ssh localhost
第一次运行会提示你是否连接,输入yes回车即可。
修改机器名(以dc01为例,其他两台机器方法相同):
vi /etc/sysconfig/network-scripts/ifcfg-eth0
增加一行:
HOSTNAME=dc01
保存
vi /etc/sysconfig/network
HOSTNAME修改为dc01
保存
vi /etc/hosts
增加以下信息:
192.168.68.57 dc01
192.168.68.58 dc02
192.168.68.59 dc03
保存
至此,hostname修改完毕。重启机器使得hostname生效。
配置dc01无密码登录dc02、dc03:
在dc01中
scp ./.ssh/authorized_keys dc02:~/.ssh/
scp ./.ssh/authorized_keys dc03:~/.ssh/
测试无密码登录配置是否成功:
ssh dc02
ssh dc03
下载hadoop,这里使用的是hadoop-1.0.3
tar -xzvf hadoop-1.0.3.tar.gz
mv hadoop-1.0.3 /usr/local/hadoop
3. 配置Hadoop:
关闭防火墙:
service iptables stop(重启失效)
chkconfig iptables off(重启生效)
配置NTP服务:
修改ntp.conf配置文件
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 1.cn.pool.ntp.org
server 1.asia.pool.ntp.org
server 0.asia.pool.ntp.org
用本机器与互联网时钟同步,即作为集群中其他机器的ntp服务器
同理,在其他机器中修改ntp.conf配置文件
server ntpserver
配置hadoop:
echo $JAVA_HOME
把JAVA_HOME 的值拷贝一下,
修改hadoop-env.sh
vim /usr/local/hadoop/conf/hadoop-env.sh
找到:
# The java implementation to use. Required.
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
在下面添加一行:
export JAVA_HOME=/usr/java/jdk1.6.0_37
#将hbase中的jar包加入到hadoop的classpath中去:
#设置hbase的安装目录:
export HBASE_HOME=/usr/local/hbase
# Extra Java CLASSPATH elements. Optional.
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HBASE_HOME/hbase-0.94.1.jar:$HBASE_HOME/hbase-0.94.1-test.jar:$HBASE_HOME/conf:${HBASE_HOME}/lib/zookeeper-3.4.3.jar:${HBASE_HOME}/lib/protobuf-java-2.4.0a.jar:${HBASE_HOME}/lib/*
保存
修改core-site.xml
vim /usr/local/hadoop/conf/core-site.xml
将文件改为如下:
fs.default.name
hdfs://dc01:9000
保存
修改mapred-site.xml
vim /usr/local/hadoop/conf/mapred-site.xml
mapred.job.tracker
dc01:9001
保存
修改masters
vim /usr/local/hadoop/conf/masters
改为:
dc01
保存
修改slaves
vim /usr/local/hadoop/conf/slaves
改为:
dc02
dc03
保存
修改HDFS
vim /usr/local/hadoop/conf/hdfs-site.xml
dfs.name.dir
/opt/hdfs/name
true
dfs.data.dir
/opt/hdfs/data
true
dfs.permissions
false
创建HDFS的存储目录:
分别到三台机器上创建以下目录:
第一台:
mkdir /opt/hdfs/
mkdir /opt/hdfs/name/
mkdir /opt/hdfs/data/
第二台:
ssh dc02
mkdir /opt/hdfs/
mkdir /opt/hdfs/name/
mkdir /opt/hdfs/data/
第三台:
ssh dc03
mkdir /opt/hdfs/
mkdir /opt/hdfs/name/
mkdir /opt/hdfs/data/
至此,dc01已经配置完毕,将dc01的hadoop的文件拷贝到其他两台机器:
scp -r /usr/local/hadoop dc02:/usr/local/
scp -r /usr/local/hadoop dc03:/usr/local/
至此整个Hadoop集群配置完毕,下面来启动Hadoop。
4. 启动Hadoop:
将hadoop的bin目录添加至当前用户的.bash_profile中:
cd ~
vim .bash
找到PATH一行,在改行后面加入:
:/usr/local/hadoop/bin/:/usr/local/hbase/bin/
保存并使其立即生效:
source .bash_profile
这样以后可以在任何目录中运行hadoop命令
cd /usr/local/hadoop/bin/
./hadoop namenode -format
./start-all.sh
关闭系统防火墙(最好直接停止防火墙服务,或者可以增加允许通过的端口,具体端口我还没来得及查找)
service iptables stop
添加防火墙规则,允许通过网页查看hadoop集群的状态.
vi /etc/sysconfig/iptables
增加下面两行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 50030 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 50070 -j ACCEPT
保存。
重启iptables服务:
service iptables restart
通过浏览器输入下面地址查看集群的状态:
http://192.168.68.57:50070
通过浏览器输入下面地址查看Map/Reduce状态:
http://192.168.68.57:50030
我的打开后是正在初始化,一直是这样,不知道是什么原因(已解决,关掉防火墙即可)。
成功后:
5. 安装Hbase:
下载Hbase,本文使用的Hbase版本为:hbase-0.94.1.tar.gz
将文件上传至服务器dc01,解压缩:
tar -xzvf hbase-0.94.1.tar.gz
cp -r hbase-0.94.1 /usr/local/
改名字:
mv /usr/local/hbase-0.94.1 /usr/local/hbase
修改hbase配置:
cd /usr/local/hbase/conf
vim hbase-env.sh
将内容修改为下面的配置:
找到 #export JAVA_HOME=
修改为: export JAVA_HOME=/usr/java/jdk1.6.0_37
确保 export HBASE_MANAGES_ZK=true
保存
vim hbase-site.xml
将内容修改为以下部分:
hbase.rootdir
hdfs://dc01:9000/hbase
hbase.cluster.distributed
true
hbase.master
dc01:60000
hbase.zookeeper.quorum
dc01,dc02,dc03
hbase.zookeeper.property.dataDir
/usr/local/hbase/zookeeper
保存
vim regionservers
将内容修改为:
dc02
dc03
保存
至此,Hbase配置完毕.
将Hbase拷贝到其他机器:
scp -r /usr/local/hbase dc02:/usr/local
scp -r /usr/local/hbase dc03:/usr/local
到现在,hbase安装完毕。
启动hbase:
start-hbase.sh
等脚本执行完毕后,到各个机器上查看下hbase安装是否成功:
master:
运行:jps
25483 Jps
25275 HMaster
9804 NameNode
10039 JobTracker
25222 HQuorumPeer
9966 SecondaryNameNode
说明hadoop和hbase运行均正常,
dc02:
运行jps:
19232 Jps
4135 DataNode
19107 HRegionServer
19033 HQuorumPeer
4229 TaskTracker
说明一切正常。
dc03:
运行jps:
jps
3557 DataNode
18484 HQuorumPeer
18720 Jps
18565 HRegionServer
3651 TaskTracker
一切正常。
在dc01上运行:hbase shell查看hbase是否正常:
hbase shell
HBase Shell; enter 'help' for list of supported commands.
Type "exit" to leave the HBase Shell
Version 0.94.1, r1365210, Tue Jul 24 18:40:10 UTC 2012
hbase(main):001:0>
说明进入了hbase的shell环境,现在用list命令来看一下hbase中有哪些表:
hbase(main):001:0> list
TABLE
0 row(s) in 0.9550 seconds
hbase(main):002:0>
说明hbase运行是正常的。
至此,可以说明hbase安装并启动成功了。
下面为hbase的一些基本操作,可以忽略。
Hbase基本操作:
接下来创建一张表:
hbase(main):002:0> create 'user_info','name'
0 row(s) in 1.2780 seconds
hbase(main):003:0>
创建成功,查看一下表是否存在:
hbase(main):003:0> list
TABLE
user_info
1 row(s) in 0.0500 seconds
hbase(main):004:0>
表果然存在。
现在往表中插入一条数据:
put 'user_info','1','name:','Tom'
插入完毕。
现在查询是否表中存在数据:
输入:scan 'user_info'
显示:
ROW COLUMN+CELL
1 column=name:, timestamp=1376370874591, value=Tom
删除表:
删除hbase表时,需要先disable '表名称',然后在drop '表名称':
输入:disable 'user_info'
显示:0 row(s) in 2.1390 seconds
drop 'user_info'
0 row(s) in 1.4880 seconds
查询该表是否还存在(用list)命令:
输入:list
显示:
TABLE
0 row(s) in 0.0320 seconds
说明该表已经被我删除。
至此,所有工作圆满结束。
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com