jdk包有问题时初始化namenode会报错:
java.lang.InternalError: internal error: SHA-1 not available.
- 解压jdk:
tar -zxvf jdk-8u333-linux-x64.tar.gz -C /usr/local/
- 配置环境变量
vi ~/.bashrc
文末添加
export JAVA_HOME=/usr/local/jdk1.8.0_333 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
执行以下内容使环境变量生效
source ~/.bashrc
- 检查java版本信息
java -version配置Hadoop
- 解压hadoop,解压到哪个目录可以自行选择
tar -zxvf hadoop-3.2.3.tar.gz -C /usr/local/
- 配置环境变量
vi ~/.bashrc
在文末添加
export HADOOP_HOME=/usr/local/hadoop-3.2.3 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
执行以下内容使环境变量生效
source ~/.bashrc
- 配置相关文件
cd /usr/local/hadoop-3.2.3/etc/hadoop/
配置hadoop-env.sh
vi hadoop-env.sh
找到# export JAVA_HOME=,并改为
export JAVA_HOME=/usr/local/jdk1.8.0_333
配置core-site.xml
vi core-site.xml
修改为以下内容,其中0.0.0.0代表服务器的IP,不需要修改
fs.defaultFS hdfs://0.0.0.0:9000 hadoop.tmp.dir /usr/local/hadoop-3.2.3/data
创建目录用来存放数据块的元数据和数据存
mkdir /usr/local/hadoop-3.2.3/data
配置yarn-site.xml
vi yarn-site.xml
修改为以下内容
yarn.resourcemanager.hostname 0.0.0.0 yarn.resourcemanager.address 0.0.0.0:8032 yarn.resourcemanager.scheduler.address 0.0.0.0:8030 yarn.resourcemanager.resource-tracker.address 0.0.0.0:8031 yarn.resourcemanager.admin.address 0.0.0.0:8033 yarn.resourcemanager.webapp.address 0.0.0.0:8088 yarn.nodemanager.aux-services mapreduce_shuffle
配置hdfs-site.xml
vi hdfs-site.xml
修改为以下内容
dfs.replication 1 dfs.permissions.enabled false
配置mapred-site.xml
vi mapred-site.xml
修改为以下内容
mapreduce.framework.name yarn
切到/usr/local/hadoop-3.2.3/sbin目录
cd /usr/local/hadoop-3.2.3/sbin
在start-dfs.sh,stop-dfs.sh第二行添加以下内容,因为是root登录的,不配置会出现错误
HDFS_DATANODE_USER=root HDFS_DATANODE_SECURE_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root
配置start-yarn.sh,stop-yarn.sh,在第二行添加以下内容
YARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root
- 实现SSH免密码远程登录,虽然是伪分布式,也就是自己登自己,不配会报错
# 创建公钥/私钥,一路回车 ssh-keygen -t rsa # 创建authorized_keys文件并修改权限为600 cd ~/.ssh touch authorized_keys chmod 600 authorized_keys # 将公钥追加到authorized_keys文件中 cat id_rsa.pub >> authorized_keys # 尝试能否免密登录,能登陆就成功了,尝试后,输入exit退出 ssh 0.0.0.0
- 关闭防火墙
# 查看防火墙状态 systemctl status firewalld.service # 关闭防火墙 systemctl stop firewalld.service # 打开防火墙 systemctl start firewalld.service格式化&启动&停止Hadoop
- 格式化hadoop,不要多次格式化。多次格式化会导致DataNode无法正常启动
hadoop namenode -format
- 启动&停止Hadoop
/usr/local/hadoop-3.2.3/sbin/start-all.sh
/usr/local/hadoop-3.2.3/sbin/stop-all.sh
- 启动以后可以输入jps,看有没有下面这些进程
5202 NameNode 5830 ResourceManager 6310 Jps 5975 NodeManager 5368 DataNode 5583 SecondaryNameNode
可以在浏览器访问ip:9870和ip:8088,记得在防火墙打开这两个端口,ip是外网IP
159.75.251.218:9870多次格式化会导致DataNode无法正常启动
- 打开/usr/local/hadoop-3.2.3/data/dfs
cd /usr/local/hadoop-3.2.3/data/dfs
- 有name和data两个目录,将data/current/VERSION中clusterID的值改为name/current/VERSION中clusterID的值
找到并复制clusterID的值
cat name/current/VERSION
修改clusterID的值
vi data/current/VERSION
- 遇到问题可以看日志,logs路径为:
cd /usr/local/hadoop-3.2.3/logs问题
- 写项目要开通9000端口,由fs.defaultFS的值决定的
- web上下载要开通9864端口,并且在本地的C:WindowsSystem32driversetchosts文件最后一行加上
# 外网IP 服务器名称 159.75.251.218 vm-20-4-centos



