Spark推荐系统,干货,心得
点击上方蓝字关注~
Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中。实现快速部署,很适合做项目型的公司
1、Docker安装及配置
环境:Centos7
宿主机操作
yum install -y docker 安装docker
systemctl start docker.service 启动docker服务
docker pull centos 下载镜像
docker run -itd centos 创建第一个容器
docker ps #宿主机查看运行的容器
docker exec -it centos /bin/bash #进入第一个容器
容器操作
yum -y install openssh-server
yum -y install openssh-clients #安装ssh服务端及客户端
yum install -y net-tools #安装net-tools centos7 ifconfig查看ip用
yum install which -y #安装which,运行hadoop需要
/usr/bin/sshd ssh服务打开,并加入开机启动
vi ~/.bashrc #配置环境变量,添加如下内容
#开机启动sshd服务
/usr/sbin/sshd
#环境变量
export JAVA_HOME=/usr/local/src/jdk1.8.0_144
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
#HADOOP2.0
export HADOOP_HOME=/usr/local/src/hadoop-2.7.3
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
#SCALA
export SCALA_HOME=/usr/local/src/scala-2.12.3
#SPARK
export SPARK_HOME=/usr/local/src/spark-2.1.1-bin-hadoop2.7
#SBT
export SBT_HOME=//usr/local/src/sbt
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$SPARK_HOME/bin:$SBT_HOME/bin
退出容器 ctrl +c,并将该容器生成标准镜像
格式:
docker commit c1f2903a8aa1(CONTAINER ID,用 docker ps获取) master( 新的镜像的名字)
使用新镜像生成spark集群三台容器
环境:
172.17.0.2 master
172.17.0.3 slave1
172.17.0.4 slave2
注:由于docker容器空间较小,将宿主机进行文件挂载
docker run --name master -h master --add-host master:172.17.0.2 --add-host slave1:172.17.0.3 --add-host slave2:172.17.0.4 -v /master:/usr/local/src/ -itd master
#第一台 hostname为master
docker run --name slave1 -h slave1 --add-host master:172.17.0.2 --add-host slave1:172.17.0.3 --add-host slave2:172.17.0.4 -v /slave1:/usr/local/src/ -itd master
#第二台 hostname为slave1
docker run --name slave2 -h slave2 --add-host master:172.17.0.2 --add-host slave1:172.17.0.3 --add-host slave2:172.17.0.4 -v /slave2:/usr/local/src/ -itd master
#第三台 hostname为slave2
配置ssh免秘登录
分配登录到三台spark集群容器(master、slave1、 slave2)
分别执行ssh-keygen ,按默认选项
master服务器:
cd /root/.ssh/
cat id_rsa.pub >authorized_keys
分别到slave1,及slave2服务器
cat id_rsa.pub
复制内容到 master服务器 authorized_keys文件如图:
然后同步到slave1及slave2服务器
scp -rp authorized_keys slave1:~/.ssh/
scp -rp authorized_keys slave2:~/.ssh/
到此完毕并验证 ssh免秘钥登录
2、hadoop安装及配置
环境:
172.17.0.2 master
172.17.0.3 slave1
172.17.0.4 slave2
在宿主机/master (容器master挂载的宿主机节点)文件夹下解压jdk、hadoop安装包
在宿主机进行配置hadoop
cd /master/hadoop-2.7.3/etc/hadoop/
vi hadoop-env.sh 添加 export JAVA_HOME=/usr/local/src/jdk1.8.0_144
vi yarn-env.sh添加 export JAVA_HOME=/usr/local/src/jdk1.8.0_144
slaves配置从节点
• core-site.xml配置下面配置
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/src/hadoop-2.7.3/tmp</value>
</property>
</configuration>
• 在HAOOP_HOME创建目录:
• ]# mkdir tmp
• ]# mkdir -p dfs/name
• ]# mkdir -p dfs/data
hdfs-site.xml配置下面配置:
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/src/hadoop-2.7.3/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/src/hadoop-2.7.3/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
cp mapred-site.xml.template mapred-site.xml
并配置
mapred-site.xml配置
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml配置
<configuration>
<!-- Site specific YARN configuration properties -->
<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>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>yarnmaster:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
配置完毕,将配件文件分发到两台从docker容器对应的宿主机挂载节点
[root@localhost master]# pwd
/master
[root@localhost master]# cp -rm hadoop-2.7.3 /slave1/
[root@localhost master]# cp -rm hadoop-2.7.3 /slave2/
同理把jdk文件也进行拷贝
测试hadoop
]# hadoop namenode -format
]# start-all.sh
3、SPARK安装及配置
在宿主机/master (容器master挂载的宿主机节点)文件夹下解压spark、scala安装包
cd /master/spark-2.1.1-bin-hadoop2.7/conf/
cp spark-env.sh.template spark-env.sh
vi spark-env.sh #添加如下内容
export JAVA_HOME=/usr/local/src/jdk1.8.0_144
export SCALA_HOME=/usr/local/src/scala-2.12.3
export HADOOP_HOME=/usr/local/src/hadoop-2.7.3
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=master
SPARK_LOCAL_DIRS=/usr/local/src/spark-2.1.1-bin-hadoop2.7
SPARK_DRIVER_MEMORY=1G
cp slaves.template slaves 并配置
最后将配置好的spark、scala安装目录,分发到slave1/2节点上(跟hadoop、jdk文件拷贝同理)
[root@localhost master]# cp -rp spark-2.1.1-bin-hadoop2.7 /slave1/
[root@localhost master]# cp -rp spark-2.1.1-bin-hadoop2.7 /slave2/
启动spark:进入到spark家目录 执行 ./sbin/start-all.sh
配置主机到 容器的映射(宿主机进行操作)
iptables -t nat -A DOCKER -p tcp --dport 8088 -j DNAT --to-destination 172.20.0.2:8088
iptables -t nat -A DOCKER -p tcp --dport 18042 -j DNAT --to-destination 172.17.0.6:8042
iptables -t nat -A DOCKER -p tcp --dport 18042 -j DNAT --to-destination 172.17.0.6:8042
长按识别二维码关注我们
一起来唠唠呗