标签:vmware 命名空间 lin clu 重启 上传 立即生效 templates als
v1Z0G9-67285-FZG78-ZL3Q2-234JG 4C4EK-89KDL-5ZFP9-1LA5P-2A0J0 HY086-4T01N-CZ3U0-CV0QM-13DNU
1F04Z-6D111-7Z029-AV0Q4-3AEH8
5A02H-AU243-TZJ49-GTC7K-3C61N
第一步:安装VMware,创建虚拟机Master,安装Vim,Mysql(mysql也可以暂且不装,但是考虑到后面组件的扩展还是先安上)。
第二步:克隆虚拟机(选择完全克隆)rzxmater,分别命名为rzxslave1,rzxslave2(这里的命名可以自行修改)。然后启动三个虚拟机。
第四步:静态Ip设置:
静态IP设置:http://blog.csdn.net/lv18092081172/article/details/52081859这篇博文介绍的很详细,但是其中有部分问题,不知道是16.0和14.0版本差异的问题还是教程本身的问题,一个是网络重启之后DNS配置丢失的问题。每次重启之后会发现配置的DNS文件恢复成了127.0.0.1
这个问题是由于interface,networkManager两种网络管理冲突造成的。解决方法就是在编辑链接的时候将DNS也一起编辑。这样就不用再编辑DNS的配置文件。如下图所示:
其他步骤按博文所说就可以完成静态IP的配置。
第五步:hosts配置,特别强调主机名称不要含有下划线"_",最好是纯英文。 因为hadoopXML配置的时候部分value不能有下划线,会报错。
192.168.8.137 rzxmaster 192.168.8.136 rzxslave1 192.168.8.138 rzxslave2
第六步:SSH免密码登录:
1 sudo apt-get update //更新源 2 sudo apt-get install openssh-server //安装ssh服务器 3 sudo ps -e |grep ssh //查看ssh服务是否启动 4 sudo service ssh start //开启ssh服务 5 ssh-keygen -t rsa //生成公钥密钥 一路enter就行了 6 cat /home/cxin/.ssh/id_rsa.pub >>/home/cxin/.ssh/authorized_keys //将公钥添加到用户公钥文件。
ssh的配置比较简单教程也很多。不外乎以上几条命令。在三台机子上都进行了如下操作之后,要是rzxmaster免密码登录到rzxslave1,rzxslave2。需要把master的公钥放到slave1,2的authorized_keys文件中,这里只需要拷贝然后打开rzxslave1,2的authorized_keys文件粘贴上即可。保存之后重启虚拟机。重启之后在rzxmaster,输入 ssh rzxslave1 如果不需要密码就能登陆到rzxslave1说明成功,同理实验rzxslave2。rzxmaster可以登录到所有slave节点则SSH设置完毕。
通过前面的准备工作我们已经获取到了所有需要的安装包,设置好了静态IP,配好了ssh免密码登录,接下就是集群的安装了。首先我所有的包都是安装在当前用户的根目录下,也就是终端打开的目录(一般是: /home/username username是当前的用户名),这个目录是当亲前用户的工作空间我把这个目录的位置记作 basePath=/home/username .这个basePath可以根据自己的喜好安装到别的目录下。(basePath=="~"==/home/cxin,我这里的basePath=/home/cxin)
三台虚拟机分别如下:rzxmaster是主节点(datanode),rzxslave1,rzxslave2是分支节点(namenode)
192.168.8.137 rzxmaster
192.168.8.136 rzxslave1
192.168.8.138 rzxslave2
为了方便管理这里在主目录建了三个文件夹:Java,spark,hadoop. mkdir Java spark hadoop
现在将jdk,hadoop,scala,spark的安装包分别传到路径basePath/Java,basePath/hadoop,basePah/spark下,(scala和spark的压缩包都放在spark文件夹下)。
cxin@rzxmaster:~$ cd ~ cxin@rzxmaster:~$ pwd /home/cxin cxin@rzxmaster:~$ cd Java/ cxin@rzxmaster:~/Java$ tar -zxvf jdk-8u11-linux-x64.tar.gz cxin@rzxmaster:~/Java$ mv jdk-8u11-linux-x64 jdk1.8
cxin@rzxmaster:~/Java$ ls jdk1.8 cxin@rzxmaster:~/Java$ cd jdk1.8/ cxin@rzxmaster:~/Java/jdk1.8$ ls bin include lib README.html THIRDPARTYLICENSEREADME-JAVAFX.txt COPYRIGHT javafx-src.zip LICENSE release THIRDPARTYLICENSEREADME.txt db jre man src.zip cxin@rzxmaster:~/Java/jdk1.8$ pwd /home/cxin/Java/jdk1.8
解压并修改了名称,pwd命令获取到了JAVA_HOME路径: /home/cxin/Java/jdk1.8 下面配置环境变量:
#java export JAVA_HOME=/home/cxin/Java/jdk1.8 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
保存退出之后:输入 source /etc/profile 使配置立即生效。
#Hadoop export HADOOP_HOME=/home/cxin/hadoop export CLASSPATH=.:$HADOOP_HOME/lib:$CLASSPATH export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_ROOT_LOGGER=INFO,console export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
<configuration> <!-- 指定hdfs的namenode为rzxmaster --> <property> <name>fs.defaultFS</name> <value>hdfs://rzxmaster:9000</value> </property> <!-- Size of read/write buffer used in SequenceFiles. --> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <!-- 指定hadoop临时目录,自行创建 --> <property> <name>hadoop.tmp.dir</name> <value>/home/cxin/hadoop/tmp</value> </property> </configuration>
<configuration> <!-- 备份数:默认为3--> <property> <name>dfs.replication</name> <value>2</value> </property> <!-- namenode--> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/cxin/hadoop/dfs/name</value> </property> <!-- datanode--> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/cxin/hadoop/dfs/data</value> </property> <!--权限控制:false:不做控制即开放给他用户访问 --> <property> <name>dfs.permissions</name> <value>false</value> </property> </configuration>
<configuration> <!-- mapreduce任务执行框架为yarn--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- mapreduce任务记录访问地址--> <property> <name>mapreduce.jobhistory.address</name> <value>rzxmaster:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>rzxmaster:19888</value> </property> </configuration>
其中还有很多具体应用需要的配置暂且不做配置。参数如下:
mapreduce.map.memory.mb | 1536 | Larger resource limit for maps. |
mapreduce.map.java.opts | -Xmx1024M | Larger heap-size for child jvms of maps. |
mapreduce.reduce.memory.mb | 3072 | Larger resource limit for reduces. |
mapreduce.reduce.java.opts | -Xmx2560M | Larger heap-size for child jvms of reduces. |
mapreduce.task.io.sort.mb | 512 | Higher memory-limit while sorting data for efficiency. |
mapreduce.task.io.sort.factor | 100 | More streams merged at once while sorting files. |
mapreduce.reduce.shuffle.parallelcopies | 50 | Higher number of parallel copies run by reduces to fetch outputs from very large number of maps. |
<configuration> <property> <description>The hostname of the RM.</description> <name>yarn.resourcemanager.address</name> <value>rzxmaster:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>rzxmaster:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>rzxmaster:8031</value> </property> <property>
<name>yarn.resourcemanager.admin.address</name> <value>rzxmaster:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>rzxmaster:8088</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration>
rzxslave1
rzxslave2
cxin@rzxmaster:~/hadoop/etc/hadoop$ cd ~ cxin@rzxmaster:~$ ls Desktop Downloads hadoop Music Public Templates Documents examples.desktop Java Pictures spark Videos //将java目录发送到rzxslave1主机的主目录下 cxin@rzxmaster:~$ scp -r Java cxin@rzxslave1:/home/cxin/ //将hadoop目录发送到rzxslave1主机的主目录下 cxin@rzxmaster:~$ scp -r hadoop cxin@rzxslave1:/home/cxin/
16002 Jps 7764 NameNode 7992 SecondaryNameNode 8152 ResourceManager
4529 NodeManager 6968 Jps 4383 DataNode
spark是依赖与scala和java,hadoop的,前面配置好了java,hadoop,这里需要配置scala和spark的环境以及spark的详细信息。
#scala export SCALA_HOME=/home/cxin/spark/scala2.11.8 export PATH=$SCALA_HOME/bin:$PATH #spark export SPARK_HOME=/home/cxin/spark/spark2.1
export SPARK_DIST_CLASSPATH=$(/home/cxin/hadoop/bin/hadoop classpath) #rzx----config SPARK_LOCAL_DIRS=/home/cxin/spark/spark2.1/local #配置spark的local目录 SPARK_MASTER_IP=rzxmaster #master节点ip或hostname SPARK_MASTER_WEBUI_PORT=8085 #web页面端口 #export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=4" #spark-shell启动使用核数 SPARK_WORKER_CORES=1 #Worker的cpu核数 SPARK_WORKER_MEMORY=512m #worker内存大小 SPARK_WORKER_DIR=/home/cxin/spark/spark2.1/worker #worker目录 SPARK_WORKER_OPTS="-Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.appDataTtl=604800" #worker自动清理及清理时间间隔 SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://rzxmaster:9000/spark/history" #history server页面端口>、备份数、log日志在HDFS的位置 SPARK_LOG_DIR=/home/cxin/spark/spark2.1/logs #配置Spark的log日志 JAVA_HOME=/home/cxin/Java/jdk1.8 #配置java路径 SCALA_HOME=/home/cxin/spark/scala2.11.8 #配置scala路径 HADOOP_HOME=/home/cxin/hadoop/lib/native #配置hadoop的lib路径 HADOOP_CONF_DIR=/home/cxin/hadoop/etc/hadoop/ #配置hadoop的配置路径
spark.master spark://rzxmaster:7077 spark.eventLog.enabled true spark.eventLog.dir hdfs://rzxmaster:9000/spark/history spark.serializer org.apache.spark.serializer.KryoSerializer spark.driver.memory 1g spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
rzxmaster
rzxslave1
rzxslave2
#java export JAVA_HOME=/home/cxin/Java/jdk1.8 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH #Hadoop export HADOOP_HOME=/home/cxin/hadoop export CLASSPATH=.:$HADOOP_HOME/lib:$CLASSPATH export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_ROOT_LOGGER=INFO,console export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib" #scala export SCALA_HOME=/home/cxin/spark/scala2.11.8 export PATH=$SCALA_HOME/bin:$PATH #spark export SPARK_HOME=/home/cxin/spark/spark2.1 export PATH=$SPARK_HOME/bin:$PATH
查看服务(rzxslave1,rzxslave2): jps
spark示例运行: ./bin/run-example SparkPi 2>&1 | grep "Pi is roughly" 计算圆周率。如下图所示
至此说明spark配置成功,当然其他的内容需要在使用的时候去排除bug,如果出现问题需要查看日志信息找到问题出现的原因,然后修改配置。
在配置的过程中出现了很多的问题,包括:namenode,datanode启动失败,伪成功(存在守护线程但是实际服务为启动),spak-shell启动失败爆出资源无法分配。有租在配置的时候没有做好问题的记录,所以这里列不出具体的异常信息。这里一部分异常是由于IP的设置和hosts中的配置不对应,一部分是ssh连接失败,资源配置没有根据虚拟机的配置做匹配。建议不要多次格式化namenode,每次格式化都会生成一个clusterID,多个clusterID导致启动报错,如需格式化就必须清除dfs/name,dfs/data下的文件。
hadoop,spark只是基础组建,提供文件系统和数据运算,hadoop生态还包括hive,habse,kafka...等数据存储和分析的组件,后面可以在此基础上一步步安装。
标签:vmware 命名空间 lin clu 重启 上传 立即生效 templates als
原文地址:http://www.cnblogs.com/NextNight/p/6703362.html