Linux 下安装 hadoop 伪分布式集群参考博客: https://blog.csdn.net/huiweizuotiandeni/article/details/59632613
上述博客内容其实和官网上讲的差不多, 跟着做理论上是不会出现问题的, 但是实际中自己操作总会出现一些不应该出现的 bug.
而我在配置该环境的时候便出现了很多本不应该出现的问题, 在此做一个总结, 以防再犯.
我的系统是 Ubuntu18.0, 和 Ubuntu16.0 基本一致.
JAVA 安装只需要下载安装包, 解压之后配置环境变量, 执行 source 命令使环境变量生效即可.
- export PATH=$GOROOT/bin:$GOPATH/bin:$PATH
- export JAVA_HOME=/home/meng/App/jdk1.8.0
- export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH
- export PATH=$JAVA_HOME/bin:$PATH
- export HADOOP_HOME=$HOME/App/hadoop-2.6.0-cdh5.7.0
- export PATH=$HADOOP_HOME/bin:$PATH
而 Hadoop 安装不仅需要这些工作(解压加配置环境变量), 而且还需要修改一部分配置文件, 才可以使其正常运行.
而所需要配置的文件基本都在解压缩后的 hadoop 目录下的 / etc/hadoop 文件夹
这些文件分别是: hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml,slaves,master
hadoop-env.sh 是 hadoop 环境配置的文件, 需要添加 JAVA_HOME 变量
- # The java implementation to use.
- export JAVA_HOME=/home/meng/App/jdk1.8.0
core-site.xml 文件的作用: 定义 hadfs 中 namenode 的地址, 还有 tmp 文件的地址
- <configuration>
- <!-- 指定 HADOOP 所使用的文件系统 schema(URI),HDFS 的老大 (NAMENODE) 的地址 -->
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://192.168.72.128:9000</value>
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>file:/home/meng/App/tmp</value>
- </property>
- <property>
- <name>io.file.buffer.size</name>
- <value>131702</value>
- </property>
- </configuration>
hdfs-site.xml 文件
- <configuration>
- <!-- 指定 namenode 路径 -->
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>/home/meng/App/hadoop/namenode</value>
- </property>
- <!-- 指定 datanode 路径 -->
- <property>
- <name>dfs.datanode.name.dir</name>
- <value>/home/meng/App/hadoop/datanode</value>
- </property>
- <!-- 指定 hdfs 副本的数量 -->
- <property>
- <name>dfs.replication</name>
- <value>1</value>
- </property>
- <property>
- <name>dfs.namenode.secondary.http-address</name>
- <value>hadoop:9001</value>
- </property>
- <property>
- <name>dfs.webhdfs.enabled</name>
- <value>true</value>
- </property>
- </configuration>
mapred-site.xml 文件(若文件夹下没有该文件, 可将 mapred-site.xml.template 重命名为 mapred-site.xml)
- <configuration>
- <!-- 指定 mapreduce 运行在 yarn 上 -->
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- <final>true</final>
- </property>
- </configuration>
yarn-site.xml: 这里的 localhost 只是在本机测试而使用的, 实际中最好使用自己的本机 IP 地址替换.
- <configuration>
- <!-- Site specific YARN configuration properties -->
- <!-- 设置 yarn 的主机地址 -->
- <property>
- <name>yarn.resourcemanager.hostname</name>
- <value>localhost</value>
- </property>
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property
- </configuration>
更改 master 文件, 加入自己的 IP 地址或者主机名.
更改 slaves 文件, slaves 加入自己的 ip 地址, 这是由于伪分布式 master 和 slaves 都是本机.
所有配置文件修改完后, 还有一个关键步骤: 配置 SSH 免密钥登录
该配置可参考博客: https://blog.csdn.net/u011414200/article/details/47681675
之后便是启动 hadoop
首次启动, 需要格式化 namenode
hdfs namenode -format
在 hadoop 安装目录下有一个 sbin 文件夹
- derby.log hdfs-config.sh metastore_db start-all.sh start-yarn.sh stop-secure-dns.sh
- distribute-exclude.sh httpfs.sh mr-jobhistory-daemon.sh start-balancer.sh stop-all.sh stop-yarn.sh
- hadoop-daemon.sh kms.sh refresh-namenodes.sh start-dfs.sh stop-balancer.sh yarn-daemon.sh
- hadoop-daemons.sh Linux slaves.sh start-secure-dns.sh stop-dfs.sh yarn-daemons.sh
执行 start-all.sh 文件即可
来源: https://www.cnblogs.com/meng9688/p/10080346.html