本教程环境部署是以两台Linux主机进行搭建
安装步骤
- 下载相关软件
- 配置环境变量
- 配置免密码登陆的ssh
- 配置hadoop
- 配置spark
下载相关软件
- jdk 多少位系统下载多少位版本
- hadoop 下载二进制包,切记不要下载源码包
- spark 同上
- scala 同上
- 解压命令 tar -zxvf 进行解压
- 使用mv命令将其全部移动到/usr/local目录下
配置环境变量
|
|
配置ssh
1. 测试是否安装了openssh-server
|
|
2. 配置免秘钥登录
将自己添加到免密码登录
1234567生成公钥和私钥,authorized_keys适用于保存所有允许以当前用户身份登录到ssh客户端用户的公钥内容说明:authorized_keys 文件可能是不存在的,下面的命令是存在则追加,不存在这创建ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsacat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys设置完成后,用下面的命令测试是否需要密码ssh localhost上面的作用就是将自己添加的到免密码登录,master和worker都需要配置将worker的公钥传到master中
12345678910在worker中配置ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsacat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys测试是否配置成功ssh localhost传输id_rsa.pub 到master中scp ~/.ssh/id_rsa.pub root@Master:/root/.ssh/id_rsa.pub.worker (Master代替的是ip地址)如果有多台worker,分别在两个worker中执行scp ~/.ssh/id_rsa.pub root@Master:/root/.ssh/id_rsa.pub.worker01scp ~/.ssh/id_rsa.pub root@Master:/root/.ssh/id_rsa.pub.worker02master将worker传过来的公钥添加到authorized_keys中
12345678回到master中执行cat ~/.ssh/ip_rsa.pub.worker >> ~/.ssh/authorized_keys如果是多个workercat ~/.ssh/ip_rsa.pub.worker01 >> ~/.ssh/authorized_keyscat ~/.ssh/ip_rsa.pub.worker02 >> ~/.ssh/authorized_keys以上不步骤就是使worker可以免密码登陆master在worker(192.168.1.7)中使用下面命令测试是否可以免密码登陆master(192.168.1.6)ssh root@192.168.1.6master将自己的authorized_keys传到worker中,以实现master登陆worker的免密码
1234567在master中scp ~/.ssh/authorized_keys root@192.168.1.7:/root/.ssh/authorized_keys如果有多台scp ~/.ssh/authorized_keys root@192.168.1.7:/root/.ssh/authorized_keysscp ~/.ssh/authorized_keys root@192.168.1.8:/root/.ssh/authorized_keysmaster中使用下面命令测试是否配置成功ssh root@192.168.1.7
配置Hadoop
本教程使用了两台主机,Hadoop需要配置在这两台主机上,这里先将Hadoop配置master中,另外一台的安装方法是一样的
配置 /etc/hosts 先配置master再配置worker
1234vim /etc/hosts在尾部添加192.169.1.6 master192.169.1.7 worker01配置 /etc/hostname 先配置master再配置worker
1234vim /etc/hostname有就修改没有就添加master中为masterworker中为worker01创建目录
123456cd /usr/local/hadoop-2.7.3mkdir tmpmkdir dfscd dfsmkdir namemkdir data编辑core-site.xml
12345678910111213cd /usr/local/hadoop-2.7.3/etc/hadoopvim core-site.xml在configuration中添加<configuration><property><name>fs.defaultFS</name><value>hdfs://127.0.0.1:9000</value></property><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop-2.7.3/tmp</value></property></configuration>编辑mapred-site.xml
123456789cp mapred-site.xml.template mapred-site.xmlvim mapred-site.xml在configuration中添加<configuration><property><name>mapred.job.tracker</name><value>127.0.0.1:9001</value></property></configuration>编辑hdfs-site.xml
12345678910111213141516vim hdfs-site.xml在configuration中添加<configuration><property><name>dfs.replication</name><value>2</value></property><property><name>dfs.namenode.name.dir</name><value>/usr/local/hadoop-2.7.3/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>/usr/local/hadoop-2.7.3/dfs/data</value></property></configuration>修改masters和slaves文件内容
12345masters存在则修改,不存在则创建cd /usr/local/hadoop-2.7.3/etc/hadoopecho master > mastersvim slaves在文本中添加worker01配置worker的hadoop
1234567891011121314将必要的软件和.bashrc中的内容和master中配置好的hadoop文件夹复制到worker中在此教程中有:/usr/local/hadoop-2.7.3 (这个配置好的hadoop文件夹)jdkscala.bashrc 中添加的内容Warning:位置和目录名一定要匹配,配置完成一定要测试一下如果是U盘copy过去的可能是没有执行的权限的chmod -R 755 /usr/local/hadoop-2.7.3/binchmod -R 755 /usr/local/hadoop-2.7.3/sbin/*java -versionhadoop version等等是否可以成功运行在master中格式化集群文件系统
12hadoop namenode -format可以看到没有任何的错误,就是成功的在master中启动hadoop集群服务
1234cd /usr/local/hadoop-2.7.3/sbin./start-all.sh (与先start-dfs.sh 和 再start-yarn.sh是等价的,所有stop-all.sh是一样的)在这个期间可以需要输入几次yes然后发现没有报错就是成功的使用jps命令查看服务的运行情况
1234567891011121314151617master:27266 NameNode27459 SecondaryNameNode27619 ResourceManager27879 Jpsworker:5425 Jps4902 NodeManager4748 DataNode简要的说明各个服务的左右HDFS: hadoop distribution file system 分布式文件系统NameNode:名称节点,这个节点存储在master上,可以理解为NameNode是书签SecondaryNameNode:是NameNode的备份ResourceManager:资源管理器DataNode:数据节点,是NameNode对应的数据replication:是DataNode的备份(为什么没有不知道)显示效果是和Spark核心源码分析与开发实战的显示效果是匹配的(但是强烈觉得这本书不怎么样)
配置Spark
本教程使用了两台主机,Spark需要配置在这两台主机上,这里先将Spark配置master中,另外一台的安装方法是一样的
配置spark-env.sh
12345678910111213141516171819cd /usr/local/spark-2.0.1/confcp spark-env.sh.template spark-env.shvim spark-env.sh在末尾处添加export JAVA_HOME=/usr/local/jdk1.8.1export SCALA_HOME=/usr/local/scala-2.11.8export HADOOP_HOME=/usr/local/hadoop-2.7.3export HADOOP_CONF_DIR=/usr/local/hadoop-2.7.3/etc/hadoopexport SPARK_MASTER_IP=192.168.1.6export SPARK_WORKER_MEMORY=2gexport SPARK_WORKER_CORES=2export SPARK_EXECUTOR_INSTANCES=1# export SPARK_WORKER_INSTANCES=1# 在spark 1.0+中使用的是SPARK_WORKER_INSTANCES# 而在spark 2.0+使用的是SPARK_EXECUTOR_INSTANCES# 注意:SPARK_MASTER_IP:指的是spark集群master节点的ip地址SPARK_WORKER_MEMORY:指的是每个worker节点最大能够分配给Exectors的内存大小SPARK_WORKER_INSTANCES:指的是每台机器上开启的Worker节点的数目配置slaves
123cp slaves.template slavesvim slaves将里面的localhost改成worker01(在配置hadoop是编辑过/etc/hosts)启动并测试集群的状况
123456789101112当前我们只是用了hadoop的hdfs文件系统,所以可以只启动hadoop的HDFS文件系统。cd /usr/local/hadoop-2.7.3/sbin./start-dfs.sh可以看到master启动了NameNode SecondaryNameNode ResourceManager,worker01启动了DataNode,表示HDFS文件系统启动成功将配置好的spark文件夹和.bashrc中新增的环境变量配置到worker01中Warning:位置和目录名一定要匹配,配置完成一定要测试一下如果是U盘copy过去的可能是没有执行的权限的chmod -R 755 /usr/local/spark-2.0.1/binchmod -R 755 /usr/local/spark-2.0.1/sbin用Spark的sbin目录下的start-all.sh,启动Spark集群,这里需要注意的是Hadoop的sbin设置了环境变量而且里面有一个start-all.sh,所以一定要进入spark的sbin目录下执行./start-all.shcd /usr/local/spark-2.0.1/sbin./start-all.sh使用jps命令查看服务的运行情况
12345678910master:NameNodeSecondaryNameNodeResourceManagerJpsMasterworker:JpsDataNodeWorker
本地Web服务测试
|
|
服务启动
|
|
有时候连接不上可能是防火墙的原因