安装 HBase, Spark都需要首先安装Hadoop!

1 基本环境准备

1.1 hadoop用户添加和权限配置

为了统一管理,主从结点上都用hadoop用户名来管理,不是非限定用hadoop!
这几条命令用root用户操作,普通用户用sudo,这些命令必须在所有要配置的机器上进行一次

1
2
adduser hadoop
adduser hadoop sudo #添加到sudo用户组里边

CentOS部分版本可能默认没有sudo组,需要执行

1
2
3
su
#输入密码
vim /etc/sudoers

找到 root ALL=(ALL) ALL这一行,在它下面写入

1
hadoop ALL=(ALL)  ALL #hadoop是用户名

这样hadoop用户就可以用sudo命令了。

1.2 安装java,配置JAVA_HOME环境变量,已经安装过的跳过此步

1.2.1 安装oracle-jdk

1
2
3
4
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

1.2.2 设置JAVA_HOME

1
2
3
vim ~/.bashrc 
sudo vim /etc/bashrc
#使用以上两个命令都可以,/etc/bashrc对所有用户都有效,~/.bashrc只对当前用户有效。下同

写入

1
export JAVA_HOME=/usr/lib/jvm/java-8-oracle

运行

1
2
3
4
source ~/.bashrc
#source /etc/bashrc
#上边编辑的是哪个就source哪个,下同
echo $JAVA_HOME #查看一下设置的对不对,生效了木有

1.3 hosts文件修改

1
sudo vim /etc/hosts

如下配置
192.168.6.131 hadoop-master
192.168.6.132 hadoop-slave1
如果需要其他机器,同样写入保存即可,我这里只有两台机器,一个做主结点,一个做从结点,之后ping一下看ip地址是否正确

1
2
ping hadoop-master -c 3
ping hadoop-slave1 -c 3

1.4 ssh 配置

1.4.1 openssh-server安装

首先需要所有的机器都能够进行ssh连接,一般购买的服务器默认都是安装了的(如果true直接进入第二步,无密码连接),如果是自己的系统与电脑则需要安装openssh-server,安装方法如下

1
sudo apt-get install openssh-server

安装完成后即可测试

1
ssh localhost

提示输入密码,输入即可,我们需要不用密码登录,这样hadoop才能连接其他机器.接着进行下一步无密码连接配置

无密码连接

这里讲一下原理,如果机器A需要无密码ssh机器B,我们需要在机器A上生成公钥,然后把公钥分发给机器B,在机器B上我们把公钥添加到authorized_keys里边,当机器A需要连接机器B的时候,机器B生成随机串用机器A的公钥加密并传回给A,A用私钥对加密的串解密再返回给B,B验证解密结果,正确的话就让A成功连接,这样就免去了输入用户和密码的步骤啦!

1
2
ssh-keygen -t rsa #按提示完成后运行下边命令,其实一路回车下去就行了,如果其他机器上的用户名不一样,则需要按提示进行
cat ~/.ssh/id_rsa.pub >> ~/.ssh/.authorized_keys #id_rsa.pub 是刚生成的那个文件,这里做的是我们无密码连接自己!

再测试应该就是不要密码即可登录的了。如果还提示要密码,运行

1
chmod og-wx ~/.ssh/authorized_keys

把master上的公钥传输给所有的slave机器,在所有slave上把master的公钥都cat进authorized_keys,这样master机器访问所有的slave都不再需要密码了,如果有类似其他需求,按同样方法。

经过以上步骤并验证没有问题,说明我们的基础准备已经完成,接下来就可以进行Hadoop,hbase,scala,spark的安装了,注意以下操作都是在一台机器上进行的,当操作完成后需要把配置好的文件都打包发送到所有机器上并解压,那样才算配置完成!

2 Hadoop下载安装

在官网上下载Hadoop压缩包,比如下载的文件名hadoop-2.7.1.tar.gz,之后将其解压到/usr/local下边

1
2
3
4
5
tar -zxf hadoop-2.7.1.tar.gz -C /usr/local
cd usr/local
sudo mv hadoop-2.7.1 hadoop #为了方便版本升级后不需要再修改~/.bashrc,所以这里将其重命名为hadoop
sudo chown hadoop:hadoop ./hadoop
#为了避免权限不够的问题,这里将hadoop文件夹的权限赋于hadoop用户和用户组,如果是在如个人Home下边等不需要验证权限的位置,省略此步

2.1 PATH配置

1
2
3
vim ~/.bashrc 
#sudo vim /etc/bashrc
#使用以上两个命令都可以,/etc/bashrc对所有用户都有效,~/.bashrc只对当前用户有效。下同

写入

1
export PATH=$PATH:/usr/local/hadoop/bin:/usr/locao/hadoop/sbin #这里的路径是上一步解压安装Hadoop的路径

2.2 hadoop文件配置

新的配置文件在hadoop/etc/hadoop/路径下面,网上许多教程都写的是在conf下,注意可能会找不到

2.2.1 hadoop/etc/hadoop/core-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-master:9000</value> <!--注意端口号,进行hadoop fs -xxx命令是需要这个端口号的,hbase配置也是需要这个端口号的 -->
</property>

<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
</property>

</configuration>

注意hadoop.tmp.dir的配置路径,默认的是系统tmp路径,重启后是会被清理掉的。

2.2.2 hadoop/etc/hadoop/hdfs-site.xml

