Spark 1.3与hadoop2.6在64位最小安装的CentOS 7中的部署

此文在VM虚拟机环境下进行,因为编译好的hadoop没有64位版本,所以需要自己编译,事先准备如下:

 

1.虚拟机的准备

先创建一个虚拟机,虚拟机网络连接方式为桥接,

建立后关闭防火墙:

systemctl stop firewalld.service //停止防火墙

systemctl disable firewalld.service //禁止防火墙启动

最小安装的CentOS默认没有启动网络,所以要先用dhclient命令启动网络,否则不能上网,也不能安装所需插件。

能够上网后,使用yum install net-tools命令下载后面ifconfg命令所需的包。

 

卸载CentOS本身自带的OpenJAVA:

首先,在终端中输入“rpm -qa|grep gcj”,查看gcj的版本号,在这里得到的结果是:

java-1.4.2-XXXX
java-1.6.0-XXXX

其次,卸载系统自带jdk。在终端中输入“yum -y remove java java-XXXX.XXXX.....”,然后等待,等待系统卸载完自带的jdk。最终在终端中显示“Complete!”,卸载完成。

到sun公司下载JDK1.7,注意只能用1.7,否在后面编译会出错,网上有用命令下载成功的,不知道为什么我照做结果总是失败,后来只好在图形界面下下载,下载好以后放到自己喜欢的目录,并配置/etc/profile:

export JAVA_HOME=/usr/java/jdk1.7.0_02 //地址跟版本根据自己下载和解压存放修改
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
完成后运行source /etc/profile(或./etc/profile)重载环境变量,使用java -version命令查看新java是否安装成功。

可以编写脚本卸载跟安装。

 

安装各种工具:

yum install cmake lzo-devel zlib-devel gcc gcc-c++ autoconf automake libtool ncurses-devel openssl-devel libXtst

 

安装protobuf

下载protobuf-2.5.0,不能用高版本,否则Hadoop编译不能通过
wget https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz

tar xvf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
./configure
make
make install
ldconfig

检验安装是否成功protoc --version

 

安装ANT

wget http://mirror.bit.edu.cn/apache/ant/binaries/apache-ant-1.9.4-bin.tar.gz
 tar zxvf apache-ant-1.9.4-bin.tar.gz -C /app

vi /etc/profile
export ANT_HOME=/app/apache-ant-1.9.4
PATH=$PATH:$ANT_HOME/bin

 

 

安装maven:

maven官方下载地址,可以选择源码编码安装,这里就直接下载编译好的 就可以了

wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.zip  

同样在/etc/profie里配置环境变量

export MAVEN_HOME=/opt/maven3.1.1 
export PATH=$PATH:$MAVEN_HOME/bin 

source重载环境变量,验证配置是否成功: mvn -version

 

修改maven配置文件
vi /app/apache-maven-3.3.1/conf/settings.xml

更改maven资料库,在<mirrors></mirros>里添加如下内容:

  <mirror>
        <id>nexus-osc</id>
        <mirrorOf>*</mirrorOf>
    <name>Nexusosc</name>
    <url>http://maven.oschina.net/content/groups/public/</url>
  </mirror>


在<profiles></profiles>内新添加

<profile>
      <id>jdk-1.7</id> 
      <activation>
        <jdk>1.7</jdk>
      </activation>
      <repositories>
        <repository>
          <id>nexus</id>
          <name>local private nexus</name>
          <url>http://maven.oschina.net/content/groups/public/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>nexus</id>
          <name>local private nexus</name>
          <url>http://maven.oschina.net/content/groups/public/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
</profile>

安装findbugs(非必须)
wget http://prdownloads.sourceforge.net/findbugs/findbugs-3.0.1.tar.gz?download
tar zxvf findbugs-3.0.1.tar.gz -C /app

vi /etc/profile
export FINDBUGS_HOME=/app/findbugs-3.0.1
PATH=$PATH:$FINDBUGS_HOME/bin
export PATH

注意:
最终,在/etc/profile中环境变量PATH的设置如下:
PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin:$MAVEN_HOME/bin:$FINDBUGS_HOME/bin(也可以各个分开)
export PATH

使环境变量生效

 

编译 Hadoop2.6.0

wget http://mirror.bit.edu.cn/apache/hadoop/core/hadoop-2.6.0/hadoop-2.6.0-src.tar.gz
cd hadoop-2.6.0-src
mvn package -DskipTests -Pdist,native -Dtar

 

静待编译完成。如果遇到编译下载特别慢的情况,建议购买VPN。

hadoop目录尽量放在根目录,省去后面要输入很长的目录名。

 

 

配置hadoop:

1.添加hadoop环境变量:

export HADOOP_HOME=XXX //hadoop地址,2.6编译出来后在hadoop/hadoop-dist/target/hadoop-2.6.0
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/lib
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
export HADOOP_LOG_DIR=XXX //log文件地址,在编译出来的文件夹的hadoop/hadoop-dist/target/hadoop-2.6.0/logs
export YARN_LOG_DIR=$HADOOP_LOG_DIR

 

下面的配置各项意义可以参考这篇文章

2.配置hadoop-env.sh与yarn-env.sh,在其中加入:

export JAVA_HOME= //本机java文件地址

 

3.配置core-site.xml,在<configuration>标签中加入相应内容,使其变为以下样子:

<configuration>
                <property>
                                <name>fs.defaultFS</name>
                                <value>hdfs://master:9000</value>
                </property>
       <property>
                                <name>io.file.buffer.size</name>
                                <value>131072</value>
                </property>
       <property>
                                <name>hadoop.tmp.dir</name>  //temp文件夹,自己创建
                                <value>file:/app/hadoop/tmp</value>
                                <description>Abase for other temporary directories.</description>
                </property>
        <property>
               <name>hadoop.proxyuser.hduser.hosts</name>
               <value>*</value>
       </property>
                 <property>
               <name>hadoop.proxyuser.hduser.groups</name>
               <value>*</value>
       </property>
</configuration>

 

4.配置hdfs-site.xml,加入下面内容:

<configuration>
 <property>
                <name>dfs.namenode.secondary.http-address</name>
               <value>master:9001</value>
        </property>
         <property>
                  <name>dfs.namenode.name.dir</name>
                 <value>file:/app/hadoop/dfs/name</value> //自己创建的name文件夹
            </property>
           <property>
                    <name>dfs.datanode.data.dir</name>
                    <value>file:/app/hadoop/dfs/data</value> //自己创建的data文件夹
            </property>
            <property>
                     <name>dfs.replication</name>
                     <value>2</value> //数据副本数,一般3足够
             </property>
             <property>
                     <name>dfs.webhdfs.enabled</name>
                     <value>true</value>
         </property>
</configuration>

 

5.配置yarn-site.xml,加入下面内容,注意value值不能有空格,否则格式化跟启动都会失败:

<configuration>

<!-- Site specific YARN configuration properties -->

<property>
               <name>yarn.nodemanager.aux-services</name>
               <value>mapreduce_shuffle</value>
        </property>

<property>
    <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
 </property>


<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>

          <property>
          <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
          <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
               <name>yarn.resourcemanager.address</name>
<value>master:8032</value>
       </property>
                <property>
               <name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
               </property>
               <property>
               <name>yarn.resourcemanager.resource-tracker.address</name>
               <value>master:8031</value>
               </property>
               <property>
                       <name>yarn.resourcemanager.admin.address</name>
                        <value>master:8033</value>
               </property>
                <property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>master:8088</value>
       </property>

<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>15360</value>
</property>

</configuration>

 

 

6.配置mapred-site.xml,加入下面内容:

<configuration>
<property>
                                <name>mapreduce.framework.name</name>
                                <value>yarn</value>
                </property>
                <property>
                                <name>mapreduce.jobhistory.address</name>
                                <value>master:10020</value>
                </property>
                <property>
               <name>mapreduce.jobhistory.webapp.address</name>
               <value>master:19888</value>
       </property>
</configuration>

 

配置完成后可以尝试格式化namenode然后启动hadoop,成功即可以进行下一步。

 

安装spark

Spark有源码可以下载,这里不做编译的介绍,下载好spark并解压后,复制spark/conf里面的spark-env.sh和slaves文件,分别加入下面内容:

spark-env.sh:

export HADOOP_CONF_DIR=/usr/local/hadoop-2.6.0-src/hadoop-dist/target/hadoop-2.6.0
export SCALA_HOME=/app/scala-2.10.5
export JAVA_HOME=/usr/local/java/jdk1.7.0_79
export SPARK_JAR=/app/spark-1.3.1-bin-hadoop2.6/lib/spark-assembly-1.3.1-hadoop2.6.0.jar

下面的内容可选择添加,各自作用在spark-env.sh里面都有说明:

exportSPARK_MASTER_IP=namenode
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1

exportSPARK_WORKER_MEMORY=2g


 

 

 

slaves://也可以把master加入这里

slaver1

slaver2

……

在/etc/profile中加入:

export SPARK_HOME=/app/spark-1.3.1-bin-hadoop2.6
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
export CLASSPATH=$SPARK_HOME/conf:$SPARK_HOME/lib/spark-assembly-1.3.1-hadoop2.6.0.jar

在bash_profile中加入下面内容,用于运行spark示例代码:

export SPARK_EXAMPLES_JAR=/app/spark-1.3.1-bin-hadoop2.6/examples/target/scala-2.10.5/spark-examples-1.3.1-hadoop2.6.0.jar

 

 

