Fork me on GitHub

集群规划

hdfs结构分析

1.NameNode 名称节点 master 管理其他节点。需要配置ssh免密管理
2.DateNode 数据节点
3.SecondaryNameNode 辅助名称节点

主机名 ip 作用
s101 192.168.255.101 NameNode
s102 192.168.255.102 DateNode
s103 192.168.255.103 DateNode
s104 192.168.255.104 DateNode

配置hosts文件

需要root权限

cat >/etc/hosts<<EOF
127.0.0.1 localhost
192.168.255.101 s101
192.168.255.102 s102
192.168.255.103 s103
192.168.255.104 s104
EOF

普通用户ssh免密管理

s101对所有节点(包括自己)需要免密登录
在s101上生成公私密钥对,把公钥发给所有节点(包括自己)的认证库中,通信时,公钥加密,私钥解密。

生成公私密钥对

#-t 加密算法
#-P 无密加密
#-f 指定私钥文件
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

对自己实现无密登录,添加公钥到认证库

cd ~/.ssh
cat id_rsa.pub >> authorized_keys

修改authorized_keys权限为755

cd ~/.ssh
chmod 755 authorized_keys

登录测试

ssh localhost

使用ssh-copy-id复制当前用户的公钥到远程主机指定用户的认证库中

ssh-copy-id centos@s102
#远程登录验证
ssh centos@s102
ssh-copy-id centos@s103
ssh centos@s103
ssh-copy-id centos@s104
ssh centos@s104

root用户ssh免密管理

切换root

生成公私密钥对

#-t 加密算法
#-P 无密加密
#-f 指定私钥文件
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

对自己实现无密登录,添加公钥到认证库

cd ~/.ssh
cat id_rsa.pub >> authorized_keys

修改authorized_keys权限为755

cd ~/.ssh
chmod 755 authorized_keys

登录测试

ssh localhost

使用ssh-copy-id复制当前用户的公钥到远程主机指定用户的认证库中

ssh-copy-id s102
#远程登录验证
ssh s102
ssh-copy-id s103
ssh s103
ssh-copy-id s104
ssh s104

同步/etc/hosts文件

内容如下

cat /etc/hosts
127.0.0.1 localhost
192.168.255.101 s101
192.168.255.102 s102
192.168.255.103 s103
192.168.255.104 s104

远程复制该文件到所有主机
root权限

scp /etc/hosts root@s102:/etc/hosts
scp /etc/hosts root@s103:/etc/hosts
scp /etc/hosts root@s104:/etc/hosts
#可登录查看

s101安装jdk

root权限

tar xf jdk-8u201-linux-x64.tar.gz
ln -s jdk1.8.0_201 jdk
echo -e '\n#配置java环境变量' >> /etc/profile
echo -e 'export JAVA_HOME=/opt/jdk' >> /etc/profile
echo -e 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
source /etc/profile
java -version

s101安装hadoop

wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz
tar xf hadoop-3.2.1.tar.gz
ln -s hadoop-3.2.1 hadoop
echo -e '\n#配置hadoop环境变量' >> /etc/profile
echo -e 'export HADOOP_HOME=/opt/hadoop' >> /etc/profile
echo -e 'export PATH=$PATH:$HADOOP_HOME/bin' >> /etc/profile
echo -e 'export PATH=$PATH:$HADOOP_HOME/sbin' >> /etc/profile
source /etc/profile

授权普通用户

mkdir -p /opt/module/hadoop/data/tmp
chown -R centos.centos /opt/*

通过scp同步/opt/文件到其他节点


#复制hadoop
scp -pdr /opt/hadoop-3.2.1 root@s102:/opt
scp -pdr /opt/hadoop-3.2.1 root@s103:/opt
scp -pdr /opt/hadoop-3.2.1 root@s104:/opt
#软链接需要登录然后创建

#复制jdk
scp -pdr /opt/jdk1.8.0_201 root@s102:/opt
scp -pdr /opt/jdk1.8.0_201 root@s103:/opt
scp -pdr /opt/jdk1.8.0_201 root@s104:/opt
#软链接
#软链接需要登录然后创建

复制/etc/profile
scp -pdr /etc/profile root@s102:/etc
scp -pdr /etc/profile root@s103:/etc
scp -pdr /etc/profile root@s104:/etc

创建软链接

登录s102~s104

cd /opt/
ln -s hadoop-3.2.1 hadoop
ln -s jdk1.8.0_201 jdk
mkdir -p /opt/module/hadoop/data/tmp
chown -R centos.centos /opt/*

对s101的hadoop的配置目录创建软链接

可以实现多种配置并并存

cd /opt/hadoop/etc
mv hadoop local
cp -r local full
ln -s full hadoop

配置hadoop文件

core-site.xml

vim /opt/hadoop/etc/hadoop/core-site.xml

<configuration>
    <!--指定HDFS中NameNode的址-->
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://s101:9000</value>
    </property>
    
    <!--指定hadoop运行产生文件(DataNode)的存储目录-->
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/module/hadoop/data/tmp</value>
    </property>
</configuration>

hdfs-site.xml

vim /opt/hadoop/etc/hadoop/hdfs-site.xml

<configuration>
<!--指定HDFS副本数量,这里只设置了一个节点(s101)副本数量为3)-->
        <property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>
</configuration>

hadoop-env.sh

vim /opt/hadoop/etc/hadoop/hadoop-env.sh

echo 'export JAVA_HOME=/opt/jdk' >> /opt/hadoop/etc/hadoop/hadoop-env.sh

mapred-site.xml

vim /opt/hadoop/etc/hadoop/mapred-site.xml

 <configuration>
   <property>
     <name>mapreduce.framework.name</name>
     <value>yarn</value>
  </property>
 </configuration>

yarn-site.xml

vim /opt/hadoop/etc/hadoop/yarn-site.xml

 <configuration>
   <property>
     <name>yarn.resourcemanager.hostname</name>
       <value>s101</value>
   </property>
   <property>
     <name>yarn.nodemanager.aux-services</name>
     <value>mapreduce_shuffle</value>
   </property>
 </configuration>

分发目录

注意:使用centos普通用户启动

cd /opt/hadoop/
scp -r etc centos@s102:/opt/hadoop
scp -r etc centos@s103:/opt/hadoop
scp -r etc centos@s104:/opt/hadoop

配置从节点

如果不配置从节点,可能不会启动集群

cat >>/opt/hadoop/etc/hadoop<<EOF
s102
s103
s104

hadoop逻辑格式化

注意:在s101上使用centos普通用户启动

hdfs namenode -format

启动hadoop集群

start-all.sh

测试hadoop
ResourceManager是yarn的管理进程
dataNode和NodeManager是一对

#查看进程
jps
#查看详细信息
hdfs dfsadmin -report
#namenode的http端口
curl http://s101:9870/
#yarn的http端口
curl http://s101:8088/

上传文件

hdfs dfs -mkdir -p /usr/centos/data
echo hello hadoop > 1.txt
hdfs dfs -put 1.txt /usr/centos/data
posted on 2019-12-09 20:23  anyux  阅读(209)  评论(0编辑  收藏  举报