注意dfs.replication值,由于只有两台机器,所以一台做NameNode,另一台作为DataNode,值为1,如果有多台机器,需要配置为实际数。
dfs.namenode.name.dir存放的是namenode需要的相关数据,需要按实际需要更换位置,生产环境并不建议设置在tmp目录下边。
dfs.dtatnode.dtat.dir就是分布式文件在datanode上的存放位置,生产环境中当然不能在tmp下边啦!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>


<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>

<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>

</configuration>

2.2.3 mapred-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<configuration>

<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>


<property>
<name>mapreduce.jobhistroy.address</name>
<value>hadoop-master:10020</value>
</property>

<property>
<name>mapreduce.jobhistroy.webapp.address</name>
<value>hadoop-master:19888</value>
</property>

</configuration>

2.2.4 yarn-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<configuration>

<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-master</value>
</property>


<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>


</configuration>

2.2.5 slaves文件配置

将所有的DataNode结点机器名写在文件中,一行一个机器名如下

hadoop-slave1
hadoop-salve2

2.2.6 hadoop-env.sh

主要配置JAVA_HOME,设置为实际的路径即可!

经过上面的配置,将hadoop文件压缩发送一其他集群机器上并解压到一致的路径下即可

1
2
3
4
5
sudo tar -zcf ~/hadoop.lreis.tar.gz /usr/local/hadoop/
scp ~/hadoop.lreis.tar.gz hadoop-slave1:~/
ssh hadoop-slave1
sudo tar -zxf ~/hadoop.lreis.tar.gz -C /usr/local/
sudo chown -R hadoop:hadoop /usr/local/hadoop/

最后需要在hadoop-master机器上进行namenode的初始化

1
/usr/loacl/hadoop/bin/hadoop namenode -format

最后执行start-dfs.sh,start-yarn.sh后,运行jps命令查看当前的java进行,在master上应该包括以下几个进程才属正常
NameNode
ResourceManager
在savle机器上的进程应该有如下进程
NodeManager
DataNode

如果进程正常,浏览器查看hadooop-master:50070看到Live Nodes 不为零才可以,如果为零的话去查看日志分析原因!

3 hbase 安装

下载hbase ,如下载下来的文件名叫做hbase-1.1.2-bin.tar.gz,同样解压到/usr/local/下边,重命名,更改权限,配置环境变量等 操作

1
2
3
4
tar -zxf hbase-1.1.2-bin.tar.gz -C /usr/local
cd usr/local
sudo mv hbase-1.1.2-bin hbase #为了方便版本升级后不需要再修改~/.bashrc,所以这里将其重命名为hbase
sudo chown hadoop:hadoop ./hbase

3.1 配置环境变量

1
vim ~/.bashrc

写入

1
2
HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HBASE_HOME/bin #这里的路径是上一步解压安装Hbase的路径

3.2 hbase配置

hbase的配置文件在hbase/conf目录下,需要修改hbase-site.xml,hbase-env.sh,regionservers三个文件

3.2.1 hbase-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
<configuration>

<property>
<name>hbase.cluster.distributed</name> <!-- 说明是集群环境,不是伪分布式 -->
<value>true</value>
</property>

<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop-master:9000/hbase</value> <!-- 这里的hadoop-master:9000要与hadoop的core-site.xml配置文件位置一样,/hbase目录则是自己设置的值,也可以为其他路径/hbase2等等
</property>

</configuration>

3.2.2 regionservers

一行一个机器,如
hadoop-master
hadoop-slave1
….

3.2.3 hbase-env.sh

配置JAVA_HOME即可

配置完成后打包分发到其他机器上,操作如同hadoop中的步骤,不再赘述!
运行start-hbase.sh,查看jps,master机器上应该多出以下几个进程
HMster
HRegionServer
HQuorumPeer
slave机器上多出进程
HRegionServer

4 scala,spark安装

spark运行需要scala环境,所以scala要安装在spark前面,且是必须滴!
下载scala并解压到/usr/local下边,配置~/.bashrc即可

1
2
export SCALA_HOME=/usr/local/scala
export PATH=$PAHT:$SCALA_HOME/bin

下载spark,并解压到/usr/local路径,配置~/.bashrc

1
2
export SPARK_HOME=/usr/local/spark
export PAHT=$PATH:$SPARK_HOME/bin

运行source ~/.bashrc使配置生效

4.1 spark 配置

4.1.1 slaves 文件

没有此此文件就创建一个,内容一行一个机器,不再赘述

spark-env.sh

1
2
3
4
5
export JAVA_HOME=/usr/java/jdk1.7.0_79
export SCALA_HOME=/usr/local/scala
export SPARK_MASTER_IP=hadoop-master #主结点名
export SPARK_WORKER_MEMORY=1g #分配内存大小
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop #hadoop配置文件的路径

记得把scala,spark在所有机器上都配置一下,方法不再赘述。运行/usr/local/spark/start-all.sh启动spark集群。
注意由于hadoop/sbin下也有一个start-all.sh,由于这两个文件都配置在PATH里边了,运行hadoop/sbin/start-all.sh的时候可以看到提示该方法已经不推荐使用了,可以把该文件重命名一下,这样直接运载start-all.sh就肯定是spark的了,不会发生歧义。

至此,hadoop,hbase,scala,spark的安装配置就完成了,注意这里只是让集群环境跑了起来,真实的生产环境还有许多其他参数需要配置,参见官方文档!