步骤1:(准备工作)
首先需要两台(其实更多更好)安装好Centos7 的机器:
安装java (没有选择yuminstall default-jdk 因为我安装完后发现他没有jps 所以我去sun官网下下了个1.8.0) 然后解压安装 到/usr/java/jdk/
然后安装ssh 如果没有安装的话
yum–install ssh
yum–install rsync
ssh-kengen–t dsa –P ‘’ –f ~/.ssh/id_dsa 生成一个sshkey
cat ~/.ssh/id_dsa >> ~/.ssh/authorized_keys 添加到许可证中
每台机器都要,可以尝试是否可以ssh ip地址无密码连接过去
然后下载安装hadoop,在http://archive.apache.org/dist/hadoop/common/中找到hadoop版本,然后我选择了2.8.0
然后wget 你选择的版本的网址
下载解压后 放到/usr/local/hadoop下
到这里最最基本下载安装所需已经完成
步骤2(配置hadoop 到能运行独立模式):
~/.bashrc
添加:
exportJAVA_HOME = 你的java安装路径
exportHADOOP_HOME=/usr/local/Hadoop
exportPATH=$PATH:$HADOOP/bin
exportPATH=$PATH:$HADOOP/sbin #设置PATH 然后你就可以不用再bin或者sbin目录下用那些命令
exportHADOOP_MAPRED_HOME=$HADOOP_HOME
exportHADOOP_COMMON_HOME=$HADOOP_HOME
exportHADOOP_HDFS_HOME=$HADOOP_HOME
exportYARN_HOME=$HADOOP_HOME #将这些环境变量指向hadoop安装目录
exportHADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
exportHADOOP_OPTS=”-DJava.library.path=$HADOOP_HOME/lib”
exportJAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH #链接库的设置
然后source让他生效
配置/usr/local/Hadoop/etc/Hadoop/hadoop-env.sh
修改export JAVA_HOME =你的java安装目录 反正如果设置不对到时会提示的 也不用很担心
然后修改/usr/local/Hadoop/etc/Hadoop/core-site.xml
在里面添加hdfs的声明
<prooerty>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</prooerty>
修改/usr/local/Hadoop/etc/Hadoop/yarn-site.xml
添加
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
↑NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
复制模板文件
Cp /usr/local/Hadoop/etc/Hadoop/mapred-site.xml.template/usr/local/Hadoop/etc/mapred-site.xml
然后编辑mapred-site.xml
添加
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
设置其mapreduce框架
再配置/usr/local/Hadoop/etc/Hadoop/hdfs-site.xml
在其内添加
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.name.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>
说明: dfs.replication是指blocks副本的在其他node的备份数量,默认为3
dfs.namenode.name.dir和dfs.datanode.name.dir分别是设定namenode和datanode的储存目录(这两个目录必须实际存在,也就是要自己创建,可以随便放,如果规范化的话应该事先新建一个用户和用户组把整个hadoop目录都改为其所有)
然后hadoop namenode –format初始化(各种报错都很容易从这里开始解决,比如删除namenode 和datanode文件夹,重新建新的,然后再次初始化)
如果能运行 start-all.sh
没有报错 jps 可以找到以下进程:
resourceManager
jps
secondaryNameNode
NameNode
DateNode
那么 这个配置应该就是没有问题的,可以尝试访问localhost:8088和localhost:50070来确认
如果页面进不去,考虑把防火墙添加例外或者直接关闭防火墙
到这里为止,Hadoop的基本单节点模式的安装结束.
步骤3:
你要有若干台,比如我现在两台机器,来做集群化的hadoop
确认哪一台做master那几台做data以后,开始设置各个节点
每一台都做的配置如下所示
Vi /etc/hostname 在里面添加你的主机名字 data1就data1 master就master
然后每一台的hosts都修改下 vi /etc/hosts
按照
添加后面两行的数据 前面写ip 后面跟着名字
编辑vi /usr/local/hadoop/etc/Hadoop/core-site.xml
这里把刚才输入的localhost改成master
毕竟你是一个集群 要告诉他以哪一个为目标存取hdfs
然后vi /usr/local/Hadoop/etc/Hadoop/yarn-site.xml
增加
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value> master:8025</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8050</value>
</property>
都是用来指定resourcemanager与nodemanager,applicationmaster还有客户端的连接的,我把他看做是声明
然后vi /usr/local/Hadoop/etc/hadoop/mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>master:54311</value>
</property>
设置map和reduce的jobtracker任务分配情况的端口号
然后切换到你的data服务器
以下配置是data服务器中的配置
vi/usr/local/Hadoop/etc/Hadoop/hdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>
声明了hdfs中的datanode储存目录,你要改别的位置也是完全可以的记得把文件夹所有者改下
多个datanode服务器除了hostname其他都是一样的
然后切换到你的master服务器
以下配置是master服务器中的配置
Hostname肯定是要改的 我就叫master了
然后 vi /usr/local/Hadoop/etc/Hadoop/hdfs-site.xml
<property>
<name>dfs.datanode.name.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
</property>
和datanode一样 要说明namenode的hdfs丢哪个文件夹
然后vi /usr/local/Hadoop/etc/Hadoop/masters
里面直接填上你的master的hostname就好了 设置master服务器
比如我就直接写master就可以保存了
然后vi /usr/local/Hadoop/etc/Hadoop/slaves
里面填上你的datanode 的hostname就好了 声明你的datanode服务器
在这一步中 如果你的hosts没有配置 那赶紧回去补 不然他也不知道那个是datanode哪个是master
然后很重要的一个步骤:
在所有data服务器中:
Rm–rf /usr/local/Hadoop/Hadoop_data/hdfs
Mkdir–p /usr/local/Hadoop/Hadoop_data/hdfs/datanode
Chown–R hduser:hduser /usr/local/Hadoop
在master服务器中:
Rm–rf /usr/local/Hadoop/Hadoop_data/hdfs
Mkdir–p /usr/local/Hadoop/Hadoop_data/hdfs/namenode
Chown–R hduser:hduser /usr/local/Hadoop
Hadoopnamenode –format
这里所有步骤加起来就是格式化hdfs的所有命令,之所以重要是我发现,很多奇奇怪怪的问题都可以通过格式化来解决,就没什么是格式化不能解决的问题
最后master服务器中直接start-all.sh就好了 可以在8088 和50070网页中看到具体情况 有datanode运行的话一般就没什么问题了,可以试着跑一跑wordcount来试验一下是否存在问题
步骤4(spark的安装):
以下是master服务器中的操作:
先在http://www.scala-lang.rog/files/archive下个scala
我下的2.11.6的
然后 解压 放在/usr/local/scala
Vi~/.bashrc
追加内容:
exportSCALA_HOME=/usr/local/scala
exportPATH=$PATH:$SCALA_HOME/bin
然后source
然后在http://spark.apache.org/downloads.html下载spark
选好自己的版本 你选好自己的hadoop版本和想要的spark版本就好
我下的是spark-2.2.0-bin-hadoop2.7.tgz
然后 解压 放在/usr/local/spark
exportSPARK_HOME=/usr/local/spark
exportPATH=$PATH:$SPARK_HOME/bin
然后source
把spark/conf目录下的log4j.properties.template拷贝到原目录下 名字改成log4j.properties
可以考虑把log4j.rootCategory=INFO改成WARN
这样运行输出信息会比较少
命令:SPARK_
同样的把conf目录下的spark-env.sh.template拷贝改名成spark-env.sh
exportSPARK_MASTER_HOST=master
exportSPARK_WORKER_CORES=1 datanode多少核
exportSPARK_WORKER_MEMORY=1024m 用多少内存
exportSPARK_WORKER_INSTANCES=2 实例要几个 如果3个服务器 实例2个 那么就相当于有6个在运行
把这几行加进去 MEMORY一定一定一定一定要超过1024m
然后切换到data服务器
Mkdir /usr/local/spark
把文件夹所有者该问hduser
切换为master服务器
Scp –r /usr/local/sparkhduser@data1:/usr/local把配置好的spark 直接复制过去
每个data服务器都要有
vi/usr/local/spark/conf/slaves
输入data服务器的所有hostname
比如我的只有
Data1
完事
Start-all.sh–master spark://master:7077
运行