Spark_Hadoop平台搭建

设置SSH

SSH生成密钥,包括私钥id_rsa和公钥id_rsa.pub。私钥用来加密和数字签名,公钥用来解密。服务器间互相拥有对方的公钥,设置好SSH配置文件,即可实现Linux服务器间免密码登陆以及文件的安全传送。
1. 安装SSH,并启动SSH服务: systemctl start sshd.service
2. 生成密钥,存储路径为/root/.ssh: ssh-keygen -t rsa
3. 配置/etc/ssh/sshd_config。重点需要配置的内容如下:

Port 22
PermitRootLogin yes  # 允许Root登陆
RSAAuthentication yes
PubkeyAuthentication yes # 允许公钥验证
AuthorizedKeysFile  %h/.ssh/authorized_keys  # 存储各互联服务器的密钥文件
PermitEmptyPasswords no  # 不允许空密码
PasswordAuthentication yes # 允许密码登陆

若出现错误可重新配置dpkg-reconfigure openssh-server
4. scp命令传送文件:scp <本地文件> root@<对方IP>:<远程文件路径> (注意:hosts文件没有配置时,只能用IP,传送目录需要添加选项-r)

配置host

/etc/hostname存储计算机名,可按照个人需求进行修改,例如:主节点设为master,子节点设为slaves。
/etc/hosts存储各个计算机名和计算机IP的对应关系。有了这个文件再使用scp时,可以将IP替换成计算机名。

127.0.0.1 localhost
***.***.***.*** Master
***.***.***.*** node01
***.***.***.*** node02

安装JDK

由于Hadoop和Spark都是在JVM上运行的,所以首先要配置好java环境,这是最基础的一步。这里注意,本人java测试版本太高后面时长会报错,推荐安装JDK8。

删除旧版本:sudo apt-get remove jdk* / yum remove jdk*
安装JDK8: sudo apt-get install openjdk-8-jdk / yum install openjdk-8-jdk
或直接下载jdk*.tar.gz,在指定文件夹解压,设置java环境变量即可。
注意:若系统中安装了多个java版本,需要指定默认的版本:
sudo update-alternatives --install /usr/bin/java java /home/eric/jdk*/bin/java 300
sudo update-alternatives --config java

安装Hadoop

从官网下载Hadoop二进制文件。直接解压,然后再~/.bashrc 文件内设置好环境变量即可。接下来就时配置Hadoop:

配置Hadoop详细的环境变量

# 通常情况下,设置好JAVA环境变量,其他默认即可
export JAVA_HOME=/home/eric/spark_hadoop/jdk1.8.0_171

创建Hadoop系统目录

进入安装目录:
mkdir tmp   # Hadoop临时文件目录
mkdir dfs/data  # 数据节点数据存储目录
mkdir dfs/name  # 名称节点数据存储目录

修改详细配置文件

Hadoop采用XML语言编辑配置文件,进入安装目录/etc/hadoop
1. 修改core-site.xml: 核心配置文件,设置系统名称和tmp路径

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://eric-master:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name> # 设置hadoop临时文件目录
        <value>/home/eric/spark_hadoop/hadoop-2.7.6/tmp</value>
    </property>
</configuration>
  1. 修改hdfs-site.xml:Hadoop分布式文件系统的配置文件
<configuration>
    <property>
        <name>dfs.replication</name> # 文件复制份数
        <value>2</value> # 本次测试两个slave节点,故份数为2
    </property>
    <property>
        <name>dfs.namenode.name.dir</name> # 配置名称节点数据存放位置
        <value>file:/home/eric/spark_hadoop/hadoop-2.6.5/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name> # 配置数据节点数据存放位置
        <value>file:/home/eric/spark_hadoop/hadoop-2.6.5/dfs/data</value>
    </property>
</configuration>
  1. 修改slaves文件:
    将slaves节点名称添加进slaves。

测试

  1. 首次运行需要格式化节点名称:hadoop namenode -format
  2. 进入sbin目录:./start-dfs.sh

异常处理

Hadoop配置看似简单,但稍不留意就报错。这种情况下,一定要细心检查配置文件。终止一切进程./stop-all.sh,然后重新测试

安装Scala

Spark是用Scala语言编写,Scala语言环境是Spark运行的基础。同JDK的安装,官网下载Scala二进制文件包,解压然后设置环境变量即可。

安装Spark

从官网下载Spark二进制文件。直接解压,然后再~/.bashrc 文件内设置好环境变量即可。接下来进入conf配置Spark:
1. 修改spark-env.sh:spark详细的环境变量

export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export SCALA_HOME=/home/eric/spark_hadoop/scala-2.12.6
export HADOOP_HOME=/home/eric/spark_hadoop/hadoop-2.6.5
export HADOOP_CONF_DIR=/home/eric/spark_hadoop/hadoop-2.6.5/etc/hadoop  # hadoop配置文件目录
export SPARK_MASTER_IP=eric-master # 分布式处理框架中master的IP(hosts文件中存储了IP与主机名的对应关系)
export SPARK_WORKER_MEMORY=2g #slaves节点最大分配内存
export SPARK_WORKER_COERS=2 # slaves节点工作核心数
export SPARK_WOERKER_INSTANCES=1 # 每台主机上开启的worker数目
  1. 修改slaves文件:添加slaves主机名
  2. 测试: 进入sbin目录./start-all.sh(注意hadoop安装目录下也有一个start-all.sh)

设置环境变量

简单说下Linux环境下设置环境变量。进入~/.bashrc编辑:

export JAVA_HOME=/home/eric/spark_hadoop/jdk1.8.0_171
export HADOOP_HOME=/home/eric/spark_hadoop/hadoop-2.6.5
export SCALA_HOME=/home/eric/spark_hadoop/scala-2.12.6
export SPARK_HOME=/home/eric/spark_hadoop/spark-2.3.0-bin-hadoop2.6
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:${HADOOP_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${JAVA_HOME}/bin:$PATH #设置二进制文件的绝对路径,这样就可以在计算机的任何位置启动命令

测试Spark集群

进入spark的bin目录下:./run-example org.apache.spark.examples.LocalPi spark 这是一个spark自带的计算Pi的例子,结果输出Pi的近似值。

Windows终端连接Linux服务器

终端安装Xshell,即可连接服务器。Linux服务器端安装lrzsz,rz本地传输文件到服务器端,sz从服务器端下载文件到本地(需要指定路径,也可设置默认路劲)

总结

整个配置过程远不止以上所述,应该在了解原理的基础上,自己进行最合适的配置。只有懂了相关原理,在遇到问题时才能很快找出问题所在。

猜你喜欢

转载自blog.csdn.net/slx_share/article/details/80297214
今日推荐