3台服务器安装hadoop集群+spark集群完整笔记

1.安装好3个服务器系统,在hosts中加入彼此的ip和主机名对应,确保互相联通;
在hosts中,127.0.0.1只与localhost对应,不要与主机名(devserver01)对应,用ip和0.0.0.0与主机名对应,如:
127.0.0.1   localhost
::1         localhost
0.0.0.0 devserver01
192.168.100.211 devserver01
192.168.100.212 devserver02
192.168.100.213 devserver03


这样在启动hadoop服务时,一些端口才不会与127.0.0.1绑定,而是与ip绑定,才能使用网内其它主机访问,通过netstat -tpnl可以看到

2.服务器环境:

操作系统: centos 6.5

192.168.100.211 devserver01
192.168.100.212 devserver02
192.168.100.213 devserver03


3.下载
hadoop,版本:2.8.0
jdk,jdk-8u131-linux-x64.tar.gz


4.安装jdk,解压文件,最终安装位置是:/home/jdk1.8.0_131


修改root用户profile
vi /etc/profile

在最末端增加内容:
JAVA_HOME=/home/jdk1.8.0_131
JRE_HOME=/home/jdk1.8.0_131/jre
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME CLASSPATH


使profile生效:
source /etc/profile


测试
java -version


其它两台服务器安装jdk


5.关闭3台服务器上的防火墙
service iptables stop
永久关闭:chkconfig iptables off


6.关闭3台服务器的selinux
vi /etc/selinux/config
如果SELINUX=enforcing,则改成SELINUX=disabled
reboot重启动
查看selinux状态,确保关闭 /usr/sbin/sestatus -v


7.关闭ssh的RSA key fingerprint提示
在devserver01服务器上,编辑/etc/ssh/ssh_config,修改如下:
StrictHostKeyChecking no

8.配置3台服务器之间的免密ssh互访
在devserver01上执行 ssh-keygen -t rsa -P '',随后的问题一路回车
cd ~/.ssh
确认在root用户目录下的.ssh(隐藏目录)目录中,可以看到生成的密钥对文件:id_rsa 和 id_rsa.pub
在.ssh目录中执行 cat ./id_rsa.pub >> ./authorized_keys,生成authorized_keys文件


在devserver02上执行:
scp root@devserver01:~/.ssh/id_rsa.pub ~/.ssh/master_rsa.pub
cat ~/.ssh/master_rsa.pub >> ~/.ssh/authorized_keys
如没有.ssh目录,可手动建立:mkdir ~/.ssh


在devserver03上执行:
scp root@devserver01:~/.ssh/id_rsa.pub ~/.ssh/master_rsa.pub
cat ~/.ssh/master_rsa.pub >> ~/.ssh/authorized_keys
如没有.ssh目录,可手动建立:mkdir ~/.ssh

在把master_rsa.pub复制到02和03服务器上,过程中需要输入01服务器root用户的密码


从01服务器上用ssh连接02和03服务器,第一次连接时会有关于更新known_hosts提示:
Warning: Permanently added 'devserver02,192.168.100.212' (RSA) to the list of known hosts.
Warning: Permanently added 'devserver02,192.168.100.213' (RSA) to the list of known hosts.
以后再次连接时,则不再有提示,至此主对辅免密配置完成。


在02和03两台服务器上执行ssh-keygen -t rsa -P '',生成它们自己的密钥对
在01服务器上将两个公钥获取过来:
scp root@devserver02:~/.ssh/id_rsa.pub ~/.ssh/devserver02_rsa.pub
scp root@devserver03:~/.ssh/id_rsa.pub ~/.ssh/devserver03_rsa.pub
将两个公钥的内容追加到01服务器的authorized_keys文件
cat ~/.ssh/devserver02_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/devserver03_rsa.pub >> ~/.ssh/authorized_keys
至此完成主服务器与节点服务器互相的免密配置


9.安装hadoop在/home下
解压
tar –xzvf hadoop-2.8.0.tar.gz
将解压后的hadoop-2.8.0更名为hadoop
mv hadoop-2.8.0 hadoop


10.将hadoop加入到profile
vi /etc/profile
在末尾追加两行:
export HADOOP_HOME=/home/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
使profile生效
source /etc/profile


11.简单测试
hadoop version


12.在01服务器的hadoop目录下建立必要的目录:
cd /home/hadoop
mkdir tmp 
mkdir hdfs 
cd hdfs
mkdir name
mkdir tmp
mkdir data


13.修改01主服务器上的配置文件:
在/home/hadoop/etc/hadoop下:


1) core-site.xml:
<configuration>
<property> 
<name>hadoop.tmp.dir</name> 
<value>/home/hadoop/tmp</value> 
<final>true</final>
<description>A base for other temporary directories.</description> 
</property> 
<property> 
<name>fs.defaultFS</name> 
<value>hdfs://192.168.100.211:9000</value>
<final>true</final> 
</property> 
<property>  
<name>io.file.buffer.size</name>  
<value>131072</value>  
</property>
</configuration>


2) hdfs-site.xml:


<configuration>
<property> 
<name>dfs.replication</name> 
<value>2</value> 
</property> 
<property> 
<name>dfs.name.dir</name> 
<value>/home/hadoop/hdfs/name</value> 
</property> 
<property> 
<name>dfs.data.dir</name> 
<value>/home/hadoop/hdfs/data</value> 
</property> 
<property>  
<name>dfs.namenode.secondary.http-address</name>  
<value>192.168.100.211:9001</value>  
</property>  
<property>  
<name>dfs.webhdfs.enabled</name>  
<value>true</value>  
</property>  
<property>  
<name>dfs.permissions</name>  
<value>false</value>  
</property>
</configuration>


