spark 安装和使用

来源:互联网 发布:caffe安装在windows上 编辑:程序博客网 时间:2024/04/29 15:22

前言

早在很前,都已经安装过了集群了,那个时候的版本还很低,http://blog.csdn.net/supingemail/article/details/8835743 ,最近因为项目的需要,又开始屁颠屁颠的去学习hadoop的一套东西了... ... 

淡不扯了,还是进入正题,看看hadoop 的伪分布式安装(知识这个玩意,真的是一天不用就生疏了,还必须要坚持才行,否则都是瞎扯淡)

准备环境

linux 系统centos 6.4 ; jdk1.7.0_79 ; hadoop-2.6.0.tar.gz ; scala2.11.7.tgz和 spark-1.4.0-bin-hadoop2.6.tgz  



正式安装Hadoop

1. 登陆centos6.4,创建hadoop 组:
su - root 
groupadd hadoop 

2. 创建 hadoop 用户和设置密码:
useradd -g hadoop hadoop
passwd hadoop    

3.给hadoop用户添加权限,打开/etc/sudoers文件:
vim /etc/sudoers
给hadoop赋予root权限.在打开的文件中找到如下:
## Allow root to run any commands anywhere 
root ALL=(ALL) ALL
并在后加入如下:
hadoop    ALL=(ALL)       ALL

4. 修改机器名称:
vim /etc/hosts
加上你要修改的机器的名字.
如:192.168.1.104 nana4


5. 安装 ssh 服务:
yum install openssh-server


6.建立 SSH KEY: 
ssh-keygen -t rsa -P ""
默认按回车就可以,中间不要有空格.


7.启用SSH KEY:
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
/etc/init.d/ssh reload
reload ssh
ssh localhost

8.安装java jdk:
需要文件:jdk-7u79-linux-x64.tar.gz 移动文件并解压文件到:/usr/local/ 下
a. cd /usr/local/

b. tar -zxvf jdk-7u25-linux-x64.gz

c. 配置/etc/profile,在最后加上:

vim /etc/profile
#set java environment
JAVA_HOME=/usr/local/jdk1.7.0_79
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH


d. 使其生效: source /etc/profile
   查看版本:java -version

9.安装hadoop:
拷贝文件放到:cd /usr/local/ 并解压

a. cd /usr/local/
b. tar -zxvf hadoop-2.6.0.tar.gz
c. 修改一下hadoop文件夹名字:hadoop26
mv hadoop-2.6.0 hadoop26

到根目录下,在etc 下建:hadoop文件夹:
mkdir /etc/hadoop
到根目录下,在tmp 下建:hadoop文件夹:
mkdir /tmp/hadoop

d. 将该hadoop文件夹的属主用户设为hadoop:
chown -R hadoop hadoop26

e. 配置 hadoop-env.sh,在hadoop/conf 里面hadoop-env.sh
vim hadoop26/etc/hadoop/hadoop-env.sh  加上如下:
export JAVA_HOME=/usr/local/jdk1.7.0_79
export HADOOP_HOME=/usr/local/hadoop26
export PATH=$PATH:/usr/local/hadoop26/bin
使文件生效:
source hadoop-env.sh


f. 打开hadoop26/etc/hadoop/core-site.xml文件:
vim hadoop26/etc/hadoop/core-site.xml 在 configuration 标签中加入:

<property>
<name>fs.default.name</name>
<value>hdfs://192.168.1.104:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop/hadoop-${user.name}</value>
</property> 


g. 打开hadoop26/etc/hadoop/hdfs-site.xml文件:
vim hadoop26/etc/hadoop/hdfs-site.xml 在 configuration 标签中加入:

<property>  
<name>dfs.name.dir</name>  
<value>/usr/local/hadoop26/datalog1,/usr/local/hadoop26/datalog2</value>  
</property>  
<property>  
<name>dfs.data.dir</name>  
<value>/usr/local/hadoop26/data1,/usr/local/hadoop26/data2</value>  
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>  
<name>dfs.replication</name>  
<value>1</value>  
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>192.168.1.104:50070</value>
</property>

h.打开hadoop26/etc/hadoop/mapred-site.xml.template文件:
先改名字为 mapred-site.xml.template 为 mapred-site.xml 然后在:
vim hadoop26/etc/hadoop/mapred-site.xml 在 configuration 标签中加入:

<property>     
<name>mapred.job.tracker</name>    
<value>192.168.1.104:9001</value>     
</property>    
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>


i.打开hadoop26/etc/hadoop/yarn-site.xml文件:
vim hadoop26/etc/hadoop/yarn-site.xml 在 configuration 标签中加入:

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


10. 格式化hdfs:
a. cd /usr/local/hadoop26
b. source etc/hadoop/hadoop-env.sh  :echo $HADOOP_HOME 验证是否有东西.
c. bin/hadoop namenode -format
   bin/hadoop datanode -format
d. bin/hdfs namenode -format
   bin/hdfs datanode -format

11.启动hadoop:
cd /usr/local/hadoop26
sbin/start-dfs.sh
sbin/start-yarn.sh
和(可以不用关心).
bin/hadoop namenode -format
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode

关闭:
sbin/stop-dfs.sh
sbin/stop-yarn.sh

11.检测hadoop 安装:
a. vim /etc/profile  添加:
export HADOOP_HOME=/usr/local/hadoop26
export PATH=$PATH:$HADOOP_HOME/bin

b. /usr/local/hadoop26/etc/hadoop/yarn-env.sh
export JAVA_HOME=/usr/local/jdk1.7.0_79

