伪分布式模式
service iptables stop
永久关闭防火墙需额外执行:chkconfig iptables off
vim /etc/sysconfig/network
进入编辑主机名:
HOSTNAME=hadoop
主机名里不能有下划线,或者特殊字符 #$
主机名属于内核参数,重启后永久生效
.p.s:可以用hostname来使主机名临时生效:
hostname hadoop
centos8:hostnamectl 查看主机名
修改主机名:临时有效:hostname xx
永久生效:hostnamectl set-hostname xxx
删除hostname
vim /etc/hosts
填入IP和主机名,例如:
127.0.0.1 hadoop01
在hadoop01节点执行:
执行:
ssh-keygen
回车生成节点的公钥和私钥,生成的文件会自动放在/root/.ssh目录下。
单机的伪分布式环境,节点需要登录自己节点,即hadoop要登录hadoop,但是此时是需要输入密码的。
把生成的公钥copy到远程机器上:
ssh-copy-id –i ~/.ssh/id_rsa.pub 用户@主机名
此时在远程主机的/root/.ssh/authorized_keys文件中保存了公钥,在known_hosts中保存了已知主机信息,当再次访问的时候就不需要输入密码了。
通过$ ssh [host] 检验是否可以不需密码连接。
安装和配置jdk
安装JDK详情
如果之前安装过旧版本的JDK,用rpm命令删除
rz上传新版本JDK
(使用rz,sz命令需要需要给服务器安装lrzsz:
yum -y install lrzsz)
解压:tar –zxvf jdk安装包
修改配置文件:vim /etc/profile
export JAVA_HOME=/usr/soft/jdk1.8.0_65
export CLASSPATH=.: J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
:wq保存退出
source /etc/profile 使更改的配置立即生效
java -version 查看JDK版本信息,验证是否成功。
上传和解压hadoop安装包
rz 选择文件hadoop....
tar -zxvf hadoop....
常用目录说明:
bin:命令脚本
etc/hadoop:存放hadoop的配置文件
lib:hadoop运行的依赖jar包
sbin:启动和关闭hadoop等命令都在这里
修改hadoop的JAVA_HOME路径
cd etc/hadoop
vim hadoop-env.sh
修改java_home路径和hadoop_conf_dir 路径
source hadoop-env.sh
如果export JAVA_HOME=${JAVA_HOME}配置错误,将来出现:
localhost: Error: JAVA_HOME is not set and could not be found.
vim etc/hadoop/core-site.xml
配置如下:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/soft/hadoop-3.1.3/tmp</value>
</property>
</configuration>
<!--指定hdfs保存数据副本的数量,默认值是3,伪分布模式为1-->
dfs.replication</name>
1</value>
</property>
<!--设置hdfs的操作权限,false表示任何用户都可以在hdfs上操作文件-->
dfs.permissions</name>
false</value>
</property>
</configuration>
<!--指定mapreduce运行在yarn上-->
mapreduce.framework.name</name>
yarn</value>
</property>
</configuration>
<!-- Site specific YARN configuration properties -->
<!--指定resoucemanager的地址-->
yarn.resourcemanager.hostname</name>
hadoop01</value>
</property>
<!--NodeManager获取数据的方式-->
yarn.nodemanager.aux-services</name>
mapreduce_shuffle</value>
</property>
</configuration>
vim slaves
填写DataNode主机名:hadoop(我的是这个)
#Hadoop 3.0
export HADOOP_PREFIX=/home/hadoop/hadoop-3.0.0
export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin
export HADOOP_COMMON_HOME=$HADOOP_PREFIX
export HADOOP_HDFS_HOME=$HADOOP_PREFIX
export HADOOP_MAPRED_HOME=$HADOOP_PREFIX
export HADOOP_YARN_HOME=$HADOOP_PREFIX
export HADOOP_INSTALL=$HADOOP_PREFIX
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_PREFIX/lib/native
export HADOOP_CONF_DIR=$HADOOP_PREFIX
export HADOOP_PREFIX=$HADOOP_PREFIX
export HADOOP_LIBEXEC_DIR=$HADOOP_PREFIX/libexec
export JAVA_LIBRARY_PATH=$HADOOP_PREFIX/lib/native:$JAVA_LIBRARY_PATH
export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop
source /etc/profile 使之立即生效
echo $HADOOP_HOME 测试环境变量是否生效
hadoop namenode -format
输出successfully formatted证明格式化成功。
(如果失败,可尝试用reboot命令重启Linux)
start-all.sh
可以用 jps 命令查看所有的Java进程,检测节点是否全部打开。(正常应有:NodeManager,NameNode,SecondaryNameNode,DataNode,ResourceManager五个节点)