3) mapred-site.xml(从mapred-site.xml.template复制):
<configuration>
<property>    
<name>mapreduce.framework.name</name>    
<value>yarn</value>    
</property>
</configuration>


4) yarn-site.xml:
<configuration>
<property>    
<name>yarn.resourcemanager.address</name>    
<value>192.168.100.211:18040</value>    
</property>    
<property>    
<name>yarn.resourcemanager.scheduler.address</name>    
<value>192.168.100.211:18030</value>    
</property>    
<property>    
<name>yarn.resourcemanager.webapp.address</name>    
<value>192.168.100.211:18088</value>    
</property>    
<property>    
<name>yarn.resourcemanager.resource-tracker.address</name>    
<value>192.168.100.211:18025</value>    
</property>    
<property>    
<name>yarn.resourcemanager.admin.address</name>    
<value>192.168.100.211:18141</value>    
</property>    
<property>    
<name>yarn.nodemanager.aux-services</name>    
<value>mapreduce_shuffle</value>    
</property>    
<property>    
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>    
<value>org.apache.hadoop.mapred.ShuffleHandler</value>    
</property>
</configuration>


5) hadoop-env.sh 只改关于JAVA_HOME的一行
export JAVA_HOME=/home/jdk1.8.0_131


14.配置主附服务器
在01服务器/home/hadoop/etc/hadoop下建立1个masters文件,内容为:
192.168.100.211


编辑原有的slaves文件,去掉原内容,改为:
192.168.100.212
192.168.100.213


15.将主节点的hadoop复制到两个附节点上
在01服务器上执行:
scp -r /home/hadoop root@devserver02:/home/
scp -r /home/hadoop root@devserver03:/home/


16.在02和03服务器上修改/etc/profile在最后确保加上:
export HADOOP_HOME=/home/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
执行:source /etc/profile 使之生效


16.在主节点上格式化hdfs:
hadoop namenode -format


17.启动hadoop
在01服务器的/home/hadoop/sbin下执行:
./start-all.sh


18.在01主节点上可能查看其它两个节点的状况:
hadoop dfsadmin -report


19.访问http://192.168.100.211:50070确认安装成功
在Datanode下可台看到两个节点
在Utilities下可以访问hdfs


20.访问http://192.168.100.211:18088查看分布式状况(yarn)


21.安装scala,只需要将下载的包解,在/home下
tar -zxvf  scala-2.12.2.tgz
mv scala-2.12.2 scala(将目录名改简单)
可以删除tgz安装包
在/etc/profile中加入 export SCALA_HOME=/home/scala
在PATH中加入 $SCALA_HOME/bin
执行 source /etc/profile使之生效
执行 scala 看能否进入 "scala>"命令行状态,如果可以则成功
在3台机器上进行同样的安装过程


22.安装spark,参考上文scala的安装,先在01服务器上将安装包解压至/home/spark目录
修改 /etc/profile,结合上文其它修改,最终profile中新增内容如下:
export JAVA_HOME=/home/jdk1.8.0_131
export JRE_HOME=/home/jdk1.8.0_131/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export HADOOP_HOME=/home/hadoop
export SCALA_HOME=/home/scala
export SPARK_HOME=/home/spark
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$SCALA_HOME/bin:$SPARK_HOME/bin:$PATH
执行 source /etc/profile使之生效


23.在01服务上修改spark环境配置
cd /home/spark/conf
cp spark-env.sh.template spark-env.sh
编辑spark-env.sh 在最后加入如下内容:
export SCALA_HOME=/home/scala
export JAVA_HOME=/home/jdk1.8.0_131
export HADOOP_HOME=/home/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_HOME=/home/spark
export SPARK_MASTER_IP=192.168.100.211
export SPARK_EXECUTOR_MEMORY=1g
执行 cp slaves.template slaves
编辑 slaves,加入3个worker的ip,主服务器也可以充当一个worker
192.168.100.211
192.168.100.212
192.168.100.213


24. 配置完成,将整个spark目录复制到02和03服务器:
scp /home/spark root@192.168.100.212:/home/
scp /home/spark root@192.168.100.213:/home/


25.重新整理02、03服务器上的profile,执行source /etc/profile使之生效


26.从01服务器上启动服务,先确认hadoop服务正常,如不正常则重新启动;
在/home/spark/sbin下执行: ./start-all.sh 启动spark集群


27.访问192.168.100.211:8080验证集群正常




问题:
1.解决hdfs操作时出现Unable to load native-hadoop library for your platform的问题:
$HADOOP_HOME/lib/native下的库在当前平台上不可用,需要用hadoop源码重新编译生成,再覆盖到native下的库
1)要重新编译,centos上需要安装如下工具:
yum install autoconfautomake libtool cmake ncurses-devel openssl-devel gcc* --nogpgcheck


2)安装protobuf
下载:protobuf-2.5.0.tar.gz  并解压
在protobuf-2.5.0目录中执行:
./configure
make
make check
make install
执行 protoc --version进行验证


3)而后安装maven,添加环境变量M2_HOME,将$M2_HOME/bin加入到PATH


4)最后在hadoop源码包目录下执行:
mvn package -Pdist,native -DskipTests -Dtar


5)打包后生成的native库文件在:hadoop源码目录/hadoop-dist/target/hadoop-2.8.0/lib/native 下
将这个目录所有文件复制并覆盖到/home/hadoop/lib/native下
问题解决








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值