一、安装hadoop 在 三个节点下 ,在本实验中采用ubuntu14.04虚拟机
1、 配置IP、DNS(三台机器都要)
sudo vim /etc/network/interfaces
内容为:
auto eth0
ifaceeth0 inet static
address 10.49.24.115
netmask255.255.0.0
gateway10.49.250.250
dns-nameserver 223.5.5.5 8.8.8.8
注:
自动获取IP:dhclienteth0
查看网关: ip route show
查看dns: cat/etc/resolv.conf
网络重启:sudo/etc/init.d/networking restart
学校dns:202.102.224.68 222.139.215.195
2、 设置主机名(三台机器都要,配置后需重启sudo reboot)
sudo vim /etc/hostname
master
另外两台配置为:slave1,slave2
重启后用hostname可查看
3、 配置ip地址与主机名映射(三台机器都要)
sudo vim /etc/hosts
内容为:
127.0.0.1 localhost
#127.0.1.1 ubuntu
10.49.24.115master
10.49.24.116slave1
10.49.24.117 slave2
4、 设置SSH免密钥登录
(1)安装ssh服务:sudo apt-get install openssh-server
使用 ps -e | grep ssh如果还没启动,需要/etc/init.d/ssh start
如果显示sshd则说明已启动成功。
(2)SSH免密钥登录
Master机器:
ssh-keygen -t rsa一路回车下去
cd
ll
cd .ssh
ll
cat id_rsa.pub >>authorized_keys
chmod 600 authorized_keys
slave1:
slave2: 都做:
ssh-keygen -t rsa一路回车下去
cd ll
master:
scp authorized_keys slave1:~/.ssh
scp authorized_keys slave2:~/.ssh
最后通过:ssh slave1
Ssh slave2 实现免密钥登录
5、 装JDK
(1)规划安装路径
/hadoop放安装好的文件夹
/software 放安装包
/hadoop/tmp存放临时文件
sudomkdir /hadoop
sudomkdir /software
sudomkdir /hadoop/tmp
(2)上传或COPY安装文件
可以使用Xftp
或者在XShell中apt-get install lrzsz
进入/software 用rz命令上传文件到此目录中
上传jdk hadoop hbase zookeeper
(3)解压
cd /software
sudo tar -zxvf jdk-7u51-linux-x64.tar.gz -C /hadoop
(4)sudo mv jdk1.7.0_51/ java
(5)配置环境变量
vim ~/.bashrc
内容如下:
export JAVA_HOME=/hadoop/java
export PATH=$PATH:$JAVA_HOME/bin
然后使用source ~/.bashrc使配置文件生效
java –version查看java版本
(6)分发jdk
scp -r javaslave1:/hadoop
scp .bashrcslave1:~/
scp -r javaslave2:/hadoop
scp .bashrcslave2:~/
另外:slave1,slave2需要source~/.bashrc一下
6、 Hadoop环境搭建
(1) 安装Hadoop,解压
tar -zxvf hadoop-2.9.0.tar.gz -C /hadoop
(2) mv hadoop-2.9.0/ hadoop
(3) 建立相应的文件夹:
mkdir /hadoop/hadoop/hdfs
mkdir /hadoop/hadoop/tmp
mkdir /hadoop/hadoop/namenode
(4) 配置环境变量
vim ~/.bashrc
export PATH=$PATH:/hadoop/hadoop/bin:/hadoop/hadoop/sbin
source ~/.bashrc
在任何目录输入:hadoop version
(5) 修改配置文件
在/hadoop/hadoop/etc/hadoop目录中配置:
①vim hadoop-env.sh中:export JAVA_HOME=/hadoop/java
②vim core-site.xml中:
<property>
<name>hadoop.tmp.dir</name>
<value>file:/hadoop/hadoop/tmp</value>
<description>Abasefor other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
③vim hdfs-site.xml中:
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/hadoop/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hadoop/hadoop/hdfs</value>
</property>
④cp mapred-site.xml.templatemapred-site.xml
vim mapred-site.xml中:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
⑤vim yarn-site.xml中:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
⑥ vim slaves中:
slave1
slave2
(6) 分发给从结点:
scp -r /hadoop/hadoop/slave1:/hadoop
scp -r/hadoop/hadoop/ slave2:/hadoop
(7) 格式化:(master)
hadoop namenode-format
(8) 启动Hadoop:
start-all.sh 或者start-dfs.sh start-yarn.sh
(9) 查看进程:jps
master:
5620 NameNode
5851 SecondaryNameNode
6275 Jps
6005 ResourceManager
slave1 slave2:
4615 Jps
4313 DataNode
4467 NodeManager
查看:hadoop fs -ls /
或在http://master:50070
另:hadoop dfsadmin -report可查看集群状态命令
(10)关闭Hadoop:
stop-all.sh
二、安装Zookeeper
1、解压tar -zxvfzookeeper-3.4.6.tar.gz -C /hadoop
2、mv zookeeper-3.4.6/zookeeper
3、修改配置文件
cdzookeeper/conf
(1) 修改zoo_sample.cfg为zoo.cfg
cp zoo_sample.cfg zoo.cfg
(2) 修改zoo.cfg
vim zoo.cfg中修改:
dataDir=/hadoop/zookeeper/data
dataLogDir=/hadoop/zookeeper/log
clientPort=2181
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
(3) mkdir data(先cd..)
mkdir log
(4) cd data后vim myid在该文件中输入1
(5) 同步到slave1,slave2(到hadoop目录下)
scp -r zookeeper/ slave1:/hadoop
scp -r zookeeper/ slave2:/hadoop
(6) 同步后修改各个节点的myid
cd /hadoop/zookeeper/data/
vim myid 2
vim myid 3
(7) 分别启动各个节点的服务器进程:
cd /hadoop/zookeeper
bin/zkServer.sh start
(8) 检查是否成功(三个节点):
bin/zkServer.sh status 其中有一个leader 其余都是follower
或在bin目录下执行:./zkCli.sh -server master:2181
ls /
quit
(9) 停止zookeeper(三个结点)
Bin/zkServer.sh stop
三、安装HBase
http://hbase.apache.org/
确保HDFS处于启动状态
1、在主节点解压HBASE(进入/software目录下)
tar-zxvf hbase-1.2.6-bin.tar.gz -C /hadoop/
mvhbase-1.2.6/ hbase
2、修改配置文件 cd /hadoop/hbase/conf
(1)修改HBase的环境变量配置文件hbase-env.sh
export JAVA_HOME=/hadoop/java
export HBASE_CLASSPATH=/hadoop/hadoop
export HBASE_MANAGES_ZK=false
注:一个分布式运行的Hbase依赖一个zookeeper集群。所有的节点和客户端都必须能够访问zookeeper。默认的情况下Hbase会管理一个zookeep集群,即Hbase默认自带一个zookeep集群。这个集群会随着Hbase的启动而启动。而在实际的商业项目中通常自己管理一个zookeeper集群更便于优化配置提高集群工作效率,但需要配置Hbase。需要修改conf/hbase-env.sh里面的HBASE_MANAGES_ZK 来切换。这个值默认是true的,作用是让Hbase启动的时候同时也启动zookeeper.在本实验中,我们采用独立运行zookeeper集群的方式,故将其属性值改为false.
(2)修改hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.master</name>
<value>hdfs://master:60000</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>file:/hadoop/hbase/tmp</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/hadoop/zookeeper/data</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
<property>
<name>hbase.regionserver.info.port</name>
<value>60030</value>
</property>
要想运行完全分布式模式,加一个属性 hbase.cluster.distributed 设置为 true 然后把hbase.rootdir 设置为HDFS的NameNode的位置
hbase.rootdir:这个目录是region server的共享目录,用来持久化Hbase。URL需要是'完全正确'的,还要包含文件系统的scheme
hbase.cluster.distributed :Hbase的运行模式。false是单机模式,true是分布式模式。若为false,Hbase和Zookeeper会运行在同一个JVM里面。
在hbase-site.xml配置zookeeper:当Hbase管理zookeeper的时候,你可以通过修改zoo.cfg来配置zookeeper,对于zookeepr的配置,你至少要在hbase-site.xml中列出zookeepr的ensemble servers,具体的字段是 hbase.zookeeper.quorum.在这里列出Zookeeper集群的地址列表,用逗号分割。
hbase.zookeeper.property.clientPort:ZooKeeper的zoo.conf中的配置,客户端连接的端口。
hbase.zookeeper.property.dataDir:ZooKeeper的zoo.conf中的配置。
对于独立的Zookeeper,要指明Zookeeper的host和端口。需要在hbase-site.xml中设置。
(3)修改regionservers
slave1
slave2
在这里列出了希望运行的全部HRegionServer,一行写一个host (就像Hadoop里面的 slaves 一样). 列在这里的server会随着集群的启动而启动,集群的停止而停止。
3、同步两个从节点(到hadoop目录下)
scp-r hbase slave1:/hadoop
scp-r hbase slave2:/hadoop
4、启动hbase(到hbase的bin目录下)
./start-hbase.sh
5、检查是否启动成功
jps
master中有HMaster
slave中有HRegionServer
6、利用客户端连接到hbase
./hbaseshell
7、玩转hbase,未来的主要工作
create 'test','cf1'
list
put 'test','row1','cf1:a','value1'
put 'test','row1','cf1:b','value2'
scan 'test'
disable 'test'
drop 'test'
list
exit
注:关闭与启动Hadoop、zookeeper、hbase
1.停掉hbase. 在bin目录下(master结点)
./stop-hbase.sh
2.各个结点分别停掉zookeeper. 在bin目录下
./zkServer.sh stop
3.停掉hadoop. 在sbin目录下(master结点)
./stop-all.sh
启动顺序与关闭顺序正好相反。
1.启动hadoop.在sbin目录下
./start-all.sh
master:jps中有ResourceManagerNameNode SecondaryNameNode
slave:jps中有DataNodeNodeManager
或master:50070
master:18088
2.各个结点分别启动zookeeper. 在bin目录下
./zkServer.sh start
.检查安装是否成功
./zkServer.sh status
bin/目标下,执行./zkCli.sh-server master:2181
ls /
quit
3.启动hbase. 在bin目录下
./start-hbase.sh
检查是否启动成功
jps
master中有HMaster
slave中有HRegionServer
或者master:60010
利用客户端连接到hbase
./hbase shell