栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

大数据Hadoop安装和配置

大数据Hadoop安装和配置

大数据

大数据,Spark,Hadoop,python

大数据Hadoop安装和配置

一、Hadoop 伪分布式配置

1. 创建Hadoop用户:2. 配置Java环境3. 安装Hadoop4. 伪分布式配置5. 启动 Hadoop 二、Hadoop 集群配置

大数据,Spark,Hadoop,python
大数据Hadoop安装和配置
一、Hadoop 伪分布式配置 1. 创建Hadoop用户:

为什么要新建一个名为hadoop的用户呢?
因为为了保证 Hadoop相关文件只有hadoop用户可以访问,其他用户访问不了。而且建立一个单独的用户组,在集群的时候很容易管理
另一方面,root更不建议,为了防止高危情况不要用root用户操作。

sudo useradd -m hadoop -s /bin/bash     # 创建hadoop用户(用户名就叫 hadoop)
sudo passwd hadoop          # 修改密码。我们不妨将密码也设置成 hadoop
sudo adduser hadoop sudo    # 增加管理员权限

输入su hadoop切换Hadoop用户(也可注销后切换成hadoop 用户登录),接着更新 apt 并且安装 vim:

sudo apt-get update         # 更新apt

安装SSH,并配置无密码登录:

sudo apt-get install openssh-client # 安装ssh client
sudo apt-get install openssh-server # 安装ssh server
cd ~
mkdir .ssh                  # 可能该文件已存在,不影响
cd ~/.ssh/
ssh-keygen -t rsa           # 会有提示,都按回车就可以
cat id_rsa.pub >> authorized_keys  # 加入授权

输入ssh localhost即可登录,无需输入密码,否则安装好SSH后登录,需要输入密码hadoop

注:集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server

2. 配置Java环境

Hadoop需要java环境支持,配置JDK参考我的另一篇博文https://blog.csdn.net/Acegem/article/details/120852985?spm=1001.2014.3001.5502。

3. 安装Hadoop

可以在Hadoop官网https://dlcdn.apache.org/hadoop/common/下载,我们下载hadoop-3.1.3,下载链接为:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz,
或国内镜像网站,如:http://mirrors.cnnic.cn/apache/hadoop/common/ 下载,
将下载的hadoop-3.1.3压缩包解压到/usr/local/目录下

sudo tar -zxvf hadoop-3.1.3.tar.gz -C /usr/local  # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-3.1.3/ ./hadoop            # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop        # 修改文件权限

测试:

cd /usr/local/hadoop
./bin/hadoop version
4. 伪分布式配置

Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。
修改配置文件 core-site.xml:




更改为


    
        hadoop.tmp.dir
        file:/usr/local/hadoop/tmp
        Abase for other temporary directories.
    
    
        fs.defaultFS
        hdfs://localhost:9000
    

修改配置文件 hdfs-site.xml:


    
        dfs.replication
        1
    
    
        dfs.namenode.name.dir
        file:/usr/local/hadoop/tmp/dfs/name
    
    
        dfs.datanode.data.dir
        file:/usr/local/hadoop/tmp/dfs/data
    

5. 启动 Hadoop
cd /usr/local/hadoop
bin/hdfs namenode -format       # namenode 格式化
sbin/start-dfs.sh               # 开启守护进程
jps                             # 判断是否启动成功

若成功启动则会列出如下进程: NameNode、DataNode和SecondaryNameNode
附:
报错1:如果在这一步时提示 Error: JAVA_HOME is not set and could not be found. 的错误,则说明之前设置 JAVA_HOME 环境变量那边就没设置好。
如果已经按照前面教程在.bashrc文件中设置了JAVA_HOME,还是出现Error,那么,到hadoop的安装目录修改配置文件“/usr/local/hadoop/etc/hadoop/hadoop-env.sh”,在里面找到“export JAVA_HOME=${JAVA_HOME}”这行,然后,把它修改成JAVA安装路径的具体地址,比如,“export JAVA_HOME=/usr/lib/jvm/default-java”,然后,再次启动Hadoop。
报错2:如果启动 Hadoop 时遇到输出非常多“ssh: Could not resolve hostname xxx”的异常情况,如下图所示:
这个并不是 ssh 的问题,可通过设置 Hadoop 环境变量来解决。在 ~/.bashrc 中,增加如下两行内容(设置过程与 JAVA_HOME 变量一样,其中 HADOOP_HOME 为 Hadoop 的安装目录):

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

