前言

需特别说明的是,作者已将所有步骤清晰罗列,已确定环境配置步骤无任何缺失,烦请各位投入精力认真核对每一步,避免因疏忽遗漏重要信息。😡

Linux相关命令

  1. pwd 查看当前位置
  2. cd (Change Directory) 改变目录
  3. mkdir 在当前目录下创建子目录 (也可以用全目录创建) 连续创建子目录 mkdir -p /home/a//b/c/d/e/f/g
  4. ls 当前目录下有哪些子目录
  5. 绝对路径(完整)
    /home/sd24/sd241
    相对路径 当前位置的子目录
  6. cd .. 返回上一级目录
  7. rm 文件名 删除文件
    rm -r 目录名 删除目录
    rm -rf 目录名 删除目录及子目录文件
  8. vi 若文件存在就编辑 若文件不存在就新建并编辑
    "i" 键编辑
    "ESC" 退出编辑
    ":wq" 保存内容
    ":q" quit
    ":q!" 强制退出
    "cat f1.txt" 只看内容

虚拟机集群设置

  1. 更改主机名
    /etc/hostname 全部删掉新增主机名,如master
    /etc/sysconfig/network
    新增
    NETWORKING = yes
    HOSTNAME = master
    随后
    reboot 重启
  2. 修改网络以便以ping 域名
    /etc/sysconfig/network-scripts/ifcfg-ens33
    改 BOOTPROTO=static
    ONBOOT=yes
    加 IPADDR=192.168.222.171
    GATEWAY=192.168.222.2
    NETMASK =255.255.255.0
    DNS1=192.168.222.2
    DNS2=8.8.8.8
    保存 service network restart
  3. Linux网络配置
    在VMware的最顶上的编辑菜单选择【虚拟网络编辑器】-->删掉所有-->添加VMnet8 NAT模式-->选择VMnet信息【NAT模式】-->最底下子网IP改为192.168.222.0-->点击应用
    IP与子网掩码做按位与运算得到子网号
  4. 修改时区
    tzselect
    Asia China Beijing
    vi /etc/profile 复制那句话粘贴至该文件中
    source /etc/profile
    硬件时间向本地时间看齐
    hwclock --localtime
  5. 安装阿里源
    sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    sudo yum clean all
    sudo yum makecache
    yum -y install ntp
  6. vi /etc/hosts
    192.168.222.171 master
    192.168.222.172 masterbak
    192.168.222.173 slave1
    192.168.222.174 slave2
  7. master做为ntp服务器 修改ntp配置文件
    vi /etc/ntp.conf
    末尾追加:
    server 127.127.1.0
    fudge 127.127.1.0 stratum 10
    重启时间服务
    systemctl restart ntpd
    关闭防火墙
    systemctl stop firewalld
    只需要主服务器配置 (时间服务器)
    从服务器不需要配置
  8. 在子服务器里输入 对准matser的时间
    ntpdate master
  9. SSH 免密集群登录
    scp 远程拷贝 会覆盖同名文件
    scp 文件名+拓展名 root@slave1:/home
    拷过去的时候更改名字 scp 文件名+拓展名 root@slave1:/home/新名字 (slave2 masterbak同理)
    每台虚拟机都生成ssh-keygen -t dsa
    cd /root/.ssh
    将slave1 2 的公钥给master打成包(公钥:锁 || 私钥:钥匙) (slave1 masterbak同理)
    scp id_dsa.pub root@master:/root/.ssh/s2.pub
    cat id_dsa.pub s1.pub s2.pub mb.pub >>authorized_keys
    将打包后的文件给slave1 2 masterbak
    scp authorized_keys root@slave1:/root/.ssh (slave2 masterbak同理)

JDK安装

  1. mkdir /usr/java
    tar -zxvf jdk......(使用tab补全) -C /usr/java
    vi /etc/profile

    export JAVA_HOME=/usr/java/jdk1.8.0_171  
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib

    注意:在配置完之后输入source /etc/profile重置配置文件
    输入下面指令分别拷贝至其他虚拟机
    scp -r /usr/java root@masterbak:/usr

Zookeeper配置

mkdir /usr/zookeeper
上传文件后
tar -zxvf zookeeper(按tab补全).... -C /usr/zookeeper
cd /usr/zookeeper
cd zookeeper-3.4.10(按tab补全)
cd conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
改 dataDir=/usr/zookeeper/zookeeper-3.4.10/zkdata
dataLogdir=/usr/zookeeper/zookeeper-3.4.10/zklogdata

server.1=192.168.222.171:2888:3888
server.2=192.168.222.172:2888:3888
server.3=192.168.222.173:2888:3888
server.4=192.168.222.174:2888:3888

cd /usr/zookeeper/zookeeper-3.4.10
mkdir zkdata
mkdir zklogdata
cd zkdata
在zkdata中创建myid 分别写入1 2 3 4
scp -r /usr/zookeeper/ root@masterbak:/usr (slave1 slave2同理)

记得修改每个虚拟机的myid 1 2 3 4
cd /usr/zookeeper/zookeeper-3.4.10/zkdata
vi myid
关防火墙 systemctl stop firewalld
在安装目录下(cd /usr/zookeeper/zookeeper-3.4.10)
输入bin/zkServer.sh start
根据投票原理 bin/zkServer.sh status 查看状态

Hadoop集群安装流程

cd /opt 上传文件
mkdir /usr/hadoop
tar -zxvf hadoop(按tab补全).... -C /usr/hadoop
vi /etc/profile 新增

export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin
export CLASSPATH=.:$HADOOP_HOME/lib 

source /etc/profile 刷新
scp -r /usr/hadoop/ root@masterbak:/usr (slave1 slave2同理)

