一、安装或克隆虚拟机,安装jdk,并克隆集群(采取复制方式,同样会导致网卡变更的情况)
简易安装centos(一台),安装完成:
①、ifconfig检查网络,观察网卡是否为eth0,若是,记下IP地址和子网掩码;若不是,为eth1的话,
su
然后vi /etc/udev/rules.d/70-persistent-net.rules
文件内有eth0和eth1两行,而ifconfig出现的是eth1,就把eth0那一行注释,记录下eth1的物理地址,例如这样的00:0c:29:95:82:51
,然后把eth1改为eth0;(这就是禁用eth1)
如果后面克隆后的系统再次出现非eth0的网卡同样方法设置即可;
②、copy安装包:jdk,hadoop
安装jdk:
在自己的home目录里
tar -zxvf jdk-8u121-linux-x64.tar.gz
su
vim /etc/profile
在export那一行之后按o或者i,输入
export JAVA_HOME=/home/jiezi/jdk1.8.0_121
export PATH=$JAVA_HOME/bin:$PATH
按esc,输入:x,回车
按ctrl+D,回到普通用户
③、克隆集群
关闭虚拟机
右键->管理->克隆->
选择当前状态->创建完整克隆->修改虚拟机名称,修改虚拟机存放位置->完成
克隆两个。
二、安装hadoop并配置集群
启动从属机(slave),主要考虑到内存因素
注:若出现网卡变更的情况,请参照上方方法解决)
1、修改网卡,设置静态IP;
2、启动第一台机器(若第一台也是copy或克隆来的,上一步时直接打开三台),给三台机器修改hostname
su
vi /etc/sysconfig/network
三台分别命名为master,slave1,slave2
3、在任一台机器上(我这里在master),编写hosts,然后分发给其他两台
su
vi /etc/hosts
在后追加或者重写,加入
192.168.110.110 master(自己的IP)
192.168.110.111 slave1
192.168.110.112 slave2
然后
scp /etc/hosts root@slave1:/etc/hosts
scp /etc/hosts root@slave2:/etc/hosts
4、关闭每台机器的防火墙
su
chkconfig iptables off
5、将从属机(slave1,slave2)的开机界面切换成3,降低内存消耗
su
vim /etc/inittab
将最后一行的5改成3
6、重启三台机器,此处也可将两台slave机关机,将其内存降为512M(此处关机或重启是必要的,因为要是防火墙关闭生效,当然也可以使用service iptables stop临时生效)
三、配置免密登录及安装配置hadoop
1、设置免密
cd
ssh-keygen –t rsa
cd .ssh
cat id_rsa.pub >> authorized_keys
su
chmod 600 authorized_keys
ctrl+D
scp authorized_keys jiezi@slave1:~/.ssh/
yes
输入密码
scp authorized_keys jiezi@slave2:~/.ssh/
yes
输入密码
可以测试一下是否成功,ssh slave1看hostname的结果
2、安装配置hadoop
①解压安装包
tar -zxvf hadoop-2.6.5.tar.gz
②配置各种文件
cd
cd hadoop-2.6.5/etc/hadoop
配置如下文件
?????? core-site.xml?? common属性配置
?????? hdfs-site.xml??? HDFS属性配置
?????? mapred-site.xml? MapReduce属性配置
?????? hadoop-env.sh????hadooop 环境变量配置
yarn-site.xml
gedit hadoop-env.sh &
-------------------------配置hadoop-env.sh----------------------------------
尾行添加jdk的路径 export JAVA_HOME=/home/jiezi/jdk1.8.0_121
-------------------------配置hadoop-env.sh----------------------------------
gedit core-site.xml &
-------------------------配置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/jiezi/hadoop/tmp</value>
</property>
<property>
<name>ds.default.name</name>
<value>hdfs://master:54310</value>
<final>true</final>
</property>
-------------------------配置core-site.xml----------------------------------
gedit hdfs-site.xml &
-------------------------配置hdfs-site.xml----------------------------------
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/jiezi/hadoop/dfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/jiezi/hadoop/dfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!--以下为hbase准备-->
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
-------------------------配置hdfs-site.xml----------------------------------
gedit mapred-site.xml &
(注意:必须先复制mapred-site.xml.template文件更名为mapred-site.xml)
-------------------------配置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>
-------------------------配置mapred-site.xml--------------------------------
gedit yarn-site.xml &
-------------------------配置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>
-------------------------配置yarn-site.xml----------------------------------
---添加master---
gedit master
添加代码:
master
---添加slaves---
gedit slaves
添加代码:
master
slave1
slave2
配置完毕
②分发给slaves
普通用户
cd
scp -r hadoop-2.6.5/ slave1:~/
scp -r hadoop-2.6.5/ slave2:~/
③集群配置完毕,可以重启测试集群是否工作
四、安装及配置zookeeper和hbase
1、解压zookeeper
tar -zxvf zookeeper-3.4.10.tar.gz
cd zookeeper-3.4.10/conf/
cp zoo-simple.cfg zoo.cfg
gedit zoo.cfg &
在dataDir=/home/jiezi/zookeeper-3.4.10/data改为自己想要的目录
在尾部添加三行:
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
在zookeeper-3.4.10目录下建立data目录,在data下创建myid文件
mkdir data
touch data/myid
myid文件里写上server序号
cat > data/myid <<EOF(<<EOF是结束符,可以自定义为<<AS,很随意)
>1
>EOF
2、分发zookeeper
scp -r zookeeper-3.4.10 slave1:~/
scp -r zookeeper-3.4.10 slave2:~/
进入slave1修改myid
ssh slave1
cat > zookeeper-3.4.10/data/myid <<a(<<EOF是结束符,可以自定义为<<AS,很随意)
>2
>a
进入slave2修改myid
ssh slave1
cat > zookeeper-3.4.10/data/myid <<a(<<EOF是结束符,可以自定义为<<AS,很随意)
>3
>a
zookeeper配置完毕
3、解压hbase
tar -zxvf hbase-1.2.5-bin.tar.gz
cd hbase-1.2.5/conf
gedit hbase-env.sh &
----------------------------------
添加export JAVA_HOME=/home/jiezi/jdk1.8.0_121
告诉hbase使用外部的zk
export HBASE_MANAGES_ZK=false
----------------------------------
gedit hbase-site.xml &(下边任一个皆可,第二个是老师的)
-----------------------------------------------------------------------
<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,slave1,slave2</value>
<!--这是集群里边的机器-->
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<!---->
</property>
-------------------------------------------------------------------------
<!-- 指定hbase在HDFS上存储的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- hbase.master配置HBase的主节点端口,web端口是60010-->
<property>
<name>hbase.master</name>
<value>hdfs://master:6000</value>
</property>
<!-- 指定zk的地址,多个用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
--------------------------------------------------------------------------
gedit regionservers &
-----------------------------------
master
slave1
slave2
-----------------------------------
4、分发hbase
scp -r hbase-1.2.5 slave1:~/
scp -r hbase-1.2.5 slave2:~/
hbase配置完毕
5、添加PATH
cd
su
vim /etc/profile
添加
export HADOOP_HOME=/home/jiezi/hadoop-2.6.5
export ZOOKEEPER_HOME=/home/jiezi/zookeeper-3.4.10
export HBASE_HOME=/home/jiezi/hbase-1.2.5
(为了方便在这里我们把eclipse的PATH 也加上)
修改为
export PATH=/home/jiezi/eclipse:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:
$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HBASE_HOME/bin:$PATH
6、分发profile
su
scp /etc/profile slave1:/etc/profile(需要输入密码)
scp /etc/profile slave2:/etc/profile(需要输入密码)
7、给master安装eclipse
tar -zxvf eclipse-java-mars-1-linux-gtk-x86_64.tar.gz
8、 安装完毕,重启三台机器
五、启动集群,启动顺序hadoop->zookeeper->hbase(启动之前建议把master的内存扩大到2G,否则吃不消
1、启动hadoop
格式化namenode
hdfs namenode -format
启动
start-all.sh
yes
yes
2、启动zookeeper
在master启动三个终端
终端1:
zkServer.sh start(此处易出现无法开启的错误,把data目录下除myid之外都删除)
终端2:
ssh slave1
zkServer.sh start
终端3:
ssh slave2
zkServer.sh start
--------------------
最好每台都检查一下zookeeper是否启动完成,
zkServer.sh status
--------------------
终端1:
zkCli.sh master:2181,slave1:2181,slave2:2181
3、启动hbase
start-hbase.sh(等一分钟)
--------------------------
测试一下是否启动成功
hbase shell
list
出现TABLE就行
--------------------------
六、配置eclipse
1、解压eclipse
tar -zxvf eclipse-java-mars-1-linux-gtk-x86_64.tar.gz
解压插件,将 release 中的 hadoop-eclipse-kepler-plugin-2.6.0.jar (还提供了 2.2.0 和 2.4.1 版本)复制到 Eclipse 安装目录的 plugins 文件夹中,运行 eclipse -clean 重启 Eclipse 即可(添加插件后只需要运行一次该命令,以后按照正常方式启动就行了)。
hadoop2x-eclipse-plugin-master.zip
右键->NEW HADOOP LOCATION->
loaction name随便填写一个
host填master
DFS master的port填9000
finish
在运行 MapReduce 程序前,还需要执行一项重要操作(也就是上面提到的通过复制配置文件解决参数设置问题):将 /usr/local/hadoop/etc/hadoop中将有修改过的配置文件(如伪分布式需要 core-site.xml 和 hdfs-site.xml),以及 log4j.properties 复制到WordCount项目下的src文件夹
简易安装centos(一台),安装完成:
①、ifconfig检查网络,观察网卡是否为eth0,若是,记下IP地址和子网掩码;若不是,为eth1的话,
su
然后vi /etc/udev/rules.d/70-persistent-net.rules
文件内有eth0和eth1两行,而ifconfig出现的是eth1,就把eth0那一行注释,记录下eth1的物理地址,例如这样的00:0c:29:95:82:51
,然后把eth1改为eth0;(这就是禁用eth1)
如果后面克隆后的系统再次出现非eth0的网卡同样方法设置即可;
②、copy安装包:jdk,hadoop
安装jdk:
在自己的home目录里
tar -zxvf jdk-8u121-linux-x64.tar.gz
su
vim /etc/profile
在export那一行之后按o或者i,输入
export JAVA_HOME=/home/jiezi/jdk1.8.0_121
export PATH=$JAVA_HOME/bin:$PATH
按esc,输入:x,回车
按ctrl+D,回到普通用户
③、克隆集群
关闭虚拟机
右键->管理->克隆->
选择当前状态->创建完整克隆->修改虚拟机名称,修改虚拟机存放位置->完成
克隆两个。
二、安装hadoop并配置集群
启动从属机(slave),主要考虑到内存因素
注:若出现网卡变更的情况,请参照上方方法解决)
1、修改网卡,设置静态IP;
2、启动第一台机器(若第一台也是copy或克隆来的,上一步时直接打开三台),给三台机器修改hostname
su
vi /etc/sysconfig/network
三台分别命名为master,slave1,slave2
3、在任一台机器上(我这里在master),编写hosts,然后分发给其他两台
su
vi /etc/hosts
在后追加或者重写,加入
192.168.110.110 master(自己的IP)
192.168.110.111 slave1
192.168.110.112 slave2
然后
scp /etc/hosts root@slave1:/etc/hosts
scp /etc/hosts root@slave2:/etc/hosts
4、关闭每台机器的防火墙
su
chkconfig iptables off
5、将从属机(slave1,slave2)的开机界面切换成3,降低内存消耗
su
vim /etc/inittab
将最后一行的5改成3
6、重启三台机器,此处也可将两台slave机关机,将其内存降为512M(此处关机或重启是必要的,因为要是防火墙关闭生效,当然也可以使用service iptables stop临时生效)
三、配置免密登录及安装配置hadoop
1、设置免密
cd
ssh-keygen –t rsa
cd .ssh
cat id_rsa.pub >> authorized_keys
su
chmod 600 authorized_keys
ctrl+D
scp authorized_keys jiezi@slave1:~/.ssh/
yes
输入密码
scp authorized_keys jiezi@slave2:~/.ssh/
yes
输入密码
可以测试一下是否成功,ssh slave1看hostname的结果
2、安装配置hadoop
①解压安装包
tar -zxvf hadoop-2.6.5.tar.gz
②配置各种文件
cd
cd hadoop-2.6.5/etc/hadoop
配置如下文件
?????? core-site.xml?? common属性配置
?????? hdfs-site.xml??? HDFS属性配置
?????? mapred-site.xml? MapReduce属性配置
?????? hadoop-env.sh????hadooop 环境变量配置
yarn-site.xml
gedit hadoop-env.sh &
-------------------------配置hadoop-env.sh----------------------------------
尾行添加jdk的路径 export JAVA_HOME=/home/jiezi/jdk1.8.0_121
-------------------------配置hadoop-env.sh----------------------------------
gedit core-site.xml &
-------------------------配置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/jiezi/hadoop/tmp</value>
</property>
<property>
<name>ds.default.name</name>
<value>hdfs://master:54310</value>
<final>true</final>
</property>
-------------------------配置core-site.xml----------------------------------
gedit hdfs-site.xml &
-------------------------配置hdfs-site.xml----------------------------------
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/jiezi/hadoop/dfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/jiezi/hadoop/dfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!--以下为hbase准备-->
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
-------------------------配置hdfs-site.xml----------------------------------
gedit mapred-site.xml &
(注意:必须先复制mapred-site.xml.template文件更名为mapred-site.xml)
-------------------------配置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>
-------------------------配置mapred-site.xml--------------------------------
gedit yarn-site.xml &
-------------------------配置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>
-------------------------配置yarn-site.xml----------------------------------
---添加master---
gedit master
添加代码:
master
---添加slaves---
gedit slaves
添加代码:
master
slave1
slave2
配置完毕
②分发给slaves
普通用户
cd
scp -r hadoop-2.6.5/ slave1:~/
scp -r hadoop-2.6.5/ slave2:~/
③集群配置完毕,可以重启测试集群是否工作
四、安装及配置zookeeper和hbase
1、解压zookeeper
tar -zxvf zookeeper-3.4.10.tar.gz
cd zookeeper-3.4.10/conf/
cp zoo-simple.cfg zoo.cfg
gedit zoo.cfg &
在dataDir=/home/jiezi/zookeeper-3.4.10/data改为自己想要的目录
在尾部添加三行:
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
在zookeeper-3.4.10目录下建立data目录,在data下创建myid文件
mkdir data
touch data/myid
myid文件里写上server序号
cat > data/myid <<EOF(<<EOF是结束符,可以自定义为<<AS,很随意)
>1
>EOF
2、分发zookeeper
scp -r zookeeper-3.4.10 slave1:~/
scp -r zookeeper-3.4.10 slave2:~/
进入slave1修改myid
ssh slave1
cat > zookeeper-3.4.10/data/myid <<a(<<EOF是结束符,可以自定义为<<AS,很随意)
>2
>a
进入slave2修改myid
ssh slave1
cat > zookeeper-3.4.10/data/myid <<a(<<EOF是结束符,可以自定义为<<AS,很随意)
>3
>a
zookeeper配置完毕
3、解压hbase
tar -zxvf hbase-1.2.5-bin.tar.gz
cd hbase-1.2.5/conf
gedit hbase-env.sh &
----------------------------------
添加export JAVA_HOME=/home/jiezi/jdk1.8.0_121
告诉hbase使用外部的zk
export HBASE_MANAGES_ZK=false
----------------------------------
gedit hbase-site.xml &(下边任一个皆可,第二个是老师的)
-----------------------------------------------------------------------
<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,slave1,slave2</value>
<!--这是集群里边的机器-->
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<!---->
</property>
-------------------------------------------------------------------------
<!-- 指定hbase在HDFS上存储的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- hbase.master配置HBase的主节点端口,web端口是60010-->
<property>
<name>hbase.master</name>
<value>hdfs://master:6000</value>
</property>
<!-- 指定zk的地址,多个用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
--------------------------------------------------------------------------
gedit regionservers &
-----------------------------------
master
slave1
slave2
-----------------------------------
4、分发hbase
scp -r hbase-1.2.5 slave1:~/
scp -r hbase-1.2.5 slave2:~/
hbase配置完毕
5、添加PATH
cd
su
vim /etc/profile
添加
export HADOOP_HOME=/home/jiezi/hadoop-2.6.5
export ZOOKEEPER_HOME=/home/jiezi/zookeeper-3.4.10
export HBASE_HOME=/home/jiezi/hbase-1.2.5
(为了方便在这里我们把eclipse的PATH 也加上)
修改为
export PATH=/home/jiezi/eclipse:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:
$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HBASE_HOME/bin:$PATH
6、分发profile
su
scp /etc/profile slave1:/etc/profile(需要输入密码)
scp /etc/profile slave2:/etc/profile(需要输入密码)
7、给master安装eclipse
tar -zxvf eclipse-java-mars-1-linux-gtk-x86_64.tar.gz
8、 安装完毕,重启三台机器
五、启动集群,启动顺序hadoop->zookeeper->hbase(启动之前建议把master的内存扩大到2G,否则吃不消
1、启动hadoop
格式化namenode
hdfs namenode -format
启动
start-all.sh
yes
yes
2、启动zookeeper
在master启动三个终端
终端1:
zkServer.sh start(此处易出现无法开启的错误,把data目录下除myid之外都删除)
终端2:
ssh slave1
zkServer.sh start
终端3:
ssh slave2
zkServer.sh start
--------------------
最好每台都检查一下zookeeper是否启动完成,
zkServer.sh status
--------------------
终端1:
zkCli.sh master:2181,slave1:2181,slave2:2181
3、启动hbase
start-hbase.sh(等一分钟)
--------------------------
测试一下是否启动成功
hbase shell
list
出现TABLE就行
--------------------------
六、配置eclipse
1、解压eclipse
tar -zxvf eclipse-java-mars-1-linux-gtk-x86_64.tar.gz
解压插件,将 release 中的 hadoop-eclipse-kepler-plugin-2.6.0.jar (还提供了 2.2.0 和 2.4.1 版本)复制到 Eclipse 安装目录的 plugins 文件夹中,运行 eclipse -clean 重启 Eclipse 即可(添加插件后只需要运行一次该命令,以后按照正常方式启动就行了)。
hadoop2x-eclipse-plugin-master.zip
右键->NEW HADOOP LOCATION->
loaction name随便填写一个
host填master
DFS master的port填9000
finish
在运行 MapReduce 程序前,还需要执行一项重要操作(也就是上面提到的通过复制配置文件解决参数设置问题):将 /usr/local/hadoop/etc/hadoop中将有修改过的配置文件(如伪分布式需要 core-site.xml 和 hdfs-site.xml),以及 log4j.properties 复制到WordCount项目下的src文件夹