sudo useradd -m hadoop -s /bin/bash
设置密码并重复一次
sudo passwd hadoop
给 hadoop 用户增加 sudo 管理员权限
sudo adduser hadoop sudo
关闭终端,重新登录,将用户名更改为 hadoop ,并输入密码登录
切换到hadoop用户
su hadoop
进入 /usr/lib 文件夹下
cd /usr/lib
创建 jvm 文件夹
sudo mkdir jvm
sudo tar -zxvf jdk-8u291-linux-x64.tar.gz -C /usr/lib/jvm
vim ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_291
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source ~/.bashrc
java -version
sudo tar -zxf hadoop-3.3.1.tar.gz -C /usr/local
cd /usr/local
sudo mv ./hadoop-3.3.1/ ./hadoop
sudo chown -R hadoop ./hadoop
sudo vim /etc/hostname
在master的/etc/hostname中添加如下配置:
master
slave1的/etc/hostname中添加如下配置:
slave1
同理slave2
slave2
ip1 master
ip2 slave1
ip3 slave2
其中每台服务器自己的IP是内网IP,别人的是外网IP
ssh localhost
若不能,则安装open-server
sudo apt-get openssh-server
并生成ssh公钥。
ssh-keygen -t rsa -P ""
将公钥加入到已认证的key中
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
在保证了三台主机电脑都能连接到本地localhost后,还需要让master主机免密码登录slave1和slave2主机。在master执行如下命令,将master的id_rsa.pub传送给两台slave主机。
scp ~/.ssh/id_rsa.pub hadoop@slave1:/home/hadoop/
scp ~/.ssh/id_rsa.pub hadoop@slave2:/home/hadoop/
接着在slave1、slave2主机上将master的公钥加入各自的节点上,在slave1和slave2执行如下命令:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub
在master主机上直接执行如下测试命令,即可让master主机免密码登录slave1、slave2主机。
ssh slave1
ssh slave2
在配置集群/分布式模式时,需要修改“/usr/local/hadoop/etc/hadoop”目录下的配置文件,这里仅设置正常启动所必须的设置项,包括workers 、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml共5个
slave1
slave2
cd /etc
vim hadoop-env.sh
将JAVA_HOME修改为本机的JAVA_HOME
JAVA_HOME=/usr/lib/jvm/java-openjdk
修改core-site.xml
hadoop.tmp.dir
file:/usr/local/hadoop/tmp
Abase for other temporary directories.
fs.defaultFS
hdfs://master:9000
修改hdfs-site.xml:
dfs.replication
3
修改mapred-site.xml
mapreduce.framework.name
yarn
修改yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
master
配置好后,将 master 上的 /usr/local/Hadoop 文件夹复制到各个节点上。速度较慢,也可直接在slave上重新配置
cd /usr/local/
tar -zcf ~/hadoop.master.tar.gz ./hadoop
cd ~
scp ./hadoop.master.tar.gz slave1:/home/hadoop
scp ./hadoop.master.tar.gz slave2:/home/hadoop
在slave1,slave2节点上执行:
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
sudo chown -R hadoop /usr/local/hadoop
cd /usr/local/hadoop
bin/hdfs namenode -format
sbin/start-all.sh
运行后,在master,slave1,slave2运行jps命令,查看:
jps
首次启动Hadoop集群时,需要先在Master节点执行名称节点的格式化(只需要执行这一次,后面再启动Hadoop时,不要再次格式化名称节点),命令如下
hdfs namenode -format
首先创建HDFS上的用户目录,命令如下:
hdfs dfs -mkdir -p /user/hadoop
然后,在HDFS中创建一个input目录,并把“/usr/local/hadoop/etc/hadoop”目录中的配置文件作为输入文件复制到input目录中,命令如下:
hdfs dfs -mkdir input
hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input
接着就可以运行 MapReduce 作业了,命令如下:
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+'
3.0之后hadoop登录端口9870