Ubuntu 18.04 安装大数据入门教程(hadoop3.2、scala2.11.12、spark2.4、sbt1.2.8)

1 篇文章 0 订阅
1 篇文章 0 订阅

环境依赖说明

参考教程 : https://blog.csdn.net/weixin_42001089/article/details/81865101
Hadoop - 依赖: SSH server、JDK 。
Spark ---- 依赖: hadoop、JDK、scala、sbt
版本不要弄错了,不然会有问题

安装 SSH service

集群,单节点模式都需要用到SSH登录(类似于远程登录,你可以登录某台Linux主机,并且在上面运行命令),Ubuntu默认已安装了SSH client,此外还需要安装SSH server:

sudo apt install openssh-server

安装后,可以使用命令登录本机:

ssh localhost

此时会有如下提示(SSH首次登陆提示),输入yes。然后按提示输入本机密码,这样就可以登录到本机。
但这样登录是需要每次输入密码的,我们需要配置成SSH无密码登录比较方便。
首先推出刚才的ssh,就回到了原先的终端窗口,然后利用ssh-keygen生成密钥,并将密钥加入到授权中:

exit

exit 退出刚才的ssh localhost

cd ~/.ssh/

若没有该目录,请执行一次

ssh localhost
ssh-keygen -t rsa

会有提示,都按回车就可以

cat ./id_rsa.pub >> ./authorized_keys

加入授权,此时再用

ssh localhost

命令,无需输入密码就可以直接登录了.

安装JDK8

  1. 官网下载JDK   
    地址: http://www.oracle.com/technetwork/articles/javase/index-jsp-138363.html 选择相应的 .gz包下载

  2. 解压缩,放到指定目录(以jdk-7u60-linux-x64.gz为例)
    创建目录:

sudo mkdir /usr/lib/jvm

解压缩到该目录:

 sudo tar -zxvf jdk-7u60-linux-x64.gz -C /usr/lib/jvm
  1. 修改环境变量:
sudo vim ~/.bashrc

文件的末尾追加下面内容:

#set oracle jdk environment
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_60  ## 这里要注意目录要换成自己解压的jdk 目录
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH 
  1. 使环境变量马上生效
 source ~/.bashrc
  1. 测试
java -version

成功示例:
成功示例

安装hadoop3.2

Hadoop 可以通过 http://mirrors.cnnic.cn/apache/hadoop/common/ 下载,一般选择下载最新的稳定版本,即下载”stable”下的hadoop-3.2.0.tar.gz这个格式的文件,这是编译好的,另一个包含src的则是Hadoop源代码,需要进行编译才可使用。
下载完hadoop文件后一般可以直接使用。
我们选择将Hadoop安装至/usr/local/中:

sudo tar -zxf ~/Downloads/hadoop-2.7.3.tar.gz -C /usr/local  #解压到/usr/local中

cd /usr/local/

sudo mv ./hadoop-2.7.3/ ./hadoop  #将文件夹名改为hadoop

sudo chown -R hadoop ./hadoop     #修改文件权限  

Hadoop解压后即可使用。输入如下命令来检查Hadoop是否可用,成功则会显示Hadoop版本信息:

cd /usr/local/hadoop
./bin/hadoop version

Hadoop单机配置

Hadoop默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。非分布式即单java进程,方便进行调试。
现在可以执行例子来感受下Hadoop的运行。
Hadoop附带了丰富的例子(运行./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar 可以看到所有的例子),包括wordcount、terasort、join、grep等。
在此我们选择运行grep例子,将input文件夹中的所有文件作为输入,筛选当中符合正则表达式dfs[a-z.]+的单词并统计出现的次数,最后输出结果到output文件夹中。

