spark集群搭建(Hadoop、Scala)

1.从官网下载hadoop、spark、scala

我的版本:

hadoop-2.7.3.tar.gz

scala-2.11.8.tgz

spark-2.1.0-bin-hadoop2.7.tgz

(注意:spark版本要与scala 版本相互对应)

2.配置host文件

vim/etc/hosts

加入参数(域名加主机名字)

10.20.30.91     wx-k5-30-9110.20.30.92     wx-k5-30-9210.20.30.94     wx-k5-30-94

3.增加用户

groupadd hadoop  添加一个组useradd hadoop -g hadoop  添加用户su hadoop   //切换到hadoop用户中

4.配置SSH免密码连入

4.1 输入命令,产生公匙,密匙

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa


4.2 产生在用户下的  .ssh目录下面

Id_rsa.pub为公钥,id_rsa为私钥,紧接着将公钥文件复制成authorized_keys文件

cd .ssh/
cp id_rsa.pub authorized_keys

原理:


与之相反,将本地的id_rsa.pub内容拷贝到远程服务器的authorized_keys中

在10.20.30.91 上访问10.20.30.92  无密登录,第一次登录按提示输入yes

ssh 10.20.30.9

(接下来的操作是在root下完成,之前在hadoop用户下使用,在启动hadoop的时候,总是提示权限的问题,于是就在root操作,有问题或者办法的欢迎大家提出来)

5.安装hadoop

5.1 解压安装包

tar -zxvf spark-2.1.0-bin-hadoop2.7.tgz
tar -zxvf hadoop-2.7.3 hadoop.tar.gz
tar -zxvf scala-2.11.8 scala.tgz
5.2 建立安装位置快捷方

ln -s spark-2.1.0-bin-hadoop2.7 spark
ln -s hadoop-2.7.3 hadoop
ln -s scala-2.11.8 scala


5.3 配置环境变量

vim /etc/profile

export HADOOP_HOME=/opt/sparkgroup/hadoop
export SCALA_HOME=/opt/sparkgroup/scala
export SPARK_HOME=/opt/sparkgroup/spark
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin::$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME=/opt/jdk1.7.0_75
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar



使配置生效

source /etc/profile

5.4配置hadoop

cd $HADOOP_HOME/etc/hadoop
vim slaves


将slave的主机名加入,每行一个主机名



vim core-site.xml

<configuration>
<property>
        <name>fs.default.name</name>
        <value>hdfs://wx-k5-30-91:8020</value>
        <description>The name of the default file system.  A URI whose scheme and authority determine the FileSystem implementation.  The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri's authority is used to determine the host, port, etc. for a filesystem.
        </description>
    </property>
    <property>
        <name>fs.trash.interval</name>
        <value>360</value>
        <description>Number of minutes between trash checkpoints.If zero, the trash feature is disabled.
        </description>
    </property>

    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/sparkgroup/hadoop/tmp_${user.name}</value>
        <description>A base for other temporary directories.</description>
    </property>
</configuration>

vim hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
        <description> 每一个文件的每一个切块,在hdfs集群中都可以保存多个备份(默认3份),在hdfs-site.xml中,dfs.replication的value的数量就是备份的数量. </description>
    </property>

    <property>
        <name>dfs.name.dir</name>
        <value>/opt/sparkgroup/hadoop/hdfs/name</value>
    </property>

    <property>
        <name>dfs.data.dir</name>
        <value>/opt/sparkgroup/hadoop/hdfs/data</value>
    </property>
   <property>
        <name>dfs.permissions</name>
        <value>false</value>
   </property>

</configuration>


vim yarn-site.xml

<configuration>

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

    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>wx-k5-30-91</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

</configuration>

创建对应的目录

mkdir -p /opt/sparkgroup/hadoop/hdfs/{data,name}
mkdir /opt/sparkgroup/hadoop/tmp

配置hadoop-env.sh

vim hadoop-env.sh

加入:
export JAVA_HOME=/opt/jdk1.7.0_75
初始化Namenode:
hadoop namenode -format


如图中的status为0,说明初始化成功,若为1,则失败
启动hadoop:

 $HADOOP_HOME/sbin/start-all.sh


三个服务器全部启动
这里可能出现一个错误:



这个错误解决办法:
(1).系统位数不一样,centos 是32位,你安装hadoop为64位
用ldd命令查看依赖库
ldd libhadoop.so.1.0.0  
(2).替换hadoop目录下 lib/native/ 下的文件
下载hadoop-native-64-2.7.0.tar
http://dl.bintray.com/sequenceiq/sequenceiq-bin/hadoop-native-64-2.7.0.tar
下载完以后,解压到hadoop的native目录下,覆盖原有文件即可。操作如下:


tar -x hadoop-native-64-2.4.0.tar -C  hadoop/lib/native/

(3).glibc库是2.12版本,而hadoop期望是2.14版本,所以打印警告信息
查看glibc版本


