这里还是用之前的配置:hadoop 2.6.0 和 ubuntu 14.04
补充一个小技巧:查看进程 ps aux | grep xxx
1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有程序。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t 指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u 以用户为主的格式来显示程序状况。
13)ps x 显示所有程序,不以终端机来区分。
ps是显示当前状态处于running的进程,grep表示在这些里搜索,而ps aux是显示所有进程和其状态。
$ ps aux | grep amoeba
查到amoeba的进程
$ kill -s 9 pid
今天突然出现了一点小状况,我有一台机器vmware 里的 ubuntu server 怎么都连不上了
检查原因尽然是 没有连上网,ifconfig 里也没有对应ip
只有inet 6 address 网上说要重新分配一下地址才好使(sudo dhclient),可是我试过以后并没用
没办法,选择vmware --编辑--虚拟网络编辑器--选中VMnet0 选择恢复默认配置,然后等待一段时间后,
在--桥接到:---realtek PCIe ....--然后点击---应用---确定
这些都要在虚拟机poweroff 的情况下才能有用
重启虚拟机--结果很意外,网是连上了,可是ip 改动了 不是原来的ip ,这真的把我吓到了。
虽然之前有好好配置各个机器的hosts 文件,可是大多数 配置我还是直接填写的ip地址。
这要ip 都变了,那我的改动的工作量就大了去了。。。
其实也在意料之中,因为虚拟机的ip估计也是随机分配的,所以,虽然在同一网段。
被分配到不同ip 的可能性非常大
没办法,硬着头皮找绑定ip的办法。最后答案都指向同一个地方。
还记得之前说改/etc/network/interfaces 这个文件么?
我当时说的是没什么特别重要的情况就别改了,现在作用来了。
(强调一下,这里说的是ubuntu系统,不是centos ,
我知道很多人用的centos ,那里的文件应该叫/etc/sysconfig/XXXX,
它的作用在centos 里就比较大了,因为配置hadoop 的时候网卡和认证也要用,hostname 也会用到)
改成 如下:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface--- not iface eth0 inet dhcp
# 注意是inet static 哦 gateway 查一下其他hadoop集群的机器,掩码就看看网段分布就好了
auto eth0
iface eth0 inet static
address 192.168.1.115
gateway 192.168.1.1
netmask 255.255.255.0
查网关的命令:ip route show
default via xxx.xxx.xxx.xxx 这个就是你的网关地址
这样我把虚拟机那两台机器的ip都绑定到对应的115 和116 了
如果仅仅这样更改很可能还是上不了网,这里还要改dns
sudo nano /etc/resolv.conf
添加
nameserver 192.168.1.1
nameserver 220.170.64.68
要让其永久改变,因此,执行:sudo nano /etc/resolvconf/resolv.conf.d/base
nameserver 192.168.1.1
nameserver 220.170.64.68
这下安心很多
重启。
有时候还是会出现连不上的情况,看看--我的电脑--管理--服务---telnet---选择“自动” 而不是“自动(延时启动)”
这样就好了
然后开始正题,安装zookeeper 和 Hbase 我这里选择的都是最新的 stable 的版本
hbase-1.0.1.1 版本 和zookeeper-3.4.6 版本
这两个都是可以从Apache官网指定中国镜像地点下载的
下载好了,然后tar xvf xxx xxxx就可以解压了,我都是直接解压到当前用户目录的
然后是先配置zookeeper ,同样因为是在用户工作目录里工作的文件夹,不能配置到系统的环境变量
但是可以 配置到/etc/bash.bashrc 文件里的环境变量
因为之前配置了hadoop 的环境变量,现在只要在末尾添加
HBASE_HOME=/home/luis/hbase-1.0.1.1
ZOOKEEPER_HOME=/home/luis/zookeeper-3.4.6
PATH=$HADOOP_HOME/bin:$HBASE_HOME/bin:$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
就可以了,三台机子都要配,不能用scp 拷贝,可能前面那么大段的代码有机器独有的配置信息。一台一台的配置就好了
配好了重启
复制zookeeper-3.4.6 文件夹下的 /conf/zoo_sample.cfg 改成 conf/zoo.cfg
命令 cp conf/zoo_sample.cfg conf/zoo.cfg
然后nano zoo.cfg
修改:
#一个的数据,一个是数据日志
dataDir=/home/luis/zookeeper-3.4.6/var/data
dataLogDir=/home/luis/zookeeper-3.4.6/var/datalog
#这些server.x 数字有用的
server.5=h5:2888:3888
server.1=h1:2888:3888
server.2=h2:2888:3888
然后在zookeeper-3.4.6 文件夹下 创建目录 mkdir -p var/data 和 mkdir -p var/datalog
然后在data 文件夹下 创建一个myid 文件
这里写对应 server 的id
比如前面 h5 号机器,的server.x 的数字是5 这里就写个5
其他机器做对应修改
然后scp 拷贝到其他机器的用户目录上
我这里是给每台机器都装上了zookeeper,其实你也可以不这样
安装hbase的步骤,这里说一下,好像说hadoop 和hbase 要版本对应,我查了一下
hadoop-2.6.0 的对应版本找到hbase 的最新的稳定版就好。
环境变量上一步就已经加了
修改配置文件hbase-env.sh
这个里头把java 环境变量写进去
补充:然后有的博客写到:配置文件hbase-env.sh时候,
要修改:HBASE_MANGES_ZK=false (表示不使用hbase自带的zookeeper)
HBASE_HEAPSIZE=8000
HBASE_LOG_DIR=/home/luis/hbase-1.0.1.1/logs
修改hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<!--这里写的是namenode 的地址,一定要用ip表示,然后distributed写成true-->
<value>hdfs://192.168.1.113:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>h5,h1,h2</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/luis/zookeeper-3.4.6/var/data</value>
</property>
</configuration>
后面两个属性是关于Zookeeper集群的配置。我的Zookeeper安装在h5,h1和h2上。
修改regionservers:改成如下内容
h1
h2
同样的scp 到其他用户的用户目录:
然后把zookeeper-2.4.6 和 hbase-1.0.1.1 的文件夹权限全部设置成775
sudo -R 775 xxxx
最后一个步骤 同步时钟,这个步骤是很重要的,尤其是你要用到时间戳字段的时候,怎么能忍受时间不一致
用113,就是那个namenode 节点用作我的ntp服务器,但是三台都要装
sudo apt-get install ntp
但是这里又有一个问题,有可能装不上,依赖不完全,sudo apt-get -f install ntp
还有可能连不上us.achieve.ubuntu.com
这个就是天朝的伟大的墙了
修改hosts 文件,哪台装不上修改哪台,加在后面就可以了
91.189.92.152 extras.ubuntu.com
91.189.91.13 security.ubuntu.com
91.189.91.14 us.archive.ubuntu.com
然后就可以装上了
然后设置namenode 节点的
#草稿文件
driftfile /var/lib/ntp/ntp.drift
#ntp server
server 202.112.0.7 prefer
server 127.127.1.0
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
restrict 192.168.1.113 mask 255.255.255.0 nomodify
其他的我都没改
然后修改 slaves 的/etc/ntp.conf
# Use Ubuntu's ntp server as a fallback.设置成从113 ,namenode同步时间就好啦
#server ntp.ubuntu.com
server 192.168.1.113 prefer
server 127.127.1.0
fudge 127.127.1.0 stratum 10
# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
restrict 192.168.1.113
restrict 192.168.1.115 mask 255.255.255.0 nomodify
其他的我也没改
然后修改namenode 的ntp /etc/crontab
在里头加一行
#连接的是清华的ntp服务器。国家授时中心怎么都连不上,每十五分钟同步一次
*/15 * * * * /usr/sbin/ntpdate 202.112.0.7
在其他的slaves 节点的ntp /etc/crontab 加上
# connect 113 server and lock-in time during every 5 minutes
*/5 * * * * /usr/sbin/ntpdate 192.168.1.113
然后保存,重启
第一次启动所有集群
1.启动Zookeeper
分别在每个机器上运行命令zkServer.sh start或者在$ZOOKEEPER_HOME/bin目录下运行./zkServer.sh start命令。然后可以通过命令jps来查看Zookeeper启动的进程QuorumPeerMain。
2、这里我没有实现!!格式化zookeeper 集群(高可用HA)
hdfs zkfc -formatzk
他会根据$HADOOP_HOME/etc/hadoop/core-site.xml文件中ha.zookeeper.quorum的值来进行初始化。
3、启动journalnode进程
在每个节点上启动 hadoop-daemon.sh start journalnode
或者在master节点启动hadoop-daemons.sh start journalnode 但是这种启动方式不会启动master的journalnode
4、格式化namenode
在master节点,hdfs namenode -format
5、启动namenode
hadoop-daemon.sh start namenode
6、这里我也没做!!我只有一台master ,secondnamenode 和namenode是同一台机子,
将刚才格式化的namenode信息同步到备用namenode上
hdfs namenode -bootstrapStandby
7、这一步我也没做,理由同上,在master2上启动namenode
hadoop-daemon.sh start namenode
8、启动所有datanode
在master 里执行 hadoop-daemons.sh start datanode
9、启动yarn
在master 执行 start-yarn.sh
10、这一步我也没做,也是高可用HA时才会用到,启动ZKFC
11、hadoop 启动成功
12、启动hbase
master 启动 start-hbase.sh
至此,第一次启动全部完成
日后启动:
1、对于高可用(HA):要先启动Zookeeper zkServer.sh.start(每个节点)
2、启动hadoop: start-dfs.sh start-yarn.sh (master1节点)
3、启动hbase:start-hbase.sh (master1节点)
参考文章网址:http://blog.csdn.net/onepiecehuiyu/article/details/45271493
(我和他配置还是有很大的不同,但是,后一部分的高可用HA 有参考他的)