常见问题与注意事项
- wsl默认与windows共享环境变量, 如果在windows中已经配置过hadoop环境,在wsl中可能会出错,所以需要禁止wsl与windows共享环境变量
1 | sudo vim /etc/wsl.conf |
配置JAVA环境
版本兼容性问题
- hadoop 3.3及以上版本 支持java 8和java 11
- hadoop 3.0.x - 3.2.x 支持java 8
- hadoop 2.7.x - 2.10.x 支持java 7和java 8
下载openjdk 8
版本: adopt-openjdk-8u302
下载地址
解压到指定目录
1 | # 创建目录 |
配置Java环境变量
1 | vim ~/.bashrc |
安装Hadoop
安装依赖包
1 | sudo apt-get install ssh |
- 下载Hadoop 2.10.1 (下载地址)
解压到指定目录
1 | # -x 解压; -v 显示过程; -z 有gz属性的; -f 使用档案名 |
配置Hadoop环境变量
- 配置
hadoop-env.sh
1
2
3vim /home/jzy/opt/hadoop-2.10.1/etc/hadoop/hadoop-env.sh
# 空白位置加入以下内容
export JAVA_HOME=/home/jzy/opt/jdk8 - 配置
.bashrc
1 | vim ~/.bashrc |
单机伪分布式部署hadoop
配置hdfs
配置core-site.xml
1
vim /home/jzy/opt/hadoop-2.10.1/etc/hadoop/core-site.xml
1
2
3
4
5
6
7
8
9
10<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/jzy/hadoop/tmp</value>
</property>
</configuration>配置hdfs-site.xml
1
vim /home/jzy/opt/hadoop-2.10.1/etc/hadoop/hdfs-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/jzy/hadoop/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/jzy/hadoop/data</value>
</property>
</configuration>
配置yarn
- mapred-site.xml
1
2
3cd /home/jzy/opt/hadoop-2.10.1/etc/hadoop/
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml1
2
3
4
5
6<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration> - yarn-site.xml
1 | <configuration> |
配置无密码登录
hadoop不提供输入密码的方式访问集群中的节点, 因此需要配置无密码登录
1 | ssh-keygen –t rsa |
SSH常见问题
ssh localhost
无法连接
- 尝试重启ssh服务
1 sudo service ssh restart- 重装ssh服务
1
2 sudo apt install --reinstall openssh-client
sudo apt install --reinstall openssh-service
启动Hadoop
格式化namenode
1
hdfs namenode -format
启动hdfs: sbin/start-dfs.sh
1
2cd /home/jzy/opt/hadoop-2.10.1
sbin/start-dfs.sh在浏览器里查看dfs: http://localhost:50070
启动YARN
1
sbin/start-yarn.sh
在浏览器里查看YARN: http://localhost:8088
jps
命令检查启动是否成功1
2
3
4
5
6
7
8# 正常情况
872 Jps
746 SecondaryNameNode
522 DataNode
333 NameNode
# 启动了YARN
947 ResourceManager
1097 NodeManager
常见问题
- 排查故障
- 首先用jps确定哪个服务没有启动
- 然后根据服务名定位日志文件, 日志位于hadoop安装目录下的logs文件夹内
1
2cd /home/jzy/hadoop-2.10.1/logs
cat
- namenode未格式化成功,启动失败
- 删除/home/hadoop/name目录重新格式化
1
2sudo rm -rf /home/hadoop/name
hdfs namenode -format
- 删除/home/hadoop/name目录重新格式化
配置Scala
下载scala
scala 2.12.14与spark 3.1.2 兼容
下载地址
解压
1 | tar -xvzf scala-2.12.14.tgz -C /home/jzy/opt/ |
环境变量
1 | vim ~/.bashrc |
配置Spark
下载Spark
选择版本 3.1.2 pre-built with user-provided hadoop
可与hadoop 2.10.1兼容
下载地址
解压
1 | tar -xvzf spark-3.1.2-bin-without-hadoop.tgz -C /home/jzy/opt/ |
配置Spark与Hadoop关联
- conf/spark-env.sh
1
2# 添加一行
export SPARK_DIST_CLASSPATH=$(hadoop classpath)
mysql
- 安装apt源
- 安装mysql
- 安装jdbc驱动
/usr/share/java/mysql-connector-java-8.0.26.jar
HBase
~/.bashrc
1
2export HBASE_HOME=/home/jzy/opt/hbase-2.4.5
export PATH=$PATH:$HBASE_HOME/binconf/hbase-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18<configuration>
<property>
<name>hbase.cluster.distributed</name>
<value>false</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/home/jzy/hbase/tmp</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
</configuration>
Hive
~/.bashrc
1
2export HIVE_HOME=/home/jzy/opt/hive-2.4.9
export PATH=$PATH:$HIVE_HOME/binconf/hive-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>0731</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
</configuration>