最近在上大数据实验的,整理一下配置环境的过程。
本文主要包括所需安装包,通用配置、hadoop配置和spark配置。
一.实验环境:
使用虚拟机软件:VMware Workstation Pro
操作系统:Ubuntu 18.04 (master, worker1, worker2,如果没有云主机的话总共需要准备三台虚拟机)
二.安装所需软件包
①hadoop-2.7.0.tar.gz
②jdk-8u271-linux-x64.tar.gz
③spark-3.0.1-bin-hadoop2.7.tgz
版本对应不是必须,java jdk最好使用1.8版本的,然后hadoop的版本与spark安装包名指定的对应即可。
三.通用配置
注:通用配置只需配置master即可,worker1和woker2可以通过master克隆得到。
①将master、worker1、worker2至于同一局域网下,所以在虚拟机网络设置的地方我选择了桥接模式,这三台主机将处于同一局域网下。(不是必须,还有其他方法,推荐使用静态ip的方法)。可以测试一下互相之间是否可以ping通。
②安装ssh:
sudo apt-get install openssh-server
然后启动service sshd start
③安装Java
首先将jdk 安装包放入虚拟机比如/home/downloads。
在/home/downloads下执行:
cp jdk-8u271-linux-x64 /usr/local/jdk_1.8
配置java环境变量(先安装vim):
然后在文件尾加入
export JAVA_HOME=/usr/local/jdk_1.8
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
保存,然后source ~/.bashrc
输入java -version测试。
成功。
③安装hadoop
与安装java类似
cp hadoop-2.7.0 /usr/local/hadoop-2.7.0
然后配置环境:
然后在末尾加入:
export PATH=/usr/local/hadoop-2.7.0/bin:$PATH
export HADOOP_HOME=/usr/local/hadoop-2.7.0
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
保存,source ~/.bashrc
测试,hadoop version
成功!
④修改主机名字
对于master主机:
然后改为master。
对应于worker1和worker2则改为对应名字即可步骤相同,两者的修改步骤在克隆后再操作即可。
⑤安装spark
类似java和hadoop的安装
cp spark-3.0.1-bin-hadoop2.7 /usr/local/spark-3.0.1
暂时不需要配置环境。
⑥安装scala
以上完成了通用环境配置。
三、hadoop配置
①通过master克隆出worker1和worker2两台主机。
②看一下master、worker1和woker2的ip地址,分别修改三台主机的hosts(如果主机多了,需要使用ansible)
然后插入(不要删除原来的内容):
192.168.43.108 worker1
192.168.43.230 worker2
然后保存。
然后在master主机上,执行ping worker1和ping worker2,测试一下能否ping通,如果可以即成功。
③配置三台主机之间的ssh免密码登录环境
在三台主机上分别执行下面的命令:
首次会有一系列提示,只需yes或直接回车。
这样会在~/.ssh目录下生成几个文件,包括了id_rsa.pub。
然后将worker1和worker2上刚刚生成的id_rsa.pub 发送给master:
scp ~/.ssh/id_rsa.pub username@master:~/.ssh/id_rsa.pub.worker2 # woker2 上执行
其中的username要替换成你虚拟机登录的用户名。其中在传输的过程中,需要输入密码。
在master上,将所有公钥id_rsa.pub.worker2、id_rsa.pub.worker1加载到用于认证的公钥文件authorized_key中:
然后将authorized_key再发给worker1和worker2
scp ~/.ssh/authorized_keys username@worker2:~/.ssh/
以上配置完毕,在master上测试ssh worker1和ssh worker2是否能够连接。
④配置hadoop
进入目录/usr/local/hadoop-2.7.0/etc/hadoop
分别修改以下:
<1>修改hadoop-env.sh:
<2>修改yarn-env.sh
<3>修改slaves
worker1
worker2
<4>修改core-site.xml
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop-2.7.0/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
<5>修改hdfs-site.xml
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-2.7.0/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-2.7.0/tmp/dfs/data</value>
</property>
</configuration>
<6>修改mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
<7>修改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>
</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:8035</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>
</configuration>
全部修改好后,将hadoop的配置文件发送给worker1、worker2:
scp -r /usr/local/hadoop-2.7.0/etc/hadoop username@worker2:/usr/local/hadoop-2.7.0/etc
⑤启动hadoop
格式化namenode, 进入/usr/local/hadoop-2.7.0,然后输入以下:
启动hadoop集群:
sbin/start-dfs.sh
使用jps命令,查看启动情况
出现NameNode和SecondaryNameNode等四项证明配置没有问题。
接着我们可以在http://master:50070和http://master:8088查看集群运行的相关情况:
四、配置和运行SPARK
①配置SPARK
<1>修改spark-env.sh
cp spark-env.sh.template spark-env.sh
vim spark-env.sh
在文件中插入以下内容:
export JAVA_HOME=/usr/local/jdk_1.8
export HADOOP_INSTALL=/usr/local/hadoop-2.7.0
export HADOOP_CONF_DIR=$HADOOP_INSTALL$/etc/hadoop
SPARK_MASTER_IP=master
SPARK_LOCAL_DIRS=/usr/local/spark-3.0.1
SPART_DRIVER_MEMORY=2G
<2>修改slaves文件
vim slaves
插入以下内容:
worker1
worker2
最后将所有配置的文件传送到worker1和worker2
scp -r /usr/local/spark-3.0.1/conf username@worker2:/usr/local/spark-3.0.1
②启动SPARK
进入/usr/local/spark-3.0.1,运行:
启动成功。
可以在https://master:8080中查看spark运行情况
运行jps,你会看到多出master和worker两个进程。
以上完成了集群的配置。
暂无评论内容