虚拟机复制:

后面的虚拟机都由第一个复制。对复制的虚拟机修改网卡地址,配置使用命令 vi /etc/sysconfig/network-scripts/ifcfg-eno1677736,其中的具体参数由ifconfg命令查找,下面参数只是示例。

BOOTPROTO=static //静态地址

ONBOOT=yes //开机启动

IPADDR=192.168.1.98//修改IP地址,每个虚拟机不一样,可以先在dhcp模式下查看

NETMASK=255.255.255.0//修改子网掩码

GATEWAY=192.168.1.1//修改网关

HWADDR= //对应的网卡物理地址

 

修改完毕后,使用service network restart重启网络以生效。

 

根据虚拟机数量,编辑/etc/hosts,样式如下,具体根据每个虚拟机静态地址:

192.168.X.X   master

192.168.X.X   slave1

192.168.X.X   slave2

192.168.X.X   slave3

………………

并发送到每个虚拟机:scp /etc/host root@slave1 /etc/

 

对每个主机设置主机名,

 vi /etc/sysconfig/network

    将hostname改为master(在master,即选为主节点的那台上,另外两台分别改为slave1,slave2,与上面的设计、规划一致即可)

1 NETWORKING=yes
2 HOSTNAME=master

    退出编辑,执行hostname master 更改主机名(slave1,slave2操作类似,不再赘述)

# hostname master

   重新打开,看到生效

配置ssh无密码登录,参考下面的网址:

http://www.linuxidc.com/Linux/2012-05/61346.htm

简介如下:
(1).在namenode机器上

cd /home/myhadoop

ssh-keygen -t rsa

一路回车

(2).导入公钥到本机认证文件

cat ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys

(3).导入公钥到其他datanode节点认证文件

scp ~/.ssh/authorized_keys myhadoop@10.172.169.192:/home/myhadoop/.ssh/authorized_keys

scp ~/.ssh/authorized_keys  myhadoop@10.172.169.193:/home/myhadoop/.ssh/authorized_keys

scp ~/.ssh/authorized_keys  myhadoop@10.172.169.194:/home/myhadoop/.ssh/authorized_keys

(4).修改所有机器上的文件权限

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

(5).测试是否可以ssh无密码登录。

如果namenode可以无密码登录到各个datanode机器,则说明配置成功。

 

 

启动集群:

在hadoop/bin目录下用 ./hadoop namenode -format格式化namenode,如果格式化失败,最好清空dfs、name、temp文件夹内容,同时查看这几个文件夹的权限是否设置正确。

成功可以在后面十来行附近看到successful字样。

格式化成功后在sbin目录使用start-dfs.sh命令启动dfs,用start-yarn.sh启动yarn,在各个主机上用jps命令查看启动情况,出错查看log文件排查原因。

在浏览器使用http://master:50070地址,利用webUI查看集群情况。也可以用hadoop dfsadmin -report命令查看。

所有都正常以后,启动spark,此时不能直接输入start-all.sh命令,命令应为:./sbin/start-all.sh

使用jps查看启动情况,分别在master:50070和master:8080查看hadoop跟spark状态

测试系统是否正常,上传文件到hdfs,运行wordcount:

先进入到hadoop的bin目录:

mkdir input //创建本地input文件

cd input //进入input

cat input/file This is a word count test on hadoop-2.6 //创建含有内容的待分析文件

./hadoop fs -copyFromLocal input /input //或者./hadoop fs -put input/ /input上传file文件到hdfs

./hadoop fs -ls /input //查看是否上传成功

./hadoop ./hadoop jar ##自己的hadoop安装目录##/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /input /output //input为hdfs输入文件夹,output为输出

等待运行结束

./hadoop fs -cat /output/* //查看运行结果

 

测试spark:

./hadoop fs -put /app/spark-1.3.1-hadoop2.6/README.md /input

在spark的bin目录下启动spark-shell,运行:

val file = sc.textFile("hdfs:master:9000/input/README.md")

val sparks = file.filter(_.contains("Spark"))

sparks.count

1.3.1版本结果为19

多次运行count后在spark webui的4040端口查看运行耗时,然后用sparks.cache命令把sparks储存到内存中,再次运行count,查看时间差异。

 

成功后,利用VM虚拟机在CentOS 7上部署基于hadoop2.6的Spark1.3.1就全部结束了。

 

 

参考:

http://www.linuxidc.com/Linux/2015-03/115272.htm CentOS 64位上编译 Hadoop 2.6.0

http://www.cnblogs.com/nmj93/p/4169781.html

http://blog.csdn.net/xuechongyang/article/details/8691518 hadoop配置文件参数解释

http://www.itnose.net/detail/6182168.html

http://www.open-open.com/lib/view/open1419490748562.html

http://www.bubuko.com/infodetail-650807.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值