非root环境下搭建spark集群

非root环境下搭建spark集群

用3台机器(节点)作为实例来演示如何搭建Spark集群,主机名分别为node1,node2和node3

配置ssh免密登录

需要采用ssh让master服务器能够免密登录其他两台服务器。

生成公私密钥。

ssh-keygen -t rsa

修改authorized_keys的权限为600,.ssh文件夹权限为700。

cat id_rsa.pub>>authorized_keys
chmod 600 authorized_keys
chmod 700 /home/hadoop/.ssh #hadoop为用户名

可以使用ssh localhost验证本机是否能够免密登录。

将主服务器的公钥拷贝到其他两个服务器

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@XXX.XXX.XXX.XXX #@后面为服务器对应的IP地址

在其他两个服务器上将公钥加入authorized_keys

cat id_rsa.pub>>authorized_keys
chmod 600 authorized_keys
chmod 700 /home/hadoop/.ssh #hadoop为用户名

配置hosts文件

此步骤需要管理员权限

vim /etc/hosts

在hosts文件中编译如下内容:

XXX.XXX.XXX.XXX node1 #XXX.XXX.XXX.XXX为服务器对应的ip地址
XXX.XXX.XXX.XXX node2
XXX.XXX.XXX.XXX node3

安装JDK

手动安装,执行如下shell命令

mkdir /home/hadoop/java/jvm
cd Downloads  #JDK安装包jdk-8u162-linux-x64.tar.gz所在位置
tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /home/hadoop/java/jvm  

修改环境变量

export JAVA_HOME=/home/hadoop/java/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

执行如下命令让.bashrc文件的配置立即生效:

source ~/.bashrc

使用如下命令查看是否安装成功:

java -version

安装hadoop

下载安装包后解压即可,我们选择将Hadoop安装在用户主目录的hadoop文件夹中

sudo tar -zxf ~/Downloads/hadoop-3.1.3.tar.gz -C ~/hadoop
cd ~/hadoop
mv ./hadoop-3.1.3/ ./hadoop           
chown -R hadoop ./hadoop      

可以输入以下命令检查Hadoop是否可用,可用会显示Hadoop版本信息:

cd ~/hadoop/hadoop
./bin/hadoop version

安装spark

下载安装包后解压即可,我们选择将Spark安装在用户主目录的Spark文件夹中

sudo tar -zxf ~/Downloads/spark-2.4.0-bin-without-hadoop.tgz -C ~/spark
cd ~/spark
mv ./spark-2.4.0-bin-without-hadoop/ ./spark

修改hadoop配置文件

有六个文件需要修改,都在/home/hadoop/hadoop/etc/hadoop文件夹下

hadoop-env.sh

在文件末尾加入如下内容:

export JAVA_HOME=/home/hadoop/java/jvm/jdk1.8.0_162

core-site.xml

该文件中增加如下内容,下面的node1:8020node1对应的就是hosts文件下的node1的ip

<configuration>
        <property>
                 <name>fs.defaultFS</name>
                 <value>hdfs://node1:8020</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/home/hadoop/hadoop/tmp</value>
        </property>
        <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        </property>
</configuration>

hdfs-site.xml

<configuration>
        <property>
                 <name>dfs.namenode.secondary.http-address</name>
                <value>node1:50090</value>
        </property>
        <property>
              <name>dfs.namenode.name.dir</name>
              <value>file:/home/hadoop/hadoop/dfs/name</value>
        </property>
        <property>
               <name>dfs.datanode.data.dir</name>
               <value>file:/home/hadoop/hadoop/dfs/data</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                 <name>dfs.blocksize</name>
                 <value>134217728</value>
        </property>
        <property>
                  <name>dfs.webhdfs.enabled</name>
                   <value>true</value>
        </property>
</configuration>

yarn-site.xml

<configuration>
        <property>
                 <name>yarn.resourcemanager.hostname</name>
                 <value>node1</value>
        </property>
        <property>
                 <name>yarn.nodemanager.aux-services</name>
                 <value>mapreduce_shuffle</value>
        </property>
        <property>
                 <name>yarn.resourcemanager.scheduler.address</name>
                 <value>node1:8030</value>
        </property>
        <property>
                 <name>yarn.resourcemanager.address</name>
                 <value>node1:8032</value>
        </property>
        <property>
                 <name>yarn.resourcemanager.resource-tracker.address</name>
                 <value>node1:8031</value>
        </property>
        <property>
                 <name>yarn.resourcemanager.admin.address</name>
                 <value>node1:8033</value>
        </property>
        <property>
                 <name>yarn.resourcemanager.webapp.address</name>
                 <value>node1:8088</value>
        </property>
</configuration>

mapred-site.xml

<configuration>
        <property>
                 <name>mapreduce.framework.name</name>
                 <value>yarn</value>
        </property>
        <property>
                 <name>mapreduce.jobhistory.address</name>
                 <value>node1:10020</value>
        </property>
        <property>
                 <name>mapreduce.jobhistory.webapp.address</name>
                 <value>node1:19888</value>
        </property>
</configuration>

works

在works文件下写入两个子节点的名字,都是在hosts文件中配好了ip。

1 node2
2 node3

主服务配置完成,将hadoop文件夹拷贝到其他两个服务器。

修改spark配置文件

works

node1
node2

spark-env.sh

export SPARK_DIST_CLASSPATH=$(/home/haddoop/hadoop/hadoop/bin/hadoop classpath)
export HADOOP_CONF_DIR=/home/haddoop/hadoop/hadoop/etc/hadoop
export SPARK_MASTER_IP=XXX.XXX.XXX.XXX

非root环境下搭建spark集群

上一篇:Clion - 使用:创建项目和远程开发


下一篇:vim使用指北 ---- Multiple Windows in Vim