虚拟机配置
集群配置
三台虚拟机(05,06,07)
05 06 07
nn1 nn2
zkfc1 zkfc2
zk1 zk2 zk3
jn1 jn2 jn3
dn1
rm rm nm
配置 | 05 | 06 | 07 |
---|---|---|---|
namenode | nn1 | nn2 | x |
zkfc | zkfc1 | zkfc2 | x |
zookeeper | zk1 | zk2 | zk3 |
journalnade | jn1 | jn2 | jn3 |
datanode | x | x | dn1 |
resourcemanager | rm1 | rm2 | x |
namenodemanager | x | x | nm |
配置虚拟机
centos.zip 解压3个(虚拟机重命名,在VMware的界面,上方菜单栏打开虚拟机,打开设置,在选项界面更改虚拟机名称)
我的三台虚拟机属性
全名
hadoop
虚拟机名称
HA3VM01(address:192.168.2.156)
HA3VM02(address:192.168.2.159)
HA3VM03(address:192.168.2.158)
同户名
hadoop
内存设为2G
网路适配器
VMnet8(NAT)
控制面板>网络和Internet>网络和共享中心>更改配适器设置>VMware Network Adapter VMnet8,右键启动
在VMware的界面,上方菜单栏打开edit,打开虚拟网络编辑器
点击NAT 设置
再次进入控制面板>网络和Internet>网络和共享中心>更改配适器设置>VMware Network Adapter VMnet8,右键查看属性,查看
核对网关是否一致
启动创建完成的一个虚拟机,若出现
如果是I copied it,就会知道有另一个和这台同样虚拟机,为了避免相同网关的冲突,会在copy的时候更改网关。
如果是I moved it,那么就不会更改网关。
这里点I moved it。方便自己改网关。不然虚拟机会新建一个网关,这样的话还要再改别的东西。
这里,第一个虚拟机选择I moved it, 之后的选择I copied it,如果都是moved it,那么虚拟机不会生成新的mac地址,如果想要手动配置,参照
http://blog.sina.com.cn/s/blog_15b9821340102wpjb.html
修改完mac地址后,网卡中会出现新的eth,这个对应的是新的mac地址,对这个eth进行修改,才能保证正常使用。
选yes
进入后,为确保虚拟机能连接网络,要开启vmware相关服务(也可以直接从,windows的服务里面打开)
之后,在网络连接按钮右键,点击edit connection
编辑一个网卡并使用,不能让网关是自动获取的
打开terminal,输入setup命令
↑键↓键移动,选择Network configuration,回车确定。
选择Device configuration,选择刚刚编辑的网卡,核对是否一致。
若不一致,更改后选择ok,save,save&quit,quit来保存并退出
输入su 进入root,输入命令service network restart
成功后,ifconfig查看一下详细信息
然后ping 192.168.2.1,发现不通(因为防火墙)
在windows,打开cmd,输入ping 192.168.2.156,可以。(说明以上步骤执行正确)
关闭图形界面
terminal 输入init 3,可以关闭图形界面
但是这样,在下次启动的时候还会进入图形界面。(ctrl + alt,鼠标从虚拟机命令行切出到windows)
使用SecureCRTPortable连接虚拟机
打开SecureCRTPortable
点击quick connect
选择accept&save
右键调整字体
其中font为 16
接下来,为了能够使用sudo指令,要进行相应的配置
执行su指令
再执行vi /etc/sudoers
在root ALL=(ALL) ALL下面加入
hadoop ALL=(ALL) ALL
(这里的hadoop是我的用户名)
然后输入exit指令,退出root
接下来,来设置开机时不进入图形界面。
输入指令
sudo vi /etc/inittab
将id:5:initdefault:改成id:3:initdefault:
接下来更改localhost主机名
输入指令
sudo vi /etc/sysconfig/network
将文件内容更改为HOSTNAME=你的主机名
再保存并退出文件,输入指令sudo hostname HA3VM01
再重新登陆,localhost就会变为我们的主机名
接下来将主机名和ip关联起来
输入指令
sudo vi /etc/hosts
进入文件后
将我们的所有机器的ip和主机名成对分行地添加进去并保存退出
之后,由于其他机器还未添加,因此ping本机(HA3VM01)来测试
执行ping HA3VM01
使用FileZilla向虚拟机传送文件
主机192.168.2.156
用户名hadoop
密码
端口22
点击确定
然后拖入
jdk-7u65-linux-i586.tar.gz
zookeeper-3.4.5.tar.gz
创建文件夹app,用来存放hadoop相关文件
执行指令mkdir app
同时把一些没用的文件夹全删了
安装JDK
将jdk解压到app文件夹下
tar -zxvf jdk-7u65-linux-i586.tar.gz -C app/
进入系统配置文件配置系统变量
sudo vi /etc/profile
在文件末尾加入
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65(你的jdk安装路径)
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin
之后保存,执行指令
source /etc/profile
使得更改生效
这时,cd 退到主目录,也可执行java -version指令来查看java版本,执行成功,则为配置成功。
安装mysql
先卸载之前的版本
执行
rpm -qa|grep mysql
执行
sudo rpm -e mysql-libs-5.1.66-2.el6_3.i686 --nodeps
强制卸载
执行
sudo find / -name mysql
sudo whereis mysql
把找到的都删除了,
之后再执行一遍,复查看删没删干净
进行安装
sudo rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm
执行命令:find / -name mysql 来寻找mysql-server的安装位置,如下:
/etc/logrotate.d/mysql
/etc/rc.d/init.d/mysql ---- 启动文件
/usr/share/mysql ---- 包含my-default.cnf文件
/usr/bin/mysql
/usr/lib/mysql
/var/lib/mysql ---- 数据库文件存放目录
然后启动mysql-server,执行: /etc/init.d/mysql start
提示启动成功之后执行:ps -el | grep mysql
系统会列出mysqld的相关进程信息,说明mysql-server安装成功!
3 安装client
sudo rpm -ivh MySQL-client-5.1.73-1.glibc23.i386.rpm
执行命令,设置密码为hadoop
/usr/bin/mysqladmin -u root password ‘hadoop’
/usr/bin/mysqladmin -u root -h HA3VM01 password ‘hadoop’
4 运行mysql
mysql -u root -p
输入密码:hadoop
(输入exit;,退出mysql)
启动集群步骤
启动zookeeper集群(分别在05、06、07上启动zk)
app/zookeeper-3.4.5/bin/zkServer.sh start
#查看状态:一个leader,两个follower
./zkServer.sh status
启动kafka
cd cd kafka_2.10-0.8.1.1/
bin/kafka-server-start.sh config/server.properties
创建话题mygirls
bin/kafka-topics.sh --create --zookeeper weekend05:2181 --replication-factor 3 --partitions 1 --topic mygirls
查看
bin/kafka-topics.sh --list --zookeeper weekend05:2181
创建话题myboys
bin/kafka-topics.sh --create --zookeeper weekend05:2181 --replication-factor 3 --partitions 1 --topic myboys
向mygirls写入数据
bin/kafka-console-producer.sh --broker-list weekend05:9092 --topic mygirls
创建消费者
bin/kafka-console-consumer.sh --zookeeper weekend05:2181 --from-beginning --topic mygirls
查看
bin/kafka-topics.sh --describe --zookeeper weekend05:2181 --topic mygirls
启动在后台
bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 &
(将标准输出重定向到空文件,(2>&1的意思是错误输出定位到和标准输出同一个地方去)(&是运行在后台))
启动Storm
在nimbus主机上(05)
./storm nimbus
在supervisor主机上()
./storm supervisor
启动journalnode(分别在05、06、07上执行)
app/hadoop-2.4.1/sbin/hadoop-daemon.sh start journalnode
#运行jps命令检验,weekend05、weekend06、weekend07上多了JournalNode进程
(若是刚刚配置完成)
2.7格式化HDFS
#在weekend05上执行命令:
hdfs namenode -format
#格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/weekend/hadoop-2.4.1/tmp,然后将/weekend/hadoop-2.4.1/tmp拷贝到weekend02的/weekend/hadoop-2.4.1/下。
scp -r tmp/ weekend02:/home/hadoop/app/hadoop-2.4.1/
##也可以这样,建议hdfs namenode -bootstrapStandby
2.8格式化ZKFC(在weekend05上执行即可)
hdfs zkfc -formatZK
启动HDFS(在05上执行)
app/hadoop-2.4.1/sbin/start-dfs.sh
启动Hbase(在05上执行)
cd hbase-0.96.2-hadoop2/bin
./start-hbase.sh
(如果是7台,在03执行完该语句之后,在04执行bin/hbase-daemon.sh start master)
(Hbase,命令行客户端启动,在bin里的。/hbase shell)
启动YARN(#####注意#####:在05上执行start-yarn.sh。如果机器足够多,可以把namenode和resourcemanager分开,因为性能问题,他们都要占用大量资源,他们分开了就要分别在不同的机器上启动)
app/hadoop-2.4.1/sbin/start-yarn.sh
验证与测试
到此,hadoop-2.4.1配置完毕,可以统计浏览器访问:
http://192.168.1.201:50070
NameNode 'weekend01:9000' (active)
http://192.168.1.202:50070
NameNode 'weekend02:9000' (standby)
验证HDFS HA
首先向hdfs上传一个文件
hadoop fs -put /etc/profile /profile
hadoop fs -ls /
然后再kill掉active的NameNode
kill -9 <pid of NN>
通过浏览器访问:http://192.168.1.202:50070
NameNode 'weekend02:9000' (active)
这个时候weekend02上的NameNode变成了active
在执行命令:
hadoop fs -ls /
-rw-r--r-- 3 root supergroup 1926 2014-02-06 15:36 /profile
刚才上传的文件依然存在!!!
手动启动那个挂掉的NameNode
sbin/hadoop-daemon.sh start namenode
通过浏览器访问:http://192.168.1.201:50070
NameNode 'weekend01:9000' (standby)
验证YARN:
运行一下hadoop提供的demo中的WordCount程序:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount /profile /out
OK,大功告成!!!
测试集群工作状态的一些指令 :
bin/hdfs dfsadmin -report 查看hdfs的各节点状态信息
bin/hdfs haadmin -getServiceState nn1 获取一个namenode节点的HA状态
sbin/hadoop-daemon.sh start namenode 单独启动一个namenode进程
./hadoop-daemon.sh start zkfc 单独启动一个zkfc进程
七台虚拟机的配置
1 nn zkfc kafka
2 nn zkfc kafka
3 rm hmaster kafka
4 rm hmaster
5 zoo jn dn nm hbase
6
7