1.
在hadoop文件下下面进行
cd /usr/hadoop/hadoop-2.7.3/
2.
配置hadoop-env.sh
cd etc/hadoop
vi hadoop-env.sh
只修改JAVA_HOME这一行
export JAVA_HOME=/usr/java/jdk1.8.0_171
3.
配置core-site.xml
vi core-site.xml

<configuration>
</configuration>

之间添加下列内容

<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/hadoop-2.7.3/hdfs/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>fs.checkpoint.period</name>
<value>60</value>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property>

4.
配置yarn-site.xml

<configuration>
</configuration>

之间添加下列内容

<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>     
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
<property>
<name>yarn.resourcemanager-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

5.
vi slaves
删掉里面的localhost
添加:
slave1
slave2
masterbak

vi master
添加:
master

6.
配置hdfs-site.xml

<configuration>
</configuration>

之间添加下列内容

<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/hadoop-2.7.3/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/hadoop-2.7.3/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>

7.
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml

<configuration>
</configuration>

之间添加下列内容

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

8.
分发给其他虚拟机
scp -r /usr/hadoop root@slave1:/usr
scp -r /usr/hadoop root@slave2:/usr
scp -r /usr/hadoop root@masterbak:/usr
9.
只在master下做格式化namenode操作:
cd /usr/hadoop/hadoop-2.7.3/
hadoop namenode –format
输入jps可查看所有Java进程,当每一台虚拟机输入jps都能有正确反馈时 hadoop已经安装成功

Hadoop文件系统相关命令

1.
hadoop fs -ls /
列出hdfs文件系统根目录下的目录和文件
hadoop fs -ls -R /
列出hdfs文件系统所有的目录和文件
2.
put
hadoop fs -put < local file > < hdfs file >
hdfs file的父目录一定要存在,否则命令不会执行
hadoop fs -put < local file or dir >...< hdfs dir >
hdfs dir 一定要存在,否则命令不会执行
3.
get
hadoop fs -get < hdfs file > < local file or dir>
local file不能和 hdfs file名字不能相同,否则会提示文件已存在,没有重名的文件会复制到本地
hadoop fs -get < hdfs file or dir > ... < local dir >
4.
rm
hadoop fs -rm < hdfs file > ...
hadoop fs -rm -r < hdfs dir>...
每次可以删除多个文件或目录
5.
mkdir
hadoop fs -mkdir < hdfs path>
只能一级一级的建目录,父目录不存在的话使用这个命令会报错
hadoop fs -mkdir -p < hdfs path>
6.
cp
hadoop fs -cp < hdfs file > < hdfs file >
目标文件不能存在,否则命令不能执行,相当于给文件重命名并保存,源文件还存在
hadoop fs -cp < hdfs file or dir >... < hdfs dir >
7.
text
hadoop fs -text < hdfs file>
将文本文件或某些格式的非文本文件通过文本格式输出

Hadoop进行实战输出单词计数Wordout

现在本地创建一个文件,里头有多个单词
hadoop fs -mkdir /myin #fs方式创建文件夹
hadoop fs -put ./input/test.txt /myin #把本地test.txt传到集群
hadoop fs -ls /myin #查看input目录结构
hadoop jar/usr/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /myin /myout #运行wordcount
hadoop fs -ls /myout #查看结果,跟本地结果一致
hadoop fs -cat /myout/part-r-00000
hadoop fs -get /myout/part-r-00000 /home #通过get命令,把文件下载到本地

HIVE配置流程

systemctl stop firewalld
在slave2的opt里上传文件mysql57-community-release-el7-8.noarch.rpm
cd /opt
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
打补丁
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum -y install mysql-community-server

重载文件systemctl daemon-reload
启动MySQL systemctl start mysqld
查密码 grep "password" /var/log/mysqld.log
进入mysql mysql -uroot -p
改密码规则:
show variables like 'validate_password';
set global validate_password_policy=0;
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=3;
set global validate_password_special_char_count=0;
set global validate_password_length=1;

create user 'root'@'%' identified by'123456';
GRANT ALL PRIVILEGES ON . TO 'root'@'%' WITH GRANT OPTION;
flush privileges;

在slave1安装HIVE
将hive2.1.1传到slave1:/opt
mkdir /usr/hive
tar -zxvf apache-hive-2.1.1-bin.tar.gz -C /usr/hive
vi /etc/profile

export HIVE_HOME=/usr/hive/apache-hive-2.1.1-bin
export PATH=$PATH:$HIVE_HOME/bin

source /etc/profile

将mysql-connector-java-5.1.39-bin.jar拷贝到slave1:/usr/hive/apache-hive-2.1.1-bin/lib
在slave1: cd /usr/hive/apache-hive-2.1.1-bin/
cd conf
cp hive-env.sh.template hive-env.sh
vi hive-env.sh
修改

# Set HADOOP_HOME to point to a specific hadoop
HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
cp hive-default.xml.template hive-site.xml
vi hive-site.xml
<property>
    <name>hive.metastore.warehouse.dir</name>  
    <value>/warehousedir/home</value>  
</property> 
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>root</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>123456</value>
</property>
<property>
  <name>hive.metastore.schema.verification</name>
  <value>false</value>
</property>
<property>
  <name>datanucleus.schema.autoCreateAll</name>
  <value>true</value>
</property>

<property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/hive</value>
  </property>

  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/tmp/hive/local</value>
  </property>

  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/tmp/hive/resources</value>
  </property>

先启动HADOOP(master)
在slave1上启动hive服务
cd /usr/hive/apache-hive-2.1.1-bin/输入hive
即可启动HIVE

最后修改:2025 年 10 月 02 日
如果觉得我的文章对你有用,请随意赞赏