搭建hadoop+spark(转载)

4.2 修改hostname与hosts文件
以master上机器为例,打开终端

可以先查看一下目前的ip是不是我设置的那样

~$ ifconfig #查看ip信息

执行如下的操作

把hostname修改成master:

~$ sudo vi /etc/hostname #打开hostname

将ubuntu改成master

把hosts修改成如下所示的样子:

~$ sudo vi /etc/hosts #打开hosts文件

同样地,在slave1和slave2机器上做相似的操作,分别更改主机名为slave1和slave2,然后把hosts文件更改和master一样。

4.3 创建hadoop用户与hadoop用户

创建hadoop组

~$ sudo addgroup hadoop

在hadoop组创建hadoop用户

~$ sudo adduser -ingroup hadoop hadoop

给hadoop用户添加权限

~$ sudo vi /etc/sudoers #打开sudoers文件
在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL,给hadoop用户赋予root用户同样的权限(这里一般会遇到即使用sudo命令打开依然没有修改权限的情况,用<:wq!>指令强制写入然后关闭)

接下来各台主机都用hadoop账户登录进行操作( su + <主机名> )

4.4 配置虚拟机网络,使虚拟机系统之间以及和host主机之间可以通过相互ping通
如果前面安装系统的时候已经选择了NAT模式,那么这里只需要使用 ping + <主机名>指令进行测试即可。分别在3台机器上都进行测试,出现以下情况则表示能连通。

按< Ctrl + C >终止命令,退出连通状态

4.5 配置Java
Java的安装这个不要单独下载jdk文件配置,而直接使用以下三条命令安装:

~ sudo apt-get install openjdk-8-jdk
~$ java -version #查看java版本,确认是否安装成功

配置ssh前建议先将之前调试好的三个系统进行备份,后面的步骤容易出错!!!

4.6 配置ssh
以下步骤三个系统都要做

4.6.1 安装ssh
~$ sudo apt-get install openssh-server
已有ssh或者安装成功了的输入命令

~ ssh localhost
如果出现以下提示说明安装成功

但是笔者一般会遇到以下提示

The authenticity of host 'localhost ( : :1)' can't be established.

看似输完yes后能够输密码登录,实则会对后期产生影响

解决方案如下:

~ cd ~/.ssh
# 进入 .ssh 文件夹
~ sudo chmod 777 /etc/ssh/ssh_config
# 修改ssh_config文件权限
~ vi /etc/ssh/ssh_config
# 打开ssh_config文件
在ssh_config文件最后加上以下两行内容:

StrictHostKeyChecking no

UserKnownHostsFile /dev/null

再次输入

没有初出现The authenticity of host 'localhost ( : :1)' can't be established. 说明问题已解决。

4.6.3 生成秘钥对
~$ ssh-keygen -t rsa #命令前不要加sudo!!

输入之后一直选择enter即可。生成的秘钥位于 ~/.ssh文件夹下。可用cd 命令进入查看。

4.6.4 导入authorized_keys
~$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
这样,就可以不输密码登录了

4.6.5 把master上的authorized_keys拷贝到其他主机的相应目录下,实现远程无密码登录
~ scp authorized_keys hadoop@slave1:~/.ssh/
~/.ssh$ scp authorized_keys hadoop@slave2:~/.ssh/

4.6.6 修改各台主机上authorized_keys文件的权限
所有机器上,均执行命令:

~ ssh slave1
~$ ssh slave2

至此,ssh配置完成,可以保存备份一下。

4.7 配置hadoop(现在master上配置完,然后发给子节点)
4.7.1 直接通过wget命令安在线下载
~$ wget https://archive.apache.org/dist/hadoop/core/hadoop-2.7.3/hadoop-2.7.3.tar.gz

4.7.2 解包移动

解压hadoop包到当前目录

~$ tar -zxvf hadoop-2.7.3.tar.gz 解压

将安装包移到/usr目录下

~$ sudo mv hadoop-2.7.3 /usr/hadoop
4.7.3 新建文件夹

在/usr/hadoop目录下新建如下目录(root)

~ mkdir dfs
/usr/hadoop mkdir dfs/data
/usr/hadoop$ mkdir tmp

4.7.4 配置文件(所有配置文件都在/usr/hadoop/etc/hadoop目录中)
由于前面java环境安装使用通过apt-get install openjdk-8-jdk,因此这里的JAVA_HOME环境变量值可以通过以下命令获得:

~$ ls -l /etc/alternatives/java # 获取java路径

4.7.4.1 配置文件:hadoop-env.sh

修改JAVA_HOME值(改为export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64)

4.7.4.2 配置文件:yarn-env.sh

修改JAVA_HOME值(改为export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64)

4.7.4.3 配置文件:slaves

将内容修改为:

slave1

slave2

4.7.4.4 配置文件:core-site.xml



fs.defaultFS
hdfs://master:9000


io.file.buffer.size
131072


hadoop.tmp.dir
file:/usr/hadoop/tmp
Abase for other temporary directories.


4.7.4.5 配置文件:hdfs-site.xml



dfs.namenode.secondary.http-address
master:9001


dfs.namenode.name.dir
file:/usr/hadoop/dfs/name


dfs.datanode.data.dir
file:/usr/hadoop/dfs/data


dfs.replication
2


dfs.webhdfs.enabled
true


4.7.4.6 配置文件:yarn-site.xml



yarn.nodemanager.aux-services
mapreduce_shuffle


yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler


yarn.resourcemanager.address
master:8032


yarn.resourcemanager.scheduler.address
master:8030


yarn.resourcemanager.resource-tracker.address
master:8031


yarn.resourcemanager.admin.address
master:8033