cd /usr/local/hadoop
mkdir ./input
cp ./etc/hadoop/*.xml ./input  #将配置文件作为输入文件
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jar grep ./input/ ./output 'dfs[a-z.]+'
cat ./output/*

执行成功后如下所示,输出了作业的相关信息,输出的结果是符合正则的单词dfsadmin出现了1次
1 dfsadmin

rm -r ./output

Hadoop伪分布式配置

Hadoop可以在单节点上以伪分布式的方式运行,Hadoop进程以分离的java进程来运行,节点既作为NameNode也作为DataNode,同时,读取的是HDFS中的文件。

Hadoop的配置文件位于hadoop目录下的etc/hadoop/目录中,伪分布式需要修改2个配置文件core-site.xml和hdfs-site.xml。Hadoop的配置文件是xml格式,每个配置以声明property的name和value的方式来实现。

修改配置文件core-site.xml(使用 vim ./etc/hadoop/core-site.xml),修改下面的

cd ./etc/hadoop/
#如果没有vim vi 也可以 或者 安装 sudo apt install vim
vim core-site.xml
# vim 编辑器简单说明
1.摁 "i" 开始编辑
2.摁 “ESC” 输入 “:wq” 保存  注意 别忘记 ":" 号

修改:

<configuration>  
</configuration>  

修改为:

<configuration>
        <property>
                <name>hadoop.tmp.dir</name>
                #你的hadoop安装目录下的tmp
                <value>/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

vim hdfs-site.xml

修改:

<configuration>  
</configuration>  

修改为:

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                #修改成你的hadoop安装目录
                <value>/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                #修改成你的hadoop安装目录
                <value>/usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>

切换回hadoop主目录。如:cd /usr/local/hadoop
NameNode的格式化:如果没有问题此命里只执行一次便可,不要多次执行

./bin/hdfs namenode -format

出现如下即成功:

18/08/20 11:07:16 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
18/08/20 11:07:16 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at ykt-virtual-machine/127.0.1.1
************************************************************/

开启NameNode和DataNode守护进程

./sbin/start-dfs.sh

注意:如果报错没有没有JAVA_HOME
则手动添加即可:(当前目录是usr/local/hadoop)
在文件最下面添加你的 JAVA_HOME 地址
如果不知道可以用

echo $JAVA_HOME

查询JAVA_HOME地址 然后复制添加到文件最下变

cd etc/hadoop/
 
vim hadoop-env.sh
# JAVA_HOME地址
export JAVA_HOME=/usr/local/java/jdk1.8.0_181

开启NameNode和DataNode守护进程

./sbin/start-dfs.sh

验证:

jps

如果出现以包含下4个线程即为成功:

3648 DataNode
3941 Jps
2678 NameNode
3095 SecondaryNameNode

运行:

上面的单击模式,grep例子读取的是本地数据,伪分布式读取则是HDFS上的数据。

伪分布式和单机的mapreduce基本上都是一样的,最主要的区别就是该模式下要使用HDFS的文件系统。

所以首先需要在HDFS中创建用户目录:

./bin/hdfs dfs -mkdir -p /user/hadoop

然后创建输入文件夹:

./bin/hdfs dfs -mkdir /user/hadoop/input

类似单机模式,将etc/hadoop下所有的xml文件复制到输入

