摘要:大数据门槛较高,仅仅环境的搭建可能就要耗费我们大量的精力,本文总结了作者是如何在自己电脑上搭建大数据环境的,希望能帮助学弟学妹们更快地走上大数据学习之路。
0. 准备安装包
本文所需的系统镜像、大数据软件安装包、开发环境软件安装包等都可以在我的百度云盘中下载。
链接:系统镜像和各种大数据软件
密码:n2cn
1. Windows下安装Ubuntu双系统
Hadoop等大数据开源框架是不支持Windows系统的,所以需要先安装一个Linux双系统。
双系统安装
请参考安装指南:
第一步:制定系统启动U盘
第二步:安装双系统
2. 搭建Hadoop平台
Hadoop是Apache 公司开发的一款可靠的、可扩展性的、分布式计算的开源软件。以Hadoop分布式文件系统(HDFS)和分布式运算编程框架(MapReduce)为核心,允许在集群服务器上使用简单的编程模型对大数据集进行分布式处理。下面,请跟着作者一步步搭建自己的Hadoop平台吧。
2.1更新源
在bash终端中运行如下shell指令,设置root用户密码,并切换到root用户
#设置root密码
sudo passwd
#切换到root用户
su root
安装vim编译器
apt-get install vim
备份原始的官方源
cp /etc/apt/sources.list /etc/apt/sources.list.bak
删除原始的官方源
rm /etc/apt/sources.list
运行如下shell命令,重新创建sources.list文件
vim /etc/apt/sources.list
按 i 进入vim的编辑模式,复制下面的阿里源到sources.list文件中,然后按 esc 退出编辑模式,最后输入:+wq ,按回车保存(也可以按shift + zz 进行保存)。
deb http://mirrors.aliyun.com/ubuntu/ zesty main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ zesty-backports main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ zesty-proposed main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ zesty-security main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ zesty-updates main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ zesty main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ zesty-backports main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ zesty-proposed main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ zesty-security main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ zesty-updates main multiverse restricted universe
运行如下shell命令,完成源的更新
apt-get update
2.2 安装SSH、配置SSH无密码登陆
集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:
sudo apt-get install openssh-server
安装后,可以使用如下命令登陆本机,但此时需要密码才能登陆:
ssh localhost
首先退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:
exit # 退出刚才的 ssh localhost
cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys # 加入授权
在 Linux 系统中,~ 代表的是用户的主文件夹(root用户例外),即 “/home/用户名” 这个目录,如你的用户名为 ubuntu,则 ~ 就代表 “/home/ubuntu/”。 如果是root用户则~代表/root,此外,命令中的 # 后面的文字是注释,只需要输入前面命令即可。
此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了。
2.3 安装JAVA环境
Java环境推荐使用 Oracle 的 JDK,首先,准备好文件 jdk-8u162-linux-x64.tar.gz,然后将文件移到/usr/local目录下:
mv jdk-8u162-linux-x64.tar.gz /usr/local
解压文件
tar -zxvf jdk-8u162-linux-x64.tar.gz
重命名文件夹为java
mv jdk-8u162-linux-x64 java
用vim打开/etc/profile文件(Linux下配置系统环境变量的文件)
vim /etc/profile
按i进入编辑模式,在文件末尾添加如下JAVA环境变量
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
添加环境变量后,结果如下图所示,按 esc 退出编辑模式,然后输入:+wq ,按回车保存(也可以按shift + zz 进行保存)。
配置环境变量
最后,需要让该环境变量生效,执行如下代码:
source /etc/profile
检验JAVA是否安装成功
echo $JAVA_HOME # 检验变量值
java -version
java
javac
如果设置正确的话,java -version 会输出 java 的版本信息,java 和 javac 会输出命令的使用指导。
2.4 安装Hadoop
下载 hadoop-2.7.6.tar.gz 文件,然后将文件移到/usr/local目录下
mv hadoop-2.7.6.tar.gz /usr/local
解压
tar -zxvf hadoop-2.7.6.tar.gz
文件夹重命名为hadoop
mv hadoop-2.7.6 hadoop
配置环境变量,打开文件/etc/profile,添加如下Hadoop环境变量
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
同样,需要让该环境变量生效,执行如下代码:
source /etc/profile
输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:
hadoop version
2.5 Hadoop伪分布式配置
Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
修改配置文件 core-site.xml (通过 gedit 编辑会比较方便: gedit ./etc/hadoop/core-site.xml),将当中的
<configuration>
</configuration>
修改为下面配置:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
同样的,修改配置文件 hdfs-site.xml:
<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/data</value>
</property>
</configuration>
Hadoop配置文件说明
Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),伪分布式只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。
配置完成后,执行 NameNode 的格式化:
./usr/local/hadoop/bin/hdfs namenode -format
启动hadoop
./usr/local/hadoop/sbin/start-all.sh
成功启动后,使用jps命令会出现如下如下进程
成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。
3. 安装HBase数据库
HBase是一个分布式的、面向列的开源数据库,源于Google的一篇论文《BigTable:一个结构化数据的分布式存储系统》。HBase以表的形式存储数据,表有行和列组成,列划分为若干个列族/列簇(column family)。欲了解HBase的官方资讯,请访问HBase官方网站。HBase的运行有三种模式:单机模式、伪分布式模式、分布式模式。
单机模式:在一台计算机上安装和使用HBase,不涉及数据的分布式存储;伪分布式模式:在一台计算机上模拟一个小的集群;分布式模式:使用多台计算机实现物理意义上的分布式存储。这里出于学习目的,我们只重点讨论伪分布式模式。
3.1. HBase安装
下载 hbase-2.0.0-bin.tar.gz 文件,并将文件移到/usr/local目录下
mv hbase-2.0.0-bin.tar.gz /usr/local
解压
tar -zxvf hbase-2.0.0-bin.tar.gz
文件夹重命名
mv hbase-2.0.0 hbase
将hbase下的bin目录添加到path中,这样,启动hbase就无需到/usr/local/hbase目录下,大大的方便了hbase的使用。教程下面的部分还是切换到了/usr/local/hbase目录操作,有助于初学者理解运行过程,熟练之后可以不必切换。
编辑/etc/profile文件
vim /etc/profile
在/etc/profile文件尾行添加如下内容:
export HBASE_HOME=/usr/local/hbase
export PATH=$HBASE_HOME/bin:$PATH
export HBASE_MANAGES_ZK=true
编辑完成后,按 esc 退出编辑模式,然后输入:+wq ,按回车保存(也可以按shift + zz 进行保存),最后再执行source命令使上述配置在当前终端立即生效,命令如下:
source /etc/profile
查看HBase版本,确定hbase安装成功,命令如下:
hbase version
3.2. HBase伪分布模式配置
配置/usr/local/hbase/conf/hbase-site.xml,打开并编辑hbase-site.xml,命令如下:
vim /usr/local/hbase/conf/hbase-site.xml
在启动HBase前需要设置属性hbase.rootdir,用于指定HBase数据的存储位置,因为如果不设置的话,hbase.rootdir默认为/tmp/hbase-${user.name},这意味着每次重启系统都会丢失数据。此处设置为HBase安装目录下的hbase-tmp文件夹即(/usr/local/hbase/hbase-tmp),添加配置如下:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
接下来测试运行。首先切换目录至HBase安装目录/usr/local/hbase;再启动HBase。命令如下:
./usr/local/hadoop/sbin/start-all.sh #启动hadoop,如果已启动,则不用执行该命令
./usr/local/hbase/start-hbase.sh #启动hbase
hbase shell #进入hbase shell,如果可以进入说明HBase安装成功了
停止HBase运行,命令如下:
bin/stop-hbase.sh
如果hbase启动成功,则使用jps命令会出现如下进程
hbase启动成功后进程
4. 安装Spark内存计算引擎
Apache Spark 是一个新兴的大数据处理通用引擎,提供了分布式的内存抽象。Spark 最大的特点就是快,可比 Hadoop MapReduce 的处理速度快 100 倍。Spark基于Hadoop环境,Hadoop YARN为Spark提供资源调度框架,Hadoop HDFS为Spark提供底层的分布式文件存储。
4.1. Spark安装
Spark的安装过程较为简单,在已安装好 Hadoop 的前提下,经过简单配置即可使用,首先下载 spark-2.3.0-bin-hadoop2.7.tgz 文件,并将文件移到/usr/local目录下
mv spark-2.3.0-bin-hadoop2.7.tgz /usr/local
解压
cd /usr/local
tar -zxvf spark-2.3.0-bin-hadoop2.7.tgz
文件夹重命名
mv spark-2.3.0 spark
编辑/etc/profile文件,添加环境变量
vim /etc/profile
在/etc/profile文件尾行添加如下内容:
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
编辑完成后,保存退出,再执行source命令使上述配置在当前终端立即生效,命令如下:
source /etc/profile
4.2. Spark配置
安装后,还需要修改Spark的配置文件spark-env.sh
cd /usr/local/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
编辑spark-env.sh文件(vim ./conf/spark-env.sh),在第一行添加以下配置信息:
export JAVA_HOME=/usr/local/java
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export HADOOP_HDFS_HOME=/usr/local/hadoop
export SPARK_HOME=/usr/local/spark
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
配置完成后就可以直接使用,不需要像Hadoop运行启动命令。
通过运行Spark自带的示例,验证Spark是否安装成功。
cd /usr/local/spark
bin/run-example SparkPi 2>&1 | grep "Pi is"
运行结果如下图所示,可以得到π 的 14位小数近似值:
Spark Pi计算结果
5. 安装hive
Hive是一个架构在Hadoop之上的数据仓库基础工具,用来处理结构化数据,为大数据查询和分析提供方便。最初,Hive是由Facebook开发,后来由Apache软件基金会开发,并作为进一步将它作为名义下Apache Hive为一个开源项目。Hive 不是一个关系数据库,也不是一个设计用于联机事务处(OLTP)实时查询和行级更新的语言。简单的说,Hive就是在Hadoop上架了一层SQL接口,可以将SQL翻译成MapReduce去Hadoop上执行,这样就使得数据开发和分析人员很方便的使用SQL来完成海量数据的统计和分析,而不必使用编程语言开发MapReduce那么麻烦。
5.1. Hive安装
下载 apache-hive-1.2.2-bin.tar.gz 文件,并将文件移到/usr/local目录下
mv apache-hive-1.2.2-bin.tar.gz /usr/local
解压
tar -zxvf apache-hive-1.2.2-bin.tar.gz
文件夹重命名
mv apache-hive-1.2.2 hive
编辑/etc/profile文件,配置环境变量
vim /etc/profile
在/etc/profile文件尾行添加如下内容:
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
编辑完成后,保存退出,再执行source命令使上述配置在当前终端立即生效,命令如下:
source /etc/profile
5.2. 安装并配置MySQL
我们采用MySQL数据库保存Hive的元数据,而不是采用Hive自带的derby来存储元数据。ubuntu下Mysql的安装比较简单,直接运行如下命令。在安装过程中,会要求配置用户名和密码,这个一定要记住。
apt-get install mysql-server
启动并登陆mysql shell
service mysql start
mysql -u root -p #登陆shell界面
新建hive数据库
#这个hive数据库与hive-site.xml中localhost:3306/hive的hive对应,用来保存hive元数据
mysql> create database hive;
将hive数据库的字符编码设置为latin1(重要)
mysql> alter database hive character set latin1;
5.3. Hive配置
修改/usr/local/hive/conf下的hive-site.xml,执行如下命令:
cd /usr/local/hive/conf
mv hive-default.xml.template hive-default.xml
上面命令是将hive-default.xml.template重命名为hive-default.xml,然后,使用vim编辑器新建一个配置文件hive-site.xml,命令如下:
cd /usr/local/hive/conf
vim hive-site.xml
在hive-site.xml中添加如下配置信息,其中:USERNAME和PASSWORD是MySQL的用户名和密码。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>USERNAME</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>PASSWORD</value>
<description>password to use against metastore database</description>
</property>
</configuration>
然后,按键盘上的“ESC”键退出vim编辑状态,再输入:wq,保存并退出vim编辑器。由于Hive在连接MySQL时需要JDBC驱动,所以首先需要下载对应版本的驱动,然后将驱动移动到/usr/local/hive/lib中。
#解压
tar -zxvf mysql-connector-java-5.1.47.tar.gz
#将mysql-connector-java-5.1.47.tar.gz拷贝到/usr/local/hive/lib目录下
cp mysql-connector-java-5.1.47/mysql-connector-java-5.1.47-bin.jar /usr/local/hive/lib
启动hive(启动hive之前,请先启动hadoop集群)。
./usr/local/hadoop/sbin/start-all.sh #启动hadoop,如果已经启动,则不用执行该命令
hive #启动hive
5.4. Spark和Hive的整合
Hive的计算引擎默认为MapReduce,如果想要用Spark作为Hive的计算引擎,可以参考文章编译Spark源码支持Hive并部署
6. 结语
本文介绍了大数据环境的搭建过程,旨在让学弟学妹们少踩坑。后面,作者将为大家奉献如何利用Java+Scala来开发大数据应用。如果觉得文章有用的话,别忘记点赞哦O(∩_∩)O~!
网友评论