测试:
运行 WordCount 实例:

bin/hdfs dfs -mkdir -p /user/hadoop     # 创建HDFS目录
bin/hdfs dfs -mkdir input
bin/hdfs dfs -put etc/hadoop/*.xml input  # 将配置文件作为输入
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
bin/hdfs dfs -cat output/*                # 查看输出

也可将运行结果取回到本地:

rm -r ./output    # 先删除本地的 output 文件夹(如果存在)
./bin/hdfs dfs -get output ./output     # 将 HDFS 上的 output 文件夹拷贝到本机
cat ./output/*

Hadoop 运行程序时,输出目录不能存在,否则会提示错误 “org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/hadoop/output already exists” ,因此若要再次执行,需要执行如下命令删除 output 文件夹:

./bin/hdfs dfs -rm -r output    # 删除 output 文件夹
二、Hadoop 集群配置

假定有两台机器:

Master  192.168.1.121
Slave1  192.168.1.122

Hadoop 集群配置过程:

选定一台机器作为 Master,在所有主机上配置网络映射
在 Master 主机上配置hadoop用户、安装SSH server、安装Java环境
在 Master 主机上安装Hadoop,并完成配置
在其他主机上配置hadoop用户、安装SSH server、安装Java环境
将 Master 主机上的Hadoop目录复制到其他主机上
开启、使用 Hadoop

所有主机配置hadoop用户、安装SSH server、安装Java环境:

sudo useradd -m hadoop -s /bin/bash     # 创建hadoop用户
sudo passwd hadoop          # 修改密码
sudo adduser hadoop sudo    # 增加管理员权限
# 注销并使用 Hadoop 用户登录
sudo apt-get update         # 更新apt
sudo apt-get install vim    # 安装vim
sudo apt-get install openssh-server  # 安装ssh

再配置好java的JDK环境
所有主机配置网络映射:

sudo vim /etc/hostname      # 修改主机名
sudo vim /etc/hosts         # 修改主机与 IP 的映射关系
sudo reboot                 # 重启,使网络配置生效

在 Master 主机上执行:

cd ~/.ssh
ssh-keygen -t rsa              # 一直按回车就可以
cat ~/id_rsa.pub >> ~/authorized_keys
scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/ # 传输公钥到Slave1

接着在 Slave1 节点上执行

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

在Master节点上进行Hadoop集群配置(位于 /usr/local/hadoop/etc/hadoop中):

文件 slave:

将原来 localhost 删除,把所有Slave的主机名写上,每行一个。

文件 core-site.xml:


    fs.defaultFS
    hdfs://Master:9000


    hadoop.tmp.dir
    file:/usr/local/hadoop/tmp
    Abase for other temporary directories.

文件 hdfs-site.xml:


    dfs.namenode.secondary.http-address
    Master:50090


    dfs.namenode.name.dir
    file:/usr/local/hadoop/tmp/dfs/name


    dfs.datanode.data.dir
    file:/usr/local/hadoop/tmp/dfs/data


    dfs.replication
    1

文件 mapred-site.xml(首先需执行 cp mapred-site.xml.template mapred-site.xml):


    mapreduce.framework.name
    yarn

文件 yarn-site.xml:


    yarn.resourcemanager.hostname
    Master


    yarn.nodemanager.aux-services
    mapreduce_shuffle

配置好后,在 Master 主机上,将 Hadoop 文件复制到各个节点上:

cd /usr/local
rm -r ./hadoop/tmp  # 删除 Hadoop 临时文件
sudo tar -zcf ./hadoop.tar.gz ./hadoop
scp ./hadoop.tar.gz Slave1:/home/hadoop

在 Slave1 上执行:

sudo tar -zxf ~/hadoop.tar.gz -C /usr/local
sudo chown -R hadoop:hadoop /usr/local/hadoop

最后在 Master 主机上就可以启动hadoop了:

cd /usr/local/hadoop/
bin/hdfs namenode -format
sbin/start-dfs.sh
sbin/start-yarn.sh
jps             # 判断是否启动成功

若成功启动,则Master节点启动了NameNode、SecondrryNameNode、ResourceManager进程,Slave节点启动了DataNode和NodeManager进程。

在 Master 主机上执行WordCount实例:

bin/hdfs dfs -mkdir -p /user/hadoop
bin/hdfs dfs -put etc/hadoop input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/734763.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号