./bin/hdfs dfs -put ./etc/hadoop/*.xml /user/hadoop/input

然后查看:

./bin/hdfs dfs -ls /user/hadoop/input

可以看到:

-rw-r–r-- 1 ykt supergroup 7861 2018-08-20 13:15 /user/hadoop/input/capacity-scheduler.xml
-rw-r–r-- 1 ykt supergroup 1028 2018-08-20 13:15 /user/hadoop/input/core-site.xml
-rw-r–r-- 1 ykt supergroup 10206 2018-08-20 13:15 /user/hadoop/input/hadoop-policy.xml
-rw-r–r-- 1 ykt supergroup 1069 2018-08-20 13:15 /user/hadoop/input/hdfs-site.xml
-rw-r–r-- 1 ykt supergroup 620 2018-08-20 13:15 /user/hadoop/input/httpfs-site.xml
-rw-r–r-- 1 ykt supergroup 3518 2018-08-20 13:15 /user/hadoop/input/kms-acls.xml
-rw-r–r-- 1 ykt supergroup 5939 2018-08-20 13:15 /user/hadoop/input/kms-site.xml
-rw-r–r-- 1 ykt supergroup 690 2018-08-20 13:15 /user/hadoop/input/yarn-site.xml

运行grep(该流程的mapreduce就和单机一样了,不一样的就是从hdfs文件系统取输入)

 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jar grep /user/hadoop/input output 'dfs[a-z]+'

查看结果:

./bin/hdfs dfs -cat output/*

可以看到和单机模式一样的结果
1 dfsadmin

利用HDFS Web界面,不过只能查看文件系统数据
注意 新版的hadoop不再是 http://localhost:50070 而是 http://localhost:9870

#关闭Hadoop
./sbin/stop-dfs.sh
开启Hadoop:
./sbin/start-dfs.sh
./sbin/start-yarn.sh

说明:
ResourceManager和NodeManager是yarn资源调度器启动的

DataNode、 NameNode和SecondaryNameNode是hdfs文件系统启动的

所以如果有哪项没有启动成功,就说明对应(yarn或hdfs)的配置文件没有配置成功,需要去看日志手动解决

二者都有相应的web即:

yarn:
http://localhost:8088/cluster

安装 Scala2.11.12

下载地址:https://www.scala-lang.org/download/2.11.12.html

下载好后解压到:/usr/local/

sudo tar zxvf scala-2.11.12.tgz -C /usr/local/

进入到减压目录并重命名:

cd /usr/local/
 
sudo mv scala-2.11.12 scala

配置环境变量:

sudo vim  ~/.bashrc 

在最后添加:

#scala 环境变量
export SCALA_HOME=/home/xiyeming/SoftwareSpace/scala
# 如果 PATH  存在 就不用在添加了 直接在后面PATH追加就可以了 以 “:” 分隔
export PATH=$PATH:$SCALA_HOME/bin

生效:

source ~/.bashrc

测试:

scala -version

Spark安装:

下载地址:http://spark.apache.org/downloads.html
在这里插入图片描述
下载好后解压到:/usr/local/

sudo tar zxvf spark-2.4.0-bin-hadoop2.7.tgz  -C /usr/local/

进入到减压目录并重命名:

​cd /usr/local/
sudo mv spark-2.4.0-bin-hadoop2.7 spark

配置环境:

sudo vim ~/.bashrc
export SPARK_HOME=/home/xiyeming/SoftwareSpace/spark
export PATH=$PATH:$SPARK_HOME/bin

生效:

source ~/.bashrc

配置配置’spark -env.sh’
进入到spark/conf/

cp spark-env.sh.template spark-env.sh
vim spark-env.sh
export JAVA_HOME=/usr/local/java/jdk1.8.0_181 #你的JAVA_HOME
export HADOOP_HOME=/usr/local/hadoop  #你的HADOOP_HOME
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop #你的HADOOP_HOME
export SCALA_HOME=/usr/local/scala #你的scala_HOME
export SPARK_HOME=/usr/local/spark  #你的spark_HOME
export SPARK_MASTER_IP=127.0.0.1
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_WEBUI_PORT=8099
export SPARK_WORKER_CORES=3
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_MEMORY=5G
export SPARK_WORKER_WEBUI_PORT=8081
export SPARK_EXECUTOR_CORES=1
export SPARK_EXECUTOR_MEMORY=1G
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$HADOOP_HOME/lib/native

配置Slave

cp slaves.template  slaves
vim slaves

默认就是localhost 所以不用修改
如果有节点自己添加就可以了。
启动(前提是hadoop伪分布已经启动,就是上面的jps后出现那几个):
启动sbin目录下的start-master.sh以及start-slaves.sh
Spark的web界面:http://127.0.0.1:8099/

安装 sbt

https://www.scala-sbt.org/download.html

在这里插入图片描述
这里我们使用 sbt 1.2.8 (.tag)
建立目录,并将下载的文件解压到所建目录

mkdir /opt/scala

sudo tar -vzvf sbt-1.2.8.tgz -C /opt/scala
$ vim ~/.bashrc
/*在文件尾部添加如下代码后,保存退出*/
export PATH=/opt/scala/sbt/:$PATH

/*使配置文件立刻生效*/
$ source ~/.bashrc

创建运行脚本

cd  /opt/scala/sbt

sudo vim sbt

在sbt文件中添加如下内容
#/opt/scala/sbt/bin/sbt-launch.jar 换成你的目录

SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M" java $SBT_OPTS -jar /opt/scala/sbt/bin/sbt-launch.jar "$@"

4.修改sbt文件的权限

chmod u+x sbt

测试:

sbt sbtVersion
/*第一次执行时,会下载一些文件包,然后才能正常使用,要确保联网了,安装成功后显示如下*/
# 注意:以前版本的 命令是 sbt sbt-version  现在版本是 sbt version  或 sbt sbtVersion
[info] Set current project to sbt (in build file:/opt/scala/sbt/)
[info] 1.2.8

~ END ~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值