hadoop+spark的安装 配置 新手

来源:互联网 发布:淘宝靠谱的美妆卖家 编辑:程序博客网 时间:2024/05/16 19:24

步骤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 到能运行独立模式):

         vi~/.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

运行

 

 ---------------------

参考资料:<<hadoop+spark大数据巨量分析与机器学习>>  林大贵著   清华大学出版社