Spark集群安装过程:
1.启动3个假造机节点。
2.利用ifconfig查看每台假造机的ip地点并记录下来。
3.通过下列命令使用vi编辑器编辑节点1的主机名配置文件。
vi /etc/sysconfig/network
在文件中进行内容更改,将 HOSTNAME字段内容配置成yourname01(其中yourname是你自己对集群的定名,每个人的定名都应该不一致,否则同一个局域网内会出现定名冲突)
依次修改节点2和节点3的主机名配置文件。重启3个假造机节点,使配置生效。
4.通过下列命令使用vi编辑器编辑节点1的hosts文件,设置主机和ip地点的映射。
vi /etc/hosts
在文件下面参加如下内容:
节点1ip地点 yourname01(注意yourname替换成你实际的定名)
节点2ip地点 yourname02
通过下列命令检测主机名与IP映射是否配置成功:
ping yourname01 -c 2
ping yourname02 -c 2
ping yourname03 -c 2
依次修改节点2和节点3的hosts文件,并检测配置是否成功。
5.配置SSH免密码登录,通过免密登录各个节点可以访问其他节点而不必要输入密码验证。在节点1上输入如下指令生成密钥,默认会在~l.ssh/文件夹下生成公钥文件id_rsa.pub和私钥文件id_rsa。
ssh-keygen -t rsa
可以通过ll~/.ssh/对~/.ssh/内容进行查看,以确保生成了密钥文件。
通过下面的命令将公钥文件发送到本机,创建root免密钥通道(必要输入root密码):
ssh-copy-id -i /root/ .ssh/id_rsa. pub root@yourname01
通过下面的命令将公钥文件发送到节点2,创建root免密钥通道(必要输入root密码):
ssh-copy-id -i /root/.ssh/id_rsa.pub root@ yourname02
通过下面的命令将公钥文件发送到节点3,创建root免密钥通道(必要输入root 密码):
ssh-copy-id -i /root/. ssh/id_rsa. pub root@ yourname03
依次在节点2和节点3上生成密钥,并将公钥发送到本机及其他节点。
验证SSH免密码登录:起首在节点1中通过下面的命令可以实现免密码远程登录到节点2
ssh yourname02
然后通过下面的命令可以实现免密码远程登录到节点3:ssh yourname03
如果都能正常登录则体现免密登录正常,然后多次输入exit退出登录。
6.在节点1解压安装 jdk , scala ,Hadoop和 spark ,相应的安装包己经放到/usr/software/目录下,不用下载。
起首必要在终端中输入下列命令,在/usr目录下创建cx工作路径(具体名称可以自己设的)用于存放相干软件。
mkdir /usr/cx
通过下面的命令实现在节点2的/usr目录下创建cx工作路径:
ssh yourname02 "mkdir /usr/cx"
通过下面的命令实现在节点3的/usr目录下创建cx工作路径:
ssh yourname03 "mkdir /usr/cx"
将jdk安装包解压安装到/usr/cx目录下(注意检查安装包的名字是否正确):
tar -zxvf /usr/software/jdk-8u60-linux-x64.tar.gz -C /usr/cx
解压后自己查看/usr/cx文件夹下安装 jdk文件夹的名称。
利用scp将jdk分发到节点2和节点3上(注意检查安装文件夹名称是否正确)。
scp -r /usr/cx/jdk1.8.O_90 root@yourname02 :/usr/cx
scp -r /usr/cx/jdk1.8.0_90 root@yourname03 :/usr/cx
执行命令后检查节点2和节点3相应目录下是否存在相应的jdk文件夹。
依次安装scala,hadoop和 spark(解压安装后可以把一些特殊长的安装目录改短一些便于以后操作),并将scala也分发到节点2和节点3 (hadoop和 spark暂不分发)。
利用vi编辑配置环境变量
vi /etc/profile
在/etc/profile文件中添加下列内容:
export JAVA_HOME=/usr/cx/jdk1.8.0_60
export HADOOP_HOME=/usr/cx/hadoop-3.2.2
export SCALA_HOME=/usr/cx/scala-2.12.14
export SPARK_HOME=/usr/cx/spark-3.1.2
exportPATH=$PATH JAVA_HOME/bin: $SPARK_HOME/bin SCALA_HOME/bin HADOOP_HOME/bin: $HADOOP_HOME/sbin
export CLASSPATH=. JAVA_HOME/lib.dt.jar JAVA_HOME/lib/tools. jar
执行如下命令让环境变量配置生效:
source /etc/profile
通过下面的命令将环境变量配置文件分发到节点2和节点3:
scp /etc/profile root@yourname02 :/etc/profile
scp /etc/profile root@yourname03 : /etc/profile
在节点2和节点3执行命令让环境变量配置生效。
在各个节点执行:
java -version
scala -version
验证java和 scala正常安装,而且环境变量生效。
7.安装hadoop分布式环境。
1)在节点1上创建hadoop存储相干数据的文件夹。
mkdir -p /usr/cx/hadoop-3. 2.2/hadoop/tmp
mkdir -p /usr/cx/hadoop-3.2..2/hadoop/data
mkdir -p /usr/cx/hadoop-3. 2.2/hadoop/name
2)在节点1上修改hadoop-env. sh文件
vi /usr/cx/hadoop-3.2.2/etc/hadoop/hadoop-env. Sh
在文件头部参加如下内容:
export JAVA_HOME=/usr/cx/jdk1.8.0_60
export HADOOP_PREFIX=/usr/cx/hadoop-3.2.2
3)在节点1上修改yarn-env.sh 文件
vi /usr/cx/hadoop-3. 2.2/etc/hadoop/yarn-env. Sh
在文件头部参加如下内容:
export JAVA_HOME=/usr/cx/ jdk1.8.0_60
4)在节点1上修改core-site. xml文件
vi / usr/cx/hadoop-3.2.2/etc/hadoop/core-site.xml
修改内容(注意yourname修改为你的定名,如果改变了hadoop安装目录也要保持一致):
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://yourname01 : 9000</value>
</property>
<property>
<name>hadoop.tmp. dir</name>
<value>/usr/cx/hadoop-3.2.2/hadoop/tmp</value>
</property>
</configuration>
5)在节点1上修改hdfs-site.xml文件
vi / usr/cx/hadoop-3.2.2/etc/hadoop/hdfs-site. xm l
修改内容:
<configuration>
<property>
<name>dfs. namenode.http-address</name>
<value>yourname01 :50070</value>
</property>
<property>
<name>dfs.namenode. name. dir</name>
<value>/usr/cx/hadoop-3.2.2/hadoop/name</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs. permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.datanode. data.dir</name>
<value>/usr/cx/hadoop-3.2.2/hadoop/data</value>
</property>
</configuration>
6)在节点1上修改mapred-site.xml文件
vi / usr/cx/hadoop-3. 2.2/etc/hadoop/mapred-site. Xml
修改内容:
<configuration>
<property>
<name>mapreduce.framework. name</name>
<value>yarn</value>
</property>
<property>
<name>yarn. app. mapreduce. am.env</ name>
<value>HADOOP_MAPRED_HOME=/usr/cx/hadoop-3.2.2/</value>
</property>
<property>
<name>yarn.app. mapreduce.am.env</ name>
<value>HADOOP_MAPRED_HOME=/usr/cx/hadoop-3.2.2/</value>
</property>
<property>
<name>mapreduce. map. env</name>
<value>HADOOP_MAPRED_HOME=/cx/xxt/hadoop-3.2.2/</value>
</property>
<property>
<name>mapreduce. reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/cx/hadoop-3.2.2/</value>
</property>
</configuration>
7)在节点1上修改workers文件
vi / usr/cx/hadoop-3.2.2/etc/hadoop/workers
修改内容:
yourname01
yourname02
yourname03
8)在节点1上修改yarn-site.xml文件
vi / usr/cx/hadoop-3.2.2/etc/hadoop/yarn-site.xm l
修改内容:
<configuration>
<property>
<name>yarn. nodemanager. aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager. hostname</name><value>yourname01</value>
</property>
<property>
<name>yarn.nodemanager. aux-services.mapreduce.shuffle.class</name>
<value>org. apache.hadoop. mapred. ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager. resource.cpu-vcores</name>
<value>1</value>
</property>
<property>
<name>yarn.resourcemanager. address</name>
<value> yourname01 : 8032</value>
</property>
<property>
<name>yarn.resourcemanager. scheduler. address</name>
<value> yourname01:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value> yourname01 :8031</value>
</property>
</configuration>
9)在节点1上修改start-dfs.sh文件
vi /usr/cx/hadoop-3.2.2/sbin/start-dfs.sh
头部添加以下内容:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
10)在节点1上修改stop-dfs.sh文件
vi/usr/cx/hadoop-3.2.2/sbin/stop-dfs. Sh
头部添加以下内容:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
11)在节点1上修改start-yarn. sh文件
vi /usr/cx/hadoop-3.2.2/sbin/start-yarn. Sh
头部添加以下内容:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
12)在节点1上修改 stop-yarn.sh文件
vi /usr/cx/hadoop-3.2.2/sbin/stop-yarn. Sh
头部添加以下内容:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
13)在节点1上修改start-all. sh文件
vi /usr/cx/hadoop-3.2.2/sbin/start-all.sh
头部添加以下内容:
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
14)在节点1上修改stop-all.sh文件
vi /usr/cx/hadoop-3.2.2/sbin/stop-all.sh
头部添加以下内容:
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
15)将配置好的hadoop分发到节点2和节点3
运用scp分发
16)格式化hadoop集群
在节点1上执行
/usr/cx/hadoop-3.2.2/bin/hdfs namenode – format
17)启动hadoop集群
在节点1上执行
/usr/cx/hadoop-3.2.2/sbin/start-all.sh
18)验证集群安装
第17步如果没有出失败提示,则在各个节点执行“jps”命令,在节点1上可以看到“NameNode DataNode NodeManager ResourceManager SecondaryNameNode”的进程,在节点2和节点3上可以看到“NodeManager DataNode”进程。
同时,可以访问下列网页查看相干信息。
http://节点1的ip: 50070
http://节点1的ip:8088
8.spark集群安装
1)在节点1修改spark-env.sh文件
cp /usr/cx/spark-3.1.2/conf/spark-env. sh.template /usr/cx/spark-3.1.2/conf/spark-env.sh
vi /usr/cx/spark-3.1.2/conf/spark-env.sh
头部添加以下内容:
export JAVA_HOME=/usr/cx/jdk1.8.0_60
export SPARK_MASTER_IP=yourname01
export SPARK_WORKER_MEMORY=512M
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_HOME}/etc/Hadoop
2)在节点1修改workers文件
cp /usr/cx/spark-3.1.2/conf/workers.template /usr/cx/spark-3.1.2/conf/workers
vi /usr/cx/spark-3.1.2/conf/workers
在文件尾部参加:
yourname01
yourname02
yourname03
3)将配置好的spark分发到节点2和节点3
4)启动spark集群
在节点1上执行
/usr/cx/spark-3.1.2/sbin/start-all.sh
能看到创建了3个worker,在三个节点上执行“jps“都可以看出worker进程。
9.测试集群
1)自己创建测试的源文件/usr/cx/wordcount.txt,其内容为:
Hello hadoop
hello spark
hello bigdata
2)将本地文件上传到hdfs
hdfs dfs -mkdir -p /hadoop/input
hdfs dfs -put /usr/cx/ wordcount.txt /hadoop/input
3)启动spark-shell
执行如下指令
spark-shell
4)执行以下命令
val file=sc.textFile("hdfs:// yourname01 :9000/hadoop/input/wordcount.txt")
val rdd =file.flatMap(line =line.split(" ")) .map(word =>(word,1 ) ) . reduceByKey(_+_)
rdd.collect()
rdd.foreach(println)
5)查看执行结果,输入:quit退出spark-shell
10.关闭spark和hadoop集群
在节点1执行
/usr/cx/spark-3.1.2/sbin/stop-all.sh
/usr/cx/Hadoop-3.2.2/sbin/stop-all.sh
|