安装jdk
打开一个虚拟机,右键单击桌面选择Open in Terminal,进入编辑界面:
1.假设用户名是wxx(获取root权限)
(1)使wxx成为sudoer
su
cd /etc
vi sudoers
i 进入编辑状态
在root ALL=(ALL) ALL的下一行编辑
wxx ALL=(ALL) ALL
按ESC键
按Shift + :
输入wq!
(2)创建hadoop文件夹
cd
mkdir hadoop
将jdk-7u79-linux-x64安装包复制到hadoop文件目录下(与windows环境下类似)。
(3)解压jdk-7u79-linux-x64.gz文件
cd
cd hadoop
tar -zxvf jdk-7u79-linux-x64.gz
(4)设置jdk环境变量
cd
cd hadoop
su
gedit /etc/profile
进入后在最后一行添加以下指令:
exportJAVA_HOME=/home/wxx/hadoop/jdk1.7.0_79
exportPATH=$JAVA_HOME/bin:$PATH
exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
点击保存后关闭,输入以下指令使jdk生效:
source /etc/profile
(5)检查jdk是否安装成功
java -version
成功后显示如下信息:
java version"1.7.0_79"
Java(TM) SE RuntimeEnvironment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit ServerVM (build 24.79-b02, mixed mode)
四、创建集群
1.克隆虚拟机
将已经安装好jdk的虚拟机克隆两个,创建三个虚拟机的集群。
2.修改后hostname
su
vi /etc/sysconfig/network
将三个虚拟机分别命名master、slave1、slave2
如图:(完成后重启虚拟机reboot)
3.将三个虚拟机的ip地址相互连接
首先必须确保虚拟机联网,如果NET模式连不上网,则选中桥接模式。
网络通畅后执行以下操作:
(1)分别对三个虚拟机执行指令ifconfig,查看各虚拟机ip地址
(2)在master中执行以下指令
su
cd /etc
gedit /etc/hosts
进入编辑界面后按“IP地址 hostname”填写信息,如图:
填写完后按Save按钮,关闭编辑页。
(3)将配置好的文件复制到slave1、slave2中
在master中执行以下指令:
scp /etc/hosts root@slave1:/etc/
scp /etc/hosts root@slave2:/etc/
(4)检查各虚拟机是否互联
在master中执行以下指令:
ping slave1
ping slave2
连通后显示如下:
4.配置SSH无密钥登录
(1)关闭防火墙
对每个虚拟机进行如下操作:
su
chkconfig iptables off
执行后重启虚拟机: reboot
(2)关闭防火墙后在master下执行以下指令:
cd
ssh-keygen –t rsa
cd .ssh
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
scp authorized_keys wxx@slave1:~/.ssh/
scp authorized_keys wxx@slave2:~/.ssh/
(3)检查无密钥登录是否成功
ssh slave1
ssh slave2
ssh master
成功后显示如下:
5.安装并配置hadoop-2.6.4(在master中)
(1)将hadoop-2.6.4.tar.gz安装包复制到hadoop文件目录下(与windows环境下类似)。
(2)解压hadoop-2.6.4.tar.gz
cd
cd hadoop
tar -zxvf hadoop-2.6.4.tar.gz
(3)配置hadoop-2.6.4的各项文件
cd
cd hadoop/hadoop-2.6.4
cd etc/hadoop
gedit hadoop-env.sh
在最后一行添加:export JAVA_HOME=/home/wxx/hadoop/jdk1.7.0_79
gedit core-site.xml
添加代码:
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
<final>true</final>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/wxx/hadoop/tmp</value>
</property>
<property>
<name>ds.default.name</name>
<value>hdfs://master:54310</value>
<final>true</final>
</property>
gedit hdfs-site.xml
添加代码:
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/wxx/hadoop/dfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/wxx/hadoop/dfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
gedit mapred-site.xml
(注意:必须先复制mapred-site.xml.template文件更名为mapred-site.xml)
添加代码:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
gedit 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.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
gedit master
添加代码:
master
gedit slaves
添加代码:
master
slave1
slave2
(4)将配置好的文件复制到slave1、slave2中
cd
cd hadoop
scp -r hadoop-2.6.4 slave1:~/hadoop
scp -r hadoop-2.6.4 slave2:~/hadoop
(5)启动集群
cd
cd hadoop/hadoop-2.6.4
bin/hdfs namenode -format
// 格式化namenode
sbin/start-dfs.sh //如果不能执行就是权限问题需要给安装目录开通权限
sbin/start-yarn.sh
sbin/hadoop-daemon.sh start secondarynamenode
(6)检查集群情况
jps (master 出现这几个说明安装成功!!!)
jps(slave1、slave2 出现一下出现下图)
1、先安装zookeeper,再安装hbase,重中之重是先把三个主机的防火墙关掉,不然你会发现怎么都搞不定的;
root账户下,
service iptables stop(关闭防火墙立即生效,但重启后无效)
chkconfig iptables off(关闭防火墙重启生效,但不会立即生效)
建议两条命令都执行一遍,当然之前关过的,不必担心了。
2、tar -zxvf zookeeper-*.gz(*是版本号,自己补齐) ,
然后在conf目录下,
1) cp zoo-simple.cfg zoo.cfg
2) mkdirdata
3) touchdata/myid (myid文件里写上server序号)
4) gedit zoo.cfg
改dataDir=/home/cc/hadoop/zookeeper-3.4.9/data/ (安装目录)
在尾部添加三行:
server.0=master:2888:3888
server.1=slave1:2888:3888
server.2=slave2:2888:3888
这里的2888是leader的port,3888是follower的port。可以是其他值。
5)然后
#scp -r ~/zookeeper-*slave1:~/hadoop
scp -r ~/zookeeper-3.4.9slave1:~/hadoop
#scp -r ~/zookeeper-*slave2:~/hadoop
scp -r ~/zookeeper-3.4.9slave2:~/hadoop
6)需要在/home/cc/hadoop/zookeeper-3.4.9/data/myid(myid是新建的)
master里面myid写0
slave1里面myid写1
slave2里面myid写2
3、安装hbase,
tar -zxvf hbase-*.gz,
①在conf/hbase-env.sh中,添加
export JAVA_HOME=/home/cc/hadoop/jdk1.8.0_121/(你的JDK目录)还有
export HBASE_MANAGES_ZK=false
这句话的意思是不使用hbase自带的zookeeper,其实这两句话
都是有的,被注释了,但取值可能是不一样的;
②在conf/hbase-site.xml中
configuration标签之间添加如下代码:
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
<!--hbase目录的位置,打开之后,你会发现eclipse的hadoop目录里边多了个hbase目录-->
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<!--分布式集群-->
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
<!--这是集群里边的机器-->
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<!---->
</property>
③在conf/regionservers文件里边写入
master
slave1
slave2
两个从属机的名称,这个是连接远程服务器的名单,因为,我们一般是在master上开启hbase的,要远程连接另外两台的。
④同样的
#scp -r ~/hbase-* slave1:~/hadoop
scp -r hbase-1.2.5 slave1:~/hadoop
#scp -r ~/hbase-* slave2:~/hadoop
scp -r hbase-1.2.5 slave2:~/hadoop
(注意替换)
!!!配置zookeeper、hbase的PATH,
vi /etc/profile(3个虚拟机一起添加)
添加
exportJAVA_HOME=/home/cc/hadoop/jdk1.8.0_121
exportPATH=$JAVA_HOME/bin:$PATH
exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
exportHADOOP_HOME=/home/cc/hadoop/hadoop-2.6.5/
exportPATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
exportZOOKEEPER_HOME=/home/cc/hadoop/zookeeper-3.4.9/
exportPATH=$ZOOKEEPER_HOME/bin:$PATH
exportHBASE_HOME=/home/cc/hadoop/hbase-1.2.5/
exportPATH=$HBASE_HOME/bin:$PATH
scp -r /etc/profile slave1:/etc/profile
scp -r /etc/profile slave2:/etc/profile
source /etc/profile
重启
4、启动集群,启动顺序hadoop->zookeeper->hbase
1)start-all.sh(启动hadoop集群)
2)zkServer.sh start(每台机器都要执行该命令)然后你可以查看
zkServer.sh status (会显示是leader还是follower,(我的是slave1是leader,哪个是leader不要紧的)然后执行)
// zkCli.sh -server master:2181,slave1:2181,slave2:2181(2181是zookeeper的监听端口)
3)start-hbase.sh (可能要等上一分钟)
4)jps
出现:
3650 DataNode
3986 ResourceManager
3812 SecondaryNameNode
4421 QuorumPeerMain
4744 Jps
3544 NameNode
4571 HMaster
4700 HRegionServer
4094 NodeManager
5)hbaseshell
出现:(成功!!!)
2017-04-1719:29:25,502 WARN [main]util.NativeCodeLoader: Unable to load native-hadoop library for your platform...using builtin-java classes where applicable
SLF4J:Class path contains multiple SLF4J bindings.
SLF4J:Found binding in[jar:file:/home/cc/hadoop/hbase-1.2.5/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J:Found binding in[jar:file:/home/cc/hadoop/hadoop-2.6.5/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J:See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J:Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
HBaseShell; enter 'help<RETURN>' for list of supported commands.
Type"exit<RETURN>" to leave the HBase Shell
Version1.2.5, rd7b05f79dee10e0ada614765bb354b93d615a157, Wed Mar 1 00:34:48 CST 2017
hbase(main):001:0>