admin 管理员组文章数量: 1086019
2024年2月20日发(作者:html5中margin的用法)
1、设置root用户密码,以root用户登录,设置方式如下
sudo -s
gedit /etc/lightdm/
[SeatDefaults]
greeter-session=unity-greeter
user-session=Ubuntu
greeter-show-manual-login=true
allow-guest=false
启用root帐号:(Ubuntu默认是禁止root账户的)
sudo passwd root
设置好密码,重启系统,选择“login”,输入“root”,再输入密码就可以了。
2、配置机器的/etc/hosts和/etc/hostname并安装ssh设置三台机器之间的无密码登 录,在“/etc/hostname”文件中把三台机器的hostname分别设置了SparkMaster、SparkWorker1、SparkWorker2并在每台机器的“/etc/hosts”配置如下IP和机器名称的对应关系:
127.0.0.1 localhost
192.168.32.131 SparkMaster
192.168.32.132 SparkWorker1
192.168.32.133 SparkWorker2
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
可通过ipconfig来查看ip地址。
可以ping SparkWorker1来查看ip是否配置成功
下面配置ssh无密码登陆:
1)apt-get install ssh
2)/etc/init.d/ssh start,启动服务
3)ps -e |grep ssh,验证服务是否正常启动
4)设置免密登陆,生成私钥和公钥:
ssh-keygen -t rsa -P “”
再/root/.ssh中生成两个文件:id_rsa和id_,id_rsa为私钥,id_为公钥,我们将公钥追加到authorized_keys中,
cat ~/.ssh/id_ >> ~/.ssh/authorized_keys
将SparkWorker1、SparkWorker2的id_传给SparkMaster,使用scp命令进行复制:
SparkWorker1上,
scp ~/.ssh/id_ root@SparkMaster:~/.ssh/id_orker1
SparkWorker2上,
scp ~/.ssh/id_ root@SparkMaster:~/.ssh/id_orker2
然后将公钥添加到SparkMaster的authorized_keys中,
SparkMaster上,
cd ~/.ssh
cat id_orker1 >> authorized_keys
cat id_orker2 >> authorized_keys
再将SparkMaster的authorized_keys复制到SparkWorker1、SparkWorker2的.ssh目录下:
scp authorized_keys root@SparkWorker1:~/.ssh/authorized_keys
scp authorized_keys root@SparkWorker2:~/.ssh/authorized_keys
至此,ssh无密登陆已配置完毕。
ssh SparkMaster
ssh SparkWorker1
ssh SparkWorker2
在一台机器上可以登录其他系统无需密码。
3、配置java环境
SparkMaster上,
mkdir /urs/lib/java
cd /urs/lib/java
tar -zxvf
gedit ~/.bashrc
在最后面添加,后面都用得上
#JAVA
export JAVA_HOME=/usr/lib/java/jdk1.8.0_25
export JRE_HOME=${JAVA_HOME}/jre
export CLASS_PATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.6.0
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-=$HADOOP_INSTALL/lib"
export SCALA_HOME=/usr/lib/scala/scala-2.11.4
export SPARK_HOME=/usr/local/spark/spark-1.2.0-bin-hadoop2.4
export IDEA_HOME=/usr/local/idea/idea-IC-139.659.2
export
PATH=${IDEA_HOME}/bin:${SPARK_HOME}/bin:${SCALA_HOME}/bin:${HADOOP_HOME}/bin:${JAVA_HOME}/bin:$PATH
source ~/.bashrc,使配置生效。
java -version可查看版本号,可验证是否成功。
在SparkWorker1,SparkWorker2上以同样方法配置,也可通过scp复制。
scp -r /usr/lib/java/jdk1.8.0_25 root@SparkWorker1:~/usr/lib/java/
scp -r /usr/lib/java/jdk1.8.0_25 root@SparkWorker2:~/usr/lib/java/
scp ~/.bashrc root@SparkWorker1:~/.bashrc
scp ~/.bashrc root@SparkWorker2:~/.bashrc
复制完成后,在SparkWorker1,SparkWorker2上source ~/.bashrc使配置生效。
4、配置hadoop环境
SparkMaster上,
mkdir /urs/lib/hadoop
cd /urs/lib/hadoop
tar -zxvf
cd hadoop-2.6.0
mkdir dfs
cd dfs
mkdir name
mkdir data
cd ..
mkdir tmp
接下来开始修改hadoop的配置文件,首先进入Hadoop 2.6.0配置文件区:
cd etc/hadoop
第一步修改配置文件,在其中加入“JAVA_HOME”,指定我们安装的“JAVA_HOME”:
# The java implementation to use.
export JAVA_HOME=/usr/lib/java/jdk1.8.0_25
第二步修改配置文件,在其中加入“JAVA_HOME”,
# some Java parameters
export JAVA_HOME=/usr/lib/java/jdk1.8.0_25
if [ "$JAVA_HOME" != "" ]; then
#echo "run java in $JAVA_HOME"
JAVA_HOME=$JAVA_HOME
fi
第三步修改配置文件,在其中加入“JAVA_HOME”,如下所示:
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
export JAVA_HOME=/usr/lib/java/jdk1.8.0_25
export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=1000
export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA
第四步修改配置文件slaves,设置Hadoop集群中的从节点为SparkWorker1和SparkWorker2,
SparkWorker1
SparkWorker2
第五步修改配置文件,如下所示:
第六步修改配置文件,如下所示:
第七步修改配置文件,如下所示:
拷贝一份te命名为,打开,
cp te
第八步修改配置文件,如下所示:
共有八个步骤,建议使用scp命令把SparkMaster上安装和配置的Hadoop的各项内容拷贝到SparkWorker1和SparkWorker2上;
5、启动并验证Hadoop分布式集群
第一步:格式化hdfs文件系统:
SparkMaster上,
root@SparkMaster:/usr/local/hadoop/hadoop-2.6.0/bin# hadoop namenode -format
第二步:进入sbin中启动hdfs,执行如下命令:
root@SparkMaster:/usr/local/hadoop/hadoop-2.6.0/sbin# ./
此时我们发现在SparkMaster上启动了NameNode和SecondaryNameNode;
在SparkWorker1和SparkWorker2上均启动了DataNode:
每次使用“hadoop namenode -format”命令格式化文件系统的时候会出现一个新的namenodeId,需要把自定义的dfs文件夹的data和name文件夹的内容清空。SparkWorker1和SparkWorker2的也要删掉。
此时访问SparkMaster:50070 登录Web控制可以查看HDFS集群的状况:
第三步:启动yarn集群
root@SparkMaster:/usr/local/hadoop/hadoop-2.6.0/sbin# ./
使用jps命令可以发现SparkMaster机器上启动了ResourceManager进程:
而在SparkWorker1和SparkWorker2上则分别启动了NodeManager进程:
在SparkMaster上访问SparkMaster:8088 可以通过Web控制台查看ResourceManager运行状态:
在SparkMaster上访问SparkWorker1:8042 可以通过Web控制台查看SparkWorker1上的NodeManager运行状态:
接下来使用“”来启动JobHistory Server:
启动后可以通过SparkMaster:19888 在Web控制台上看到JobHistory中的任务执行历史信息:
结束historyserver的命令如下所示:
第四步:验证Hadoop分布式集群
首先在hdfs文件系统上创建两个目录,创建过程如下所示:
root@SparkMaster:/usr/local/hadoop/hadoop-2.6.0/bin# hadoop fs -mkdir -p /data/wordcount
root@SparkMaster:/usr/local/hadoop/hadoop-2.6.0/bin# hadoop fs -mkdir -p /output/
Hdfs中的/data/wordcount用来存放Hadoop自带的WordCount例子的数据文件,程序运行的结果输出到/output/wordcount目录中,透过Web控制可以发现我们成功创建了两个文件夹:
接下来将本地文件的数据上传到HDFS文件夹中:
root@SparkMaster:/usr/local/hadoop/hadoop-2.6.0/bin# hadoop fs -put ../etc/hadoop/*.xml
/data/wordcount/
透过Web控制可以发现我们成功上传了文件:
也可通过hadoop的hdfs命令在控制命令终端查看信息:
root@SparkMaster:/usr/local/hadoop/hadoop-2.6.0/bin# hadoop fs -ls /data/wordcount/
运行Hadoop自带的WordCount例子,执行如下命令:
root@SparkMaster:/usr/local/hadoop/hadoop-2.6.0/bin# hadoop
jar ../share/hadoop/mapreduce/ wordcount /data/wordcount
/output/wordcount
当我们在运行作业的过程中也可以查看Web控制台的信息:
程序运行结束后我们可以执行一下命令查看运行结果:
root@SparkMaster:/usr/local/hadoop/hadoop-2.6.0/bin#
/output/wordcount/part-r-00000 |head
hadoop fs -cat
可以通过Web控制的JobHistory查看历史工作记录:
发现我们成功运行了WordCount作业。
至此,我们成功构建了Hadoop分布式集群并完成了测试!
6、配置Scala
SparkMaster上,
mkdir /usr/lib/scala
cd /usr/lib/scala
tar -zxvf
相关的环境变量在.bashrc里已配置。
输入scala -version验证是否成功。
使用scp命令复制到SparkWorker1和SparkWorker2,即可。
7、配置Spark
SparkMaster上,
mkdir /usr/local/spark
cd /usr/local/spark
tar -zxvf
相关的环境变量在.bashrc里已配置。
进入spark的conf目录:
第一步修改slaves文件,首先打开该文件,修改为,:
# A Spark Worker will be started on each of the machines listed below.
SparkWorker1
SparkWorker2
第二步:配置
首先把te拷贝到:
cp te
# Options read when launching programs locally with
# ./bin/run-example or ./bin/spark-submit
# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files
# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node
# - SPARK_PUBLIC_DNS, to set the public dns name of the driver program
# - SPARK_CLASSPATH, default classpath entries to append
export JAVA_HOME=/usr/lib/java/jdk1.8.0_25
export SCALA_HOME=/usr/lib/scala/scala-2.11.4
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.6.0
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export SPARK_MASTER_IP=SparkMaster
export SPARK_WORKER_MEMORY=1g
# Options read by executors and drivers running inside the cluster
SparkWorker1和SparkWorker2采用和SparkMaster完全一样的Spark安装配置,在此不再赘述。采用scp命令复制即可。
8、启动Spark分布式集群并查看信息。
第一步:启动Hadoop集群,在SparkMaster使用jps命令,具体操作过程中可以看到如下进程信息:
root@SparkMaster:/usr/local/hadoop/hadoop-2.6.0/sbin# ./
root@SparkMaster:/usr/local/hadoop/hadoop-2.6.0/sbin# ./
root@SparkMaster:/usr/local/hadoop/hadoop-2.6.0/sbin# ./ start
historyserver
第二步:启动Spark集群
在Hadoop集群成功启动的基础上,启动Spark集群需要使用Spark的sbin目录下“”:
root@SparkMaster:/usr/local/spark/spark-1.2.0-bin-hadoop2.4/sbin# ./
此时的SparkWorker1和SparkWorker2会出现新的进程“Worker”:
此时,我们可以进入Spark集群的Web页面,访问“SparkMaster:8080”: 如下所示:
从页面上我们可以看到我们有两个Worker节点及这两个节点的信息。
此时,我们进入Spark的bin目录,使用“spark-shell”控制台:
root@SparkMaster:/usr/local/spark/spark-1.2.0-bin-hadoop2.4/bin# spark-shell
此时我们进入了Spark的shell世界,根据输出的提示信息,我们可以通过“SparkMaster:4040” 从Web的角度看一下SparkUI的情况,如下图所示:
同时,我们也可以看一下Executors:
至此,我们 的Spark集群搭建成功,Congratulations!
9、测试Spark集群
把Spark安装包下的””上传到
root@SparkMaster:/usr/local/spark/spark-1.2.0-bin-hadoop2.4# hadoop fs -put
/data
通过hdfs的web控制台可以发现成功上传了文件:
使用“MASTER=spark://SparkMaster:7077 ./spark-shell”命令启动Spark shell:
root@SparkMaster:/usr/local/spark/spark-1.2.0-bin-hadoop2.4/bin#
MASTER=spark://SparkMaster:7077 ./spark-shell
接下来通过以下命令读取刚刚上传到HDFS上的“”文件 :
scala> val file = le("hdfs://SparkMaster:9000/data/")
对读取的文件进行以下操作:
scala> val count = p(line => (" ")).map(word =>
(word,1)).reduceByKey(_+_)
接下来使用collect命令提交并执行Job:
从控制台可以看到我们的程序成功在集群上运行:
上述信息表明程序成功在Spark集群上运行。
版权声明:本文标题:分布式hadoop与spark集群搭建 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1708400933a522782.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论