ldd --version  


(4).直接在log4j日志中去除告警信息。在/opt/sparkgroup/hadoop/etc/hadoop/log4j.properties文件中添加


log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR 




使用jps命令查看进程
jps -l

在master


在 slaves


注意:
初次使用Hadoop,运行后怎么没有NameNode节点?
解决方法:
1、先运行stop-all.sh
2、格式化namdenode,不过在这之前要先删除原目录,即core-site.xml下配置的<name>hadoop.tmp.dir</name>所指向的目录,删除后切记要重新建立配置的空目录,然后运行hadoop namenode -form
在集群中每一台机器都要一样配置
在此hadoop集群已经配置完毕


6. 配置scala
之前已经将scala 包解压并且配置了环境变量 scala 也配置完成
scala -version
可以看到Scala版本



7.安装spark
上面已经将环境变量配好在这里直接配置spark

cd $SPARK_HOME/conf
cp spark-env.sh.template spark-env.sh
cp slaves.template slaves



vim slaves
加入集群服务器ip或者主机名


vim spark-env.sh  加入

export JAVA_HOME=/opt/jdk1.7.0_75
export SCALA_HOME=/opt/sparkgroup/scala
export SPARK_MASTER_IP=10.20.30.91
export SPARK_LOCAL_IP=10.20.30.91
export SPARK_WORKER_MEMORY=2g
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop



圈住部分注意:集群中每台机器写各自的 local_ip

SPARK_MASTER_IP=10.20.30.91

这个集群中的每一台都写master的ip
配置spark-defaults.conf,该文件为spark提交任务时默认读取的配置文件

cp spark-defaults.conf.template spark-defaults.conf

vim spark-defaults.conf

spark.master                     spark://master:7077
spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://master:9000/sparkHistoryLogs
spark.eventLog.compress          true
spark.history.updateInterval     5
spark.history.ui.port            7777
spark.history.fs.logDirectory    hdfs://master:9000/sparkHistoryLogs


启动Spark进程:
$SPARK_HOME/sbin/start-all.sh


jps 查看进程
jps
master:



slaves




至此 spark 环境全部配置完成


运行shell 并测试
 $SPARK_HOME/bin/spark-shell --master spark://master:707


在浏览器中输入:10.20.30.91:8020 就可以访问了, 没错的的话会显示三台worker
adoop 集群信息: 
10.20.30.91:50070
10.20.30.91:8088


注意:zeppelin教程链接:http://blog.csdn.net/qq_28767763/article/details/54409245


附录:
部分hdfs命令:
hdfs命令
1、创建test文件夹
hadoop fs -mk /test
bin/hdfs dfs -mkdir /test
2、查看文件夹
hadoop fs -ls /test
3、删除文件夹 rmr 删除文件rm
4、查看磁盘空间 
bin/hdfs dfs -df -h /   
5、查看文件尾部 
bin/hdfs dfs  -tail 
6、直接存取文件
存文件:
./hdfs dfs -put /home/admin1/桌面/test.txt  hdfs://localhost:9000/
取文件:
./hdfs dfs -get hdfs://localhost:9000/test.txt
7、显示文件内容
hadoop fs -cat /hello.txt
8、从本地文件系统中拷贝文件到hdfs路径去
hadoop fs  -copyFromLocal  ./jdk.tar.gz /aaa/
9、从hdfs拷贝到本地
hadoop fs -copyToLocal /aaa/jdk.tar.gz


具体安装jdk教程
1. 修改/etc/profile文件 
如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。 
·用文本编辑器打开/etc/profile 
·在profile文件末尾加入: 
export JAVA_HOME=/usr/share/jdk1.6.0_14 
export PATH=$JAVA_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 


a. 你要将 /usr/share/jdk1.6.0_14改为你的jdk安装目录 
b. linux下用冒号“:”来分隔路径 
c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值 
在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种 
常见的错误。 
d. CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。 
e. export是把这三个变量导出为全局变量。 
f. 大小写必须严格区分。 


2. 修改.bash_profile文件 


这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bash_profile文件就可以了。 
·用文本编辑器打开用户目录下的.bash_profile文件 
·在.bash_profile文件末尾加入: 


export JAVA_HOME=/usr/share/jdk1.6.0_14 
export PATH=$JAVA_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 


·重新登录 


3. 直接在shell下设置变量 
不赞成使用这种方法,因为换个shell,你的设置就无效了,因此这种方法仅仅是临时使用,以后要使用的时候又要重新设置,比较麻烦。 
只需在shell终端执行下列命令: 
export JAVA_HOME=/usr/share/jdk1.6.0_14 
export PATH=$JAVA_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
参考链接:
hadoop:
http://blog.csdn.net/dai451954706/article/details/46966165
http://www.linuxidc.com/Linux/2015-08/120947.htm
jdk:      http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值