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

第五步修改配置文件,如下所示:

tFS

hdfs://SparkMaster:9000

The name of default file system

/home/local/hadoop/hadoop-2.6.0/tmp

A base for other temporary directories

第六步修改配置文件,如下所示:

ation

2

/usr/local/hadoop/hadoop-2.6.0/dfs/name

/usr/local/hadoop/hadoop-2.6.0/dfs/data

第七步修改配置文件,如下所示:

拷贝一份te命名为,打开,

cp te

yarn

第八步修改配置文件,如下所示:

me

SparkMaster

-services

mapreduce_shuffle

共有八个步骤,建议使用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集群上运行。


本文标签: 命令 集群 查看 启动