赞
踩
需要的软件:
大体步骤(注意本文所有软件均安装在home/hadoop 文件夹下,下文不在提示)
下面进行分步骤详细讲解。
中间过程不在详述,需要注意的是,虚拟机网络模式在VMare中选为NAT,计算机名为ubuntu spark 用户名为hadoop,密码为hadoop,NAT见下图
解压jdk到home/hadoop文件夹下
tar zxvf jdk-8u51-linux-x64.tar.gz
上面首先第一步:
至此,jdk安装完毕,下面配置环境变量
一、PATH配置
这里提供一个简单的方法:
sudo gedit /etc/environment 添加jdk的bin文件夹路径
2.为了保证生效执行下面命令
Source /etc/environment
二、CLASSTH配置
上面只是配置了PATH,还需在配置CLASSPATH
export CLASSPATH=.:/home/hadoop/jdk/jre/lib
执行配置完毕
如果不起作用,采用通过下面配置:
java.sh配置
因为重启之后,很有会被还原,下面还需要配置java.sh
这里可以通过
cd /etc/profile.d
sudo gedit java.sh
把下面两行放到java.sh
export PATH=$PATH:/home/hadoop/jdk/bin
export CLASSPATH=.:/ home/hadoop/jdk/jre/lib
保存。这样就配置完毕了。
执行下面命令:
source java.sh
现在在执行 java -version就ok了
解压scala到home/hadoop文件夹下
上面首先第一步:
至此,scala安装完毕,下面配置环境变量
一、PATH配置
这里提供一个简单的方法:
sudo gedit /etc/environment 添加scala的bin文件夹路径
2.为了保证生效执行下面命令
Source /etc/environment
现从该系统,克隆两个系统,分别改计算机名为unbuntu spark slave1和unbuntu spark slave2
这里我们搭建一个由三台机器组成的集群:
192.168.207.1 hadoop/hadoop master
192.168.207.2 hadoop/hadoop slave1
192.168.207.3 hadoop/hadoop slave1
上面各列分别为IP、user/passwd、hostname
下对master节点设置 slave1和slave2节点设置相同
1.IP设置
进入 VMare 选择 虚拟网络编辑器
设置后保存
2 hostname设置
第一步:sudo gedit /etc/hostname
2 hosts设置,(所有节点该处设置全一样)
sudo gedit /etc/hosts
4.重启网络或重启机器
这一行,把它右边的旧主机名改成你的新主机名即可。重启网络
sudo /etc/init.d/networking restart
或则
reboot
重新启动计算机生效
5.对slave1和slave2重复上述操作
打通master到slave节点的SSH无密码登陆
这里面打通无密码登录,很多新手遇到了问题,这里安装的时候,具体的操作,可以查阅其他资料:
Hadoop伪分布安装过程:Hadoop单机环境搭建指南(ubuntu)
这是个人总结的哦命令,相信对你有所帮助
然后这里在展示一下,authorized_keys是什么样子的:
上面的原理,将所有节点的公钥全部放在master节点的authorized_keys文件中,再将该文件覆盖掉所有节点原有的authorized_keys文件。
然后我们进行下面步骤:
3.1 安装ssh
一般系统是默认安装了ssh命令的。如果没有,或者版本比较老,则可以重新安 装:
sudo apt-get install ssh
安装过程可能出现ssh service 依赖无法安装 解决方法见《ubuntu安装ssh 报依赖错误的解决过程》
3.2设置local无密码登陆
具体步骤如下:
第一步:产生密钥
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
第二部:导入authorized_keys
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys (任意目录下输入cd ~/.ssh 都能到ssh目录)
第二部导入的目的是为了无密码等,这样输入如下命令:
ssh localhost
就可以无密码登录了。
下面展示一下hosts的配置,及无密码登录的效果
locahost的配置
无密码登录效果:
3.3设置远程无密码登陆
进入slave1的.ssh目录
ssh slave1 (输入slave1的密码后,进入slave1)
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
sudo cat ~/.ssh/id_dsa.pub >> hadoop@master:~/.ssh/authorized_keys
exit
进入slave2的.ssh目录
ssh slave2 (输入slave2的密码后,进入slave2)
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
sudo cat ~/.ssh/id_dsa.pub >> hadoop@master:~/.ssh/authorized_keys
exit
在master机器上执行
sudo scp ~/.ssh/authorized_keys hadoop@slave1:~/.ssh
sudo scp ~/.ssh/authorized_keys hadoop@slave2:~/.ssh
------------------------------------------------------------------------
根据上面的资料相信你能得到互通,这里展现一下效果:
上面是slave1无密码登录master
7.安装hadoop 配置环境变量,修改配置文件,通过ssh传给其他工作节点
hadoop集群中每个机器上面的配置基本相同,所以我们先在master上面进行配置部署,然后再复制到其他节点。所以这里的安装过程相当于在每台机器上面都要执行。
【注意】:master和slaves安装的hadoop路径要完全一样,用户和组也要完全一致
1、 解压文件
解压hadoop
解压到/home/hadoop路径下
并且重命名,效果如下
2、 hadoop配置过程
配置之前,需要在master本地文件系统创建以下文件夹:
~/dfs/name
~/dfs/data
~/tmp
这里要涉及到的配置文件有7个:
~/hadoop/etc/hadoop/hadoop-env.sh
~/hadoop/etc/hadoop/yarn-env.sh
~/hadoop/etc/hadoop/slaves
~/hadoop/etc/hadoop/core-site.xml
~/hadoop/etc/hadoop/hdfs-site.xml
~/hadoop/etc/hadoop/mapred-site.xml
~/hadoop/etc/hadoop/yarn-site.xml
以上文件默认不存在的,可以复制相应的template文件获得。下面举例:
配置文件1:hadoop-env.sh
修改JAVA_HOME值(export JAVA_HOME=/home/hadoop/jdk)
配置文件2:yarn-env.sh
修改JAVA_HOME值(export JAVA_HOME=/home/hadoop/jdk)
配置文件3:slaves (这个文件里面保存所有slave节点)
写入以下内容:
配置文件4:core-site.xml
配置文件5:hdfs-site.xml
配置文件6:mapred-site.xml
配置文件7:yarn-site.xml
3、复制到其他节点
上面配置完毕,我们基本上完成了90%了剩下就是复制。我们可以把整个hadoop复制过去:使用如下命令:
sudo scp -r /home/hadoop/hadoop hadoop@slave1:/home/hadoop
sudo scp -r /home/hadoop/hadoop hadoop@slave2:/home/hadoop
后面我们会经常遇到问题,经常修改配置文件,所以修改完一个配置文件后,其他节点都需要修改,这里附上脚本操作方便:
4.配置环境变量
第一步:
vi /etc/environment
第二步:添加如下内容:记得如果你的路径改变了,你也许需要做相应的改变(注意路径为/home/hadoop/)
将environment文件覆盖掉slave1和slave2的对应位置使用scp命令
启动验证
启动hadoop
格式化namenode:
或则使用下面命令:
启动hadoop
cd /home/hadoop/hadoop
./sbin/start-all.sh
master有如下进程:
此处可能会出现namenode无法启动现象,详细查看文档《因namenode未格式化,无法启动解决方案》
slave1有如下进程
此时hadoop集群已全部配置完成!!!
【注意】:而且所有的配置文件<name>和<value>节点处不要有空格,否则会报错!
实际生产环境下,集群规模大,需要修改linux的部分配置,否则hdfs报错
1.提高网络队列长度:
sudo vim /etc/sysctl.conf
net.core.somaxconn = 4000 文件末尾加入
sudo sysctl -p
2.提高同时打开的文件数
(1) sudo vim /etc/security/limits.conf
文件尾追加
* hard nofile 65535
* soft nofile 65535
(2) sudo vim /etc/pam.d/su
将 pam_limits.so 这一行注释去掉
(3) sudo vim /etc/profile
最后一行加上
ulimit -SHn 65535
1.提高网络队列长度 和 2.提高同时打开的文件数 都做完后 重启系统
解压缩spark到/home/hadoop目录下
修改配置文件(cd /home/hadoop/conf) 中的slaves 和 spark-env.sh. spark本身没有slaves和spark-env.sh文件,只有 slaves.template和spark-env.sh.template文件
通过命令
scp slaves.template slaves 和 scp spark-env.sh.template spark-env.sh创建两文件
修改slaves(gedit slaves)
修改spark-env.sh(gedit spark-env.sh),spark有很多运行模式,该配置为standalone模式
配置环境变量
sudo gedit /etc/environment (添加红线标示行)
将spark文件夹和environment文件覆盖slave1和slave2的对应位置
sudo scp -r /home/hadoop/spark hadoop@slave1:/home/hadoop
sudo scp -r /home/hadoop/spark hadoop@slave2:/home/hadoop
将environment文件覆盖掉slave1和slave2的对应位置使用scp命令
启动spark
cd /home/hadoop/spark
./sbin/start-all.sh
在web页面访问Spark集群http://master:8080
使用
cd /home/hadoop/spark
./bin/spark-shell
启动spark(scala版本)控制台(下图左)
此时可使用
http://master:4040 访问 webUI(下图右)
此时可能会出现一个警告为
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
解决办法详见《spark中本地hadoop运行库加载失败解决方案》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。