Ubuntu搭建Hadoop、spark
Ubuntu 安装
安装时点击其他选项,
第一个分区为512mb的交换空间
第二个分区为剩余的空间,挂载点是/
按住alt键往上拖
安装完重启
安装vmtools工具
解压到home文件夹,运行.pl文件
重启生效
新建Hadoop用户
sudo useradd -m hadoop -s /bin/bash
为Hadoop用户设置密码
sudo passwd hadoop
为Hadoop用户增加权限
sudo adduser hadoop sudo
切换到Hadoop用户
sudo -su hadoop
安装vim命令
sudo apt install vim
安装ssh server
sudo apt-get install openssh-server
配置ssh
查看IP地址
ifconfig
克隆两台机器,要创建完整克隆
修改主机名
sudo vim /etc/hostname
改为master、slave1、slave2
修改hosts文件(三台机器都要修改成一样的)
sudo vim /etc/hosts
127.0.0.1 localhost
192.168.52.131 master
192.168.52.132 slave1
192.168.52.133 slave2
生成公钥
ssh-keygen -t rsa -P “” (一路回车)
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/id_rsa.pub hadoop@slave1:/home/hadoop/
scp ~/.ssh/id_rsa.pub hadoop@slave1:/home/hadoop/
在slave1、slave2里分别执行
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub
JDK安装配置
打开压缩包所在的位置
cd /mnt/hgfs/share/
创建解压后的文件夹
sudo mkdir /usr/lib/jvm
解压
sudo tar -zxvf jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm/
解压完成之后
cd /usr/lib/jvm
Jdk重命名
mv jdk1.8.0_162/ jdk
编辑~/.bashrc文件
sudo vim ~./bashrc
末尾添加如下内容
export JAVA_HOME=/usr/lib/jvm/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
接着让环境变量生效,执行如下代码
source ~/.bashrc
然后在slave1,slave2上面重复上面的操作
安装Hadoop
打开压缩包所在的位置
cd /mnt/hgfs/share/
解压
sudo tar -zxvf hadoop-2.7.1.tar.gz -C /usr/local/
进入目标文件夹 /usr/local
cd /usr/local
sudo mv hadoop-2.7.1/ hadoop
编辑~/.bashrc文件
sudo vim ~./bashrc
末尾添加如下内容
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
进入/usr/local/hadoop/etc/hadoop目录
cd /usr/local/hadoop/etc/hadoop
sudo vim slaves
改为
slave1
slave2
先复制再修改core-site.xml
sudo cp core-site.xml core-site-cp.xml
sudo vim core-site.xml
修改为
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
修改hdfs-site.xml,修改之前先备份
sudo cp hdfs-site.xml hdfs-site-cp.xml
sudo vim hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
修改mapred-site.xml(复制mapred-site.xml.template,再修改文件名)
sudo cp mapred-site.xml.template mapred-site.xml
sudo vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
修改yarn-site.xml,修改之前先备份
sudo cp yarn-site.xml yarn-site-cp.xml
sudo vim yarn-site.xml
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
修改sudo vim hadoop-env.sh ,在末尾增加
export JAVA_HOME=/usr/lib/jvm/jdk
cd /usr/local/
删除临时文件
rm -rf ./hadoop/tmp
删除日志文件
rm -rf ./hadoop/logs/*
tar -zcf ~/hadoop.master.tar.gz ./hadoop
cd ~
scp ./hadoop.master.tar.gz slave1:/home/hadoop
scp ./hadoop.master.tar.gz slave2:/home/hadoop
在slave1,slave2上分别执行
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
在master主机上执行
cd /usr/local/hadoop
bin/hdfs namenode -format
sbin/start-all.sh
验证
jps
Spark安装配置
打开压缩包所在的位置
cd /mnt/hgfs/share/
解压
sudo tar -zxvf spark-2.4.0-bin-without-hadoop.tgz -C /usr/local/
加权、重命名
cd /usr/local
sudo -su root
chown -R hadoop:hadoop spark-2.4.0-bin-without-hadoop/
mv spark-2.4.0-bin-without-hadoop spark
sudo -su hadoop
编辑~/.bashrc文件
sudo vim ~./bashrc
末尾添加如下内容
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
export SPARK_HOME=/usr/local/spark
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.4-src.zip:$PYTHONPATH
export PYSPARK_PYTHON=python3
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
使环境变量生效
source ~/.bashrc
配置spark-env.sh文件
sudo cp spark-env.sh.template spark-env.sh
sudo vim spark-env.sh
编辑spark-env.sh,添加如下内容:
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export SPARK_MASTER_IP=192.168.52.131
上面改为自己的IP
配置好后,将Master主机上的/usr/local/spark文件夹复制到各个节点上在Master主机上执行如下命令:
cd /usr/local/
tar -zcf ~/spark.master.tar.gz ./spark
cd ~
scp ./spark.master.tar.gz hadoop@slave1:/home/hadoop
scp ./spark.master.tar.gz hadoop@slave2:/home/hadoop
在slave1,slave2节点上分别执行下面同样的操作:
sudo tar -zxf ~/spark.master.tar.gz -C /usr/local
然后检查一下,你的spark文件夹所属的权限是否是hadoop,如果不是在付一下权限
sudo chown -R hadoop /usr/local/spark
实验一
验证spark是否安装成功,在开启SPARK之前 要先开启HADOOP,只需在master节点执行
在hadoop用户下面
cd /usr/local/hadoop
sbin/start-all.sh
查看每个节点进程是否都已启动成功
jps
master:
slave1:
slave2:
单机模式验证
不需要启动spark在master上面直接运行:
bin/run-example SparkPi
输出信息太多,我们用管道命令过滤一下有用信息
bin/run-example SparkPi 2>&1 | grep "Pi is roughly"
会输出 Pi is roughly 3.1460957304786525
要采用本地模式,在4个CPU核心上运行pyspark
cd /usr/local/spark
./bin/pyspark --master local[4]