12.登陆查看:前提是关闭防火墙 service iptables stop
a. jps 查看哪些是启动了的
b.http://192.168.1.104:50070/dfshealth.jsp  打开NameNode web界面
c.http://192.168.1.104:19888/jobhistory     打开JobHistory web界面
d.http://192.168.1.104:8088/cluster         打开cluster web界面


安装scala

1. 下载 scala2.11.7 http://www.scala-lang.org/ 
2. 将下载的 scala2.11.7.tgz 放到/usr/local/ 并解压 tar zxvf scala2.11.7.tgz
3. 配置环境变量:
vim /etc/profile
export SCALA_HOME=/usr/local/scala-2.11.7
export PATH=$PATH:$SCALA_HOME/bin
4.使环境变量生效
source /etc/profile
5.检测scala
scala -version


安装spark

1. 下载 spark1.4  http://spark.apache.org/  http://mirrors.cnnic.cn/apache/
2. 将下载的 spark-1.4.0-bin-hadoop2.6.tgz 放到/usr/local/  并解压 tar zxvf  spark-1.4.0-bin-hadoop2.6.tgz
3. 配置环境变量:
vim /etc/profile
export SPARK_HOME=/usr/local/spark-1.4.0-bin-hadoop2.6
export PATH=$PATH:$SCALA_HOME/bin:$SPARK_HOME/bin
4.使环境变量生效
source /etc/profile
5.进入到spark 的conf 目录下:
cp spark-env.sh.template spark-env.sh
并在 spark-env.sh 文件后加:
###jdk安装目录
export JAVA_HOME=/usr/local/jdk1.7.0_79
###scala安装目录
export SCALA_HOME=/usr/local/scala-2.11.7
###spark集群的master节点的ip
export SPARK_MASTER_IP=192.168.1.104


#export SPARK_WORKER_CORES=2
#export SPARK_WORKER_MEMORY=4g
#export SPARK_MASTER_IP=spark1             
#export SPARK_MASTER_PORT=30111 
#export SPARK_MASTER_WEBUI_PORT=30118 
#export SPARK_WORKER_CORES=2 
#export SPARK_WORKER_MEMORY=4g 
#export SPARK_WORKER_PORT=30333 
#export SPARK_WORKER_WEBUI_PORT=30119 
#export SPARK_WORKER_INSTANCES=1

###指定的worker节点能够最大分配给Excutors的内存大小
export SPARK_WORKER_MEMORY=1g
###hadoop集群的配置文件目录
export HADOOP_CONF_DIR=/usr/local/hadoop26/etc/hadoop
#spark 性能调优
export SPARK_CONF_DIR=/usr/local/spark-1.4.0-bin-hadoop2.6/conf
#操作设置.
export SPARK_DAEMON_JAVA_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"

6.修改conf目录下面的slaves文件将worker节点都加进去
加入:本机主机名, nana4

7.启动spark: bin/spark-shell

8.查看spark设置:http://nana4:4040

更多的资料,参考:https://spark.apache.org/docs


hadoop 使用

一.生成一份文件之后,将文件放到hadoop平台之上:

1. 放数据:用root用户登录.
hadoop fs -mkdir -p /home/togeek/test
hadoop fs -mkdir -p /home/togeek/test/data
hadoop fs -mkdir -p /home/togeek/test/result
hadoop fs -mkdir -p /home/togeek/test/temp
hadoop fs -rm -r /user/root/*  删除 root 下的所有hadoop文件.

2.hadoop 负载均衡(将数据分摊到各个datanode几点上去)的命令 :
hadoop balancer -threshold 0 或者 hadoop balancer -threshold 1


3.放文件的命令:
hadoop fs -put    filename(文件的目录)   hdfs(目录)
hadoop fs -put /home/togeek/data0.csv /togeek/test/

4.hdfs下载文件夹中多个文件 
hadoop fs -get  /目录   目录 

5统计多个文件行数 
hadoop fs -cat  /文件* | wc -l 

6.统计文件大小 
hadoop fs -count /文件* 

7.开启cloudera-manager服务.

/etc/init.d/cloudera-scm-server start 开机已经启动了.

集群:先启动cloudera manager services 服务,再启动集群服务.

spark使用

参考资料:https://spark.apache.org/docs/1.3.0/sql-programming-guide.html  

样例:

val sqlContext = new org.apache.spark.sql.SQLContext(sc);
import sqlContext.implicits._;
case class Book(id:Int,isbn:String,category:String,publish_date:String,publisher:String,price:Float);     ---6
/user/books/books.tbl是hdfs 的路径.
val books = sc.textFile("/user/books/books").map(_.split("\\|")).map(p => Book(p(0).trim.toInt,p(1),p(2),p(3),p(4),p(5).trim.toFloat)).toDF();
books.registerTempTable("books");


sqlContext.sql("SELECT * FROM books").show();   
sqlContext.sql("SELECT count(id) FROM books").show();5.331074 s
sqlContext.sql("SELECT count(*) FROM books").show();5.409480 s
sqlContext.sql("SELECT sum(price) FROM books").show();9.827365 s
sqlContext.sql("SELECT avg(price) FROM books").show();5.577643 s
sqlContext.sql("SELECT * FROM books where id= 78935").show();8.820247 s
sqlContext.sql("SELECT * FROM books where id= 78935 and isbn = '8-96619-549-8' ").show();4.703954 s
sqlContext.sql("SELECT * FROM books order by price desc").show();5.486981 s


后边是执行这些sql的时间,books csv 的大小16000000

所以从此可以看出,这个的速度还是很快的。。。


哦哦 。。哦哦哦、、、 


0 0
原创粉丝点击