本文共 5577 字,大约阅读时间需要 18 分钟。
小白按教程安装,我用的vmware,ubuntu,才装一半,先记录一下
每台虚拟机的网络配置选择为桥接模式
sudo gedit /etc/network/interfaces
在文件中添加
#the primary network interfaceauto ens33iface ens33 inet staticaddress 192.168.31.180gateway 192.168.31.1netmask 255.255.255.0
service network restart#或以下,或重启虚拟机sudo /etc/init.d/networking restart
在ifconfig检查ip
nameserver 8.8.8.8nameserver 8.8.4.4但这种方法有可能在重启后失效,所以可以直接在设置静态ip的步骤中,添加
dns-nameservers 8.8.8.8
或者直接
sudo gedit /etc/network/interfaces
在文件中添加
#the primary network interfaceauto ens33iface ens33 inet staticaddress 192.168.31.180gateway 192.168.31.1netmask 255.255.255.0dns-nameservers 8.8.8.8
sudo gedit /etc/hosts
在文件中添加
192.168.31.180 spark1192.168.31.181 spark2192.168.31.182 spark3
添加完后各虚拟机之间可以 >>ping spark1 ;相当于>> ping 192.168.31.180
解释:
添加的格式为IP地址 主机名/域名 主机名别名(可以省略)
sudo ufw disable
在secureCRT上建立到所有虚拟机的连接
因为ubuntu安装时缺省安装openssh-client,安装上即可
sudo apt-get install openssh-server#确认是否启动ps -e|grep ssh
默认开启22端口
如果是新安装的虚拟机,只有自己的账号,上传文件不会有充足的权限,因此先设置root密码
sudo passwd root#切换su root
在ssh中设置允许密码连接
sudo gedit /etc/ssh/sshd_config#改动,改为下面的PermitRootLogin yes#重启service sshd restart
即可用root账号连接winscp
在winscp上建立所有到虚拟机的连接sudo apt-get install telnet
解释
telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样,可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器,Telnet是常用的远程控制Web服务器的方法。
使用Telnet协议进行远程登录时需要满足以下条件:在本地计算机上必须装有包含Telnet协议的客户程序、必须知道远程主机的Ip地址或域名、必须知道登录标识与口令。
不同的虚拟机之间可以通过一个命令共享文件
scp 文件 erin@spark2:文件夹名
由于/usr/local文件只能root访问,用root账号才能将jdk.rmp上传。
由于/usr/local只能root访问,得用其他机器的root账号,spark1中root或erin无所谓
scp jdk....tar root@spark2:/usr/local
mkdir /usr/local/jvm#将jdk...tar.gz解压tar -xzvf jdk....tar.gz -C /usr/local/jvm/#配置环境变量sudo gedit /etc/profile#在尾部添加信息#jdk环境变量配置信息export JAVA_HOME=/usr/local/jvm/jdk1.8.0_201export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH #重启source /etc/profile#检查是否生效java -version
ssh spark2
需要输入spark2的密码
ssh-keygen -t rsa#root账号默认生成在/root/.ssh文件夹下cd /root/.ssh#查看生成的东西ls#有私钥和公钥id_rsa id_rsa.pub#复制公钥到authorized_keys文件夹下cp id_rsa.pub authorized_keys
此时将自己的公钥放到了authorized_keys文件中,因此用ssh访问本机时,不再需要密码
ssh spark1#即可访问本机#退出exit
在spark1中,将自己的公钥放到spark3中,此后可以免密访问spark3
ssh-copy-id -i spark3
这时spark3中的authorized_keys中出现了spark1的公钥
不用在每个机器上操作一次。可以在第一台机器考入第三台机器,然后在第一台上ssh spark3之后,在第一台上操作第三台,然后将第三台考到别的上面。在随便一台上,利用ssh操作所有的机器。注意版本,要与安装的spark版本契合才行
通过winscp把hadoop…tar.gz上传到虚拟机/usr/local上
#解压sudo tar -zxvf hadoop...tar.gz#改文件夹名称sudo mv hadoop-2.7.7 hadoop#设置环境变量sudo gedit /etc/profile#添加如下环境变量export HADOOP_HOME=/usr/local/hadoopexport PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH#保存后重新加载source /etc/profile#尝试运行hadoop -version
删除压缩包>>sudo rm -rf hadoop…tar.gz
#在property节点中添加fs.default.name hdfs://spark1:9000
#property节点中添加dfs.name.dir /usr/local/data/namenode dfs.data.dir /usr/local/data/datanode dfs.tmp.dir /usr/local/data/tmp dfs.replication 3
其中最后一个节点代表有几个虚拟机构成集群;而上面的节点中/usr/local/data代表放置缓存的文件夹
#property中放置mapreduce.framework.name yarn
还需要把问价的名字改成mapred-site.xml
yarn.resourcemanager.hostname spark1 yarn.nodemanager.aux-services mapreduce_shuffle
#把localhost替换为以下spark1spark2spark3
mkdir /usr/local/data
scp -r hadoop root@spark2:/usr/local
-r代表文件夹下的全部文件
在spark1上namenode格式化
hdfs namenode -format
开启namenode和datanode守护进程
start-dfs.sh
如果报错没有java_home,在/usr/local/hadoop/etc/hadoop的hadoop_env.sh中手动添加java环境
# The java implementation to use.export JAVA_HOME=/usr/local/jvm/jdk1.8.0_211
开启namenode和datanode后,验证
jps
在spark1中会出现
4913 NameNode5282 SecondaryNameNode5879 Jps5080 DataNode
在spark2/3中出现
3440 Jps3242 DataNode#spark3中4184 Jps4043 DataNode
在spark1中
start-yarn.sh
用jps验证
#spark1中 jps出现4913 NameNode5282 SecondaryNameNode5080 DataNode5998 NodeManager #多的6111 Jps#spark2中jps3541 NodeManager3658 Jps3242 DataNode#34513 Jps4043 DataNode4399 NodeManager
提供给spark写sparksql
spark streaming
转载地址:http://neldz.baihongyu.com/