配置 ssh localhost(免密登录)
- Mac OS X只需在 系统偏好设置–>共享–>远程登录 勾选就可以使用ssh了
- ssh免密设置:终端输入
ssh-keygen -t rsa -P "" #直接enter yes
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 然后验证
ssh localhost
# 然后会突然进入本机的home地址
JDK安装
java -version
输出
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)
brew 安装 hadoop
brew install hadoop
brew list hadoop
# 结果
==> Summary
? /usr/local/Cellar/hadoop/3.1.2: 21,686 files, 774.1MB, built in 2 minutes 40 seconds
配置
/usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop/hadoop-env.sh
配置本机的Java home。
获取本机Javahome方法/usr/libexec/java_home
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home
/usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop/core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/Cellar/hadoop/hdfs/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
注: fs.default.name 保存了NameNode的位置,HDFS和MapReduce组件都需要用到它,这就是它出现在core-site.xml 文件中而不是 hdfs-site.xml文件中的原因。在该处配置HDFS的地址和端口号
/usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9010</value>
</property>
</configuration>
变量mapred.job.tracker 保存了JobTracker的位置,因为只有MapReduce组件需要知道这个位置,所以它出现在mapred-site.xml文件中。
/usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop/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>
变量dfs.replication指定了每个HDFS默认备份方式通常为3, 由于我们只有一台主机和一个伪分布式模式的DataNode,将此值修改为1。
Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(可参考官方教程),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。
运行hadoop
到目录cd /usr/local/Cellar/hadoop/3.1.1/bin/
下
# 格式化hadoop系统的HDFS文件系统
./hadoop namenode -format
cd /usr/local/Cellar/hadoop/3.1.1/sbin/
./start-all.sh
http://localhost:9870 (Resource Manager)
http://localhost:8088(JobTracker)
http://localhost:8042(Specific Node Information)