hadoop的配置
hadoop官方文档:
Apache Hadoop 3.1.1
hadoop的三种工作模式:
hadoop工作模式
(1)配置java环境,建议使用openjdk.
(2)下载并解压hadoop
hadoop官网下载: hadoop3.1.1
如果没有重新编译hadoop的需求,可以直接选择tar.gz包进行解压。
如果有重新编译的需求,比如你是在arm机器上,那为了让hadoop更适配自己的机器,可能需要下载src源码包重新编译。
使用 tar -zxvf hadoop-3.1.1.tar.gz 解压
(3)伪分布式的配置
1.在hadoop-env中加入java环境变量:
export JAVA_HOME=/usr/java/latest
2.配置hdfs
修改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://localhost:9000</value>
</property>
</configuration>
修改hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</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>
3.配置yarn
修改mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
修改yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
4.格式化hdfs
./bin/hdfs namenode -format
如果没有对namenode进行格式化,启动时可能报如下错误:
java.io.IOException: Gap in transactions. Expected to be able to read up until at least txid 52957 but unable to find any edit logs containing txid 52943
at org.apache.hadoop.hdfs.server.namenode.FSEditLog.checkForGaps(FSEditLog.java:1574)
at org.apache.hadoop.hdfs.server.namenode.FSEditLog.selectInputStreams(FSEditLog.java:1532)
at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:647)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:294)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:975)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:681)
at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:584)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:643)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:810)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:794)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1487)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1553)
5. 测试hadoop是否正常启动
在sbin目录使用
./start-dfs.sh 和 ./start-yarn.sh
使用jps查看hdfs和yarn是否正常启动, 通常情况下运行的进程,应该包括NameNode,DataNode,SecondaryNameNode,ResourceManager和NodeManager等
访问web端口:
访问 http://192.168.31.224:50070 //50070是HDFS的端口号
访问 http://192.168.31.224:20345 // 其中20345是所配置的yarn端口号
Spark-3.1.1的配置
(1)下载并解压spark-3.1.1
在安装spark时,scala和java环境是必须要的,如果想要使用分布式文件存储,还需要安装hadoop。
所以我们在下载spark之前,要先配置好hadoop,java和scala的环境。
下载jdk,scala,spark,并在 ~/.bashrc 文件中,配置环境变量
vi ~/.bashrc
添加以下内容,路径名称需要需修改
export JAVA_HOME=/home/jtguan/jdk8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=$JAVA_HOME/bin:$PATH
export SCALA_HOME=/home/jtguan/local/scala-2.12.13
export PATH=$PATH:$SCALA_HOME/bin
export HADOOP_HOME=/home/tpcds_data/jtguan/hadoop-3.1.1
export HADOOP_CONF_DIR=/home/tpcds_data/jtguan/hadoop-3.1.1/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib/native"
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export SPARK_HOME=/home/tpcds_data/jtguan/spark-3.1.1
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
source ~/.bashrc
bashrc代表的是linux上的私人环境,opt/profile则是共有环境
(2)下载并解压spark-3.1.1
下载地址:Spark-3.1.1
带hadoop的编译包是在指定hadoop版本下编译的spark,你也可以选择下载不带hadoop的预编译包。
使用 tar -zxvf spark-3.1.1-bin-hadoop2.7.tgz 解压
(3)配置conf/spark-env.sh
xport JAVA_HOME=/home/jtguan/jdk8
export HADOOP_HOME=/home/jtguan/hadoop-3.1.1
export HADOOP_CONF_DIR=/home/jtguan/hadoop-3.1.1/etc/hadoop
export SCALA_HOME=/home/jtguan/local/scala-2.11.12
export SPARK_HOME=/home/tpcds_data/jtguan/spark-3.1.1
export SPARK_WORKER_INSTANCES=3
export SPARK_WORKER_MEMORY=200G
export SPARK_WORKER_CORES=40
export SPARK_EXECUTOR_INSTANCES=2
export SPARK_EXECUTOR_MEMORY=200G
export SPARK_EXECUTOR_CORES=10
export SPARK_DRIVER_MEMORY=10G
export SPARK_MASTER_HOST=master
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_WEBUI_PORT=8080
export SPARK_MASTER_IP=173.53.16.15
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 "
export SPARK_LOCAL_IP=173.53.16.15
(4)运行sparkPi测试程序
测试spark是否配置成功:
./bin/spark-submit --class org.apache.spark.example.SparkPi --master local[*] ./examples/jars/spark-examples_2.12-3.1.1.jar
sparkPI是一个通过随机模拟计算Π值得程序:
运行成功,spark即成功配置