yarn.resourcemanager.webapp.address
master:8088


4.7.6.7 配置文件:mapred-site.xml

先根据文件 mapred-site.xml.template 创建文件 mapred-site.xml

~$ cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
然后修改 mapred-site.xml 文件



mapreduce.framework.name
yarn


mapreduce.jobhistory.address
master:10020


mapreduce.jobhistory.webapp.address
master:19888


4.7.7 将hadoop传输到子节点的usr/hadoop目录
(如果传输时报错说 :权限拒绝,先把文件传送到非/usr目录下,然后在node上把这个文件再移动到/usr/hadoop)
如笔者正是将hadoop先传输到了子节点的/tmp目录下

~ scp -r /usr/hadoop hadoop@slave2:/tmp

然后,再分别从slave1和slave2上,将hadoop文件夹分别放到各自的/usr/hadoop中

在slave1机器:

~$ sudo mv /tmp/hadoop /usr/hadoop

在slave2机器:

~$ sudo mv /tmp/hadoop /usr/hadoop
4.8 配置环境变量
4.8.1 每个子节点都要配置以下一样的环境变量

编辑/etc/profile

~$ sudo gedit /etc/profile
在后边添加就可以

hadoop

export HADOOP_HOME=/usr/hadoop
export PATH=HADOOP_HOME/sbin
export PATH=HADOOP_HOME/bin
执行< source /etc/profile >使更新的配置生效

配置完成的话可以通过< hadoop version >查看hadoop版本

4.8.2 启动hadoop
进入hadoop安装目录

~$ cd /usr/hadoop
格式化之前需要对 /usr/hadoop 目录权限进行修改

修改权限

/usr/hadoop$ sudo chmod -R 777 /usr/hadoop

格式化

/usr/hadoop$ bin/hdfs namenode -format

启动hadoop

/usr/hadoop$ sbin/start-all.sh
4.8.3 查看hadoop是否完全启动

输入jps查看状态

~$ jps
正常情况下应显示如下情况

4.9 配置Scala
4.9.1 安装Scala
~ scala -version

4.9.3 查看Scala路径
由于前面java环境安装使用通过apt-get install scala,因此scala的路径可以通过以下命令获得:

获取scala路径

~$ ls -l /etc/alternatives/scala

4.10 配置spark
4.10.1 下载Spark 2.0.2
~$ wget https://archive.apache.org/dist/spark/spark-2.0.2/spark-2.0.2-bin-hadoop2.7.tgz
文件会下载到当前目录下,不确定的话可以查看一下目录下有没有该文件。

4.10.2 下载完毕后解压文件
~$ tar xvf spark-2.0.2-bin-hadoop2.7.tgz
4.10.3 将解压的文件移动到hadoop用户下
(这里我们可以在hadoop用户下先建一个spark文件夹,也可以不建,直接移到 /usr/hadoop 里,这个路径没有过多要求)

~sudo mv spark-2.0.2-bin-hadoop2.7 /usr/hadoop/spark 4.10.4 进入spark-2.0.2-bin-hadoop2.7文件夹下的 conf 文件夹,里面有个spark-env.sh.template 文件,是spark环境变量设置的目标,我们可以复制一个出来 /usr/hadoop/spark/spark-2.0.2-bin-hadoop2.7/conf cp spark-env.sh.template spark-env.sh
打开该文件

/usr/hadoop/spark/spark-2.0.2-bin-hadoop2.7/conf$ vi spark-env.sh
在文件末尾添加以下内容

export SCALA_HOME=/usr/share/scala-2.11
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=/usr/hadoop
export HADOOP_CONF_DIR=LD_LIBRARY_PATH

这里的内容是根据我虚拟机的环境来的,如果安装的版本和路径不一样,可以根据实际情况更改。

4.10.5 接下来设置slaves文件
/usr/hadoop/spark/spark-2.0.2-bin-hadoop2.7/conf vi slaves
slave1
slave2
将内容改为

Spark在一台机器上就算配置完毕,接下来在另外两台机器上也做一模一样的配置即可。

4.10.6 启动Spark

启动spark前要先启动hadoop,然后再spark-2.0.2-bin-hadoop2.7文件夹下执行以下命令启动spark

/usr/hadoop/spark/spark-2.0.2-bin-hadoop2.7$ sbin/start-all.sh
运行jps看看Java进程,发现比Hadoop启动的时候多了Master进程。

切换到slave01节点上,运行JPS,看看进程,这里比Hadoop的时候多了一个Worker进程。说明我们的Spark群集已经启动成功。

5、测试
5.1 启动Hadoop群集与Spark群集
5.1.1启动hadoop
~ /usr/hadoop/spark/spark-2.0.2-bin-hadoop2.7$ sbin/start-all.sh
5.1.3检查能否通过浏览器访问webapp
hdfs管理界面 192.168.230.150:50070

yarn管理界面 192.168.230.150:8088

spark管理界面 192.168.230.150:8080

5.2 hadoop测试——wordcount

~ bin/hdfs dfs -mkdir -p /data/input
# 在虚拟分布式文件系统上创建一个测试目录/data/input
/usr/hadoop bin/hdfs dfs-ls /data/input
# 查看文件系统中是否存在我们所复制的文件

运行如下命令向hadoop提交单词统计任务

/usr/hadoop$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /data/input /data/output/result

查看result,结果在result下面的part-r-00000中

/usr/hadoop$ bin/hdfs dfs -cat /data/output/result/part-r-00000

————————————————
版权声明:本文为CSDN博主「景雨泽」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_35085215/article/details/88952763

你可能感兴趣的:(搭建hadoop+spark(转载))