Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程

步骤一:

目标:*安装虚拟机,在自己虚拟机上完成hadoop的伪分布式安装。(安装完成后要检查)*

1)前期环境准备:(虚拟机、jdk、ssh)

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第1张图片

2)SSH相关配置

安装SSH Server服务器:apt-get install openssh-server

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第2张图片

更改默认的SSH密钥

cd /etc/ssh

mkdir ssh_key_backup

mv ssh_host_* ssh_key_backup

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第3张图片

创建新密钥:dpkg-reconfigure openssh-server

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第4张图片

允许 SSH Root 访问,修改SSH 配置文件 /etc/ssh/sshd_config :vim /etc/ssh/sshd_config

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第5张图片

重启SSH:service ssh restart

查看是否安装成功:ssh -V

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第6张图片

SSH登录本机:ssh localhost

若是登陆失败提示权限不足:

sudo passwd root 注意此处的root为当前登录本机所在的用户名,不一定是root

sudo service ssh restart

ssh localhost

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第7张图片

SSH无密登录:

退出刚才的ssh localhost:exit

cd ~/.ssh/

ssh-keygen -t rsa 这里一直回车就行

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

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第8张图片

最后,SSH授权完成,再次ssh localhost 则不再需要密码了,也不再影响伪分布hadoop启动。

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第9张图片

3)安装Hadoop

首先在官网上下载压缩包(版本3.2.2)。然后将压缩包拖进自己喜欢的目录(个人是/home/jay17)。

1、之后创建一个空的文件夹,用来解压hadoop

mkdir /home/Hadoop

2、解压,-C 指定解压路径到创建的文件夹路径。

tar zxvf hadoop-3.2.2.tar.gz -C /home/jay17/Hadoop/

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第10张图片

3、授权,使文件夹具有读写文件的权利,否则直接影响其他相关操作,必须要执行!!

chown -R root /home/jay17/Hadoop/hadoop-3.2.2/

4、检测Hadoop是否解压安装正确:

cd /home/jay17/Hadoop/hadoop-3.2.2/

./bin/hadoop version

遇到报错说java环境变量不存在。

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第11张图片

5、解决方法如下:

切换目录: cd etc/hadoop

执行:vim hadoop-env.sh

修改java_home路径和hadoop_conf_dir路径为具体的安装路径,例如:

export JAVA_HOME=/usr/local/jdk1.8.0_212

export HADOOP_CONF_DIR=/home/jay17/Hadoop/hadoop-3.2.2/etc/hadoop

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第12张图片

重新加载使修改生效:source hadoop-env.sh

6、回去检测Hadoop,已经解压安装!

cd /home/jay17/Hadoop/hadoop-3.2.2/

./bin/hadoop version

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第13张图片

4)配置Hadoop环境变量

与java环境变量的配置类似,用编辑器打开.bashrc文件(vim /root/.bashrc),保存修改后,执行source /root/.bashrc命令使其生效:

export HADOOP_HOME=/home/jay17/Hadoop/hadoop-3.2.2

export CLASSPATH= C L A S S P A T H : CLASSPATH: CLASSPATH:HADOOP_HOME/lib

export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第14张图片

保存并生效后,便可在任何路径下使用hadoop命令了,使用hadoop version命令验证。出现此前执行./bin/hadoop version命令时所出现的信息,则证明环境变量修改无误。

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第15张图片

一定要确定写对后再执行生效,避免不必要的麻烦,如果操作不当,导致命令几乎失效的话,请执行该命令恢复:

export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

5)伪分布模式配置

Hadoop的伪分布运行是指,同一个节点既是名称节点(Name Node),也是数据节点(Data Node),读取分布式文件系统HDFS的文件。安装不同模式Hadoop,就是修改其配置文件符合模式要求。

Hadoop有俩配置文件,一个是core-site.xml文件,另一个是hdfs-site.xml,其相对路径是在 hadoop-3.2.2/etc/hadoop/ 下。

首先,修改core-site.xml配置文件

vim /home/jay17/Hadoop/hadoop-3.2.2/etc/hadoop/core-site.xml

修改添加的内容:

<configuration>
    <property>
        <name>hadoop.tmp.dirname>
        <value>file:/home/jay17/Hadoop/hadoop-3.2.2/tmpvalue>
        <description>Abase for other temporary directories.description>
    property>
    <property>
        <name>fs.defaultFSname>
        <value>hdfs://localhost:9000value>
    property>
    <property>
        <name>dfs.permissionsname>
        <value>falsevalue>
    property>
configuration>

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第16张图片

参数fs.defaultFS为默认文件系统名称,其值为Hadoop的Name Node地址和端口号,如hdfs://localhost:9000,即表示Name Node是本机,端口9000是HDFS的RPC端口,是HDFS的默认端口。

参数hadoop.tmp.dir用于确定Hadoop文件系统的原信息与数据保存在哪个目录下,是Hadoop文件系统依赖的基础配置,很多路径都依赖,如果hdfs-site.xml文件中不配置Name Node和Data Node的存放位置,默认放在此路径中。

参数dfs.permissions的值如果是true则检查权限,否则不检查权限(每个人都可以存取文件),该参数NameNode上设定。

其次,修改hdfs-site.xml配置文件

vim /home/jay17/Hadoop/hadoop-3.2.2/etc/hadoop/hdfs-site.xml

修改添加的内容:

<configuration>
    <property>
        <name>dfs.replicationname>
        <value>1value>
    property>
    <property>
        <name>dfs.namenode.name.dirname>
        <value>file:/home/jay17/Hadoop/hadoop-3.2.2/tmp/dfs/namevalue>
    property>
    <property>
        <name>dfs.datanode.data.dirname>
        <value>file:/home/jay17/Hadoop/hadoop-3.2.2/tmp/dfs/datavalue>
    property>
configuration>

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第17张图片

参数dfs.replication指明设置hdfs副本数,因为是伪分布模式,所以设置为“1”,默认备份3个副本。

参数dfs.namenode.name.dir 对应的value是存放名称节点的路径,参数dfs.datanode.data.dir 对应的value是存放数据节点的路径。这俩路径也可自行设置,但最好与临时文件路径一致,在初期实验时,遇到问题可以一并处理。

Hadoop的运行方式是由配置文件决定的,因为运行Hadoop时会读取配置文件,如果需要切换模式,只需要重新增加,删除或者修改core-site.xml和hdfs-site.xml文件中的配置项。

6)Name Node的格式化和hadoop启动关闭

配置完成,执行Name Node的格式化:(由于,hadoop生效了环境变量,所以在任何路径下均可执行。)

hdfs namenode -format

出现"successfully formatted"和"Exiting with status 0"的字样,则证明格式化成功!

start-dfs.sh只启动Name Node和Data Node,启动命令如下:

cd /home/jay17/Hadoop/hadoop-3.2.2

./sbin/start-dfs.sh

遇到以下报错请参考以下文章:

hadoop启动报错:Attempting to operate on hdfs namenode as root_hzp666的博客-CSDN博客

Hadoop单点安装FAQ-CSDN博客

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第18张图片

WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER.-CSDN博客

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第19张图片

查看进程命令:jps

起来四个进程如303108 DataNode 303012 NameNode 303453 Jps 303274 SecondaryNameNode就是正常的。

停止命令如下:

./sbin/stop-dfs.sh

所有命令连贯展示:

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第20张图片

如果NameNode一直起不来,看看是不是端口冲突了,hadoop配置文件里面我们改的是9000端口,我的portainer(docker管理平台)也是9000端口,导致我因为NameNode起不来卡了好几天。。。。

步骤二:

1)在hdp家目录下新建lab2目录,在lab2目录中新建word.txt,并在其中录入若干单词。

mkdir /home/lab2

echo jsj >> /home/lab2/word.txt

echo jsj >> /home/lab2/word.txt

echo jay17 >> /home/lab2/word.txt

echo jsj >> /home/lab2/word.txt

echo jay17 >> /home/lab2/word.txt

echo jsj >> /home/lab2/word.txt

echo jsj >> /home/lab2/word.txt

echo jay17 >> /home/lab2/word.txt

echo jsj >> /home/lab2/word.txt

echo jsj >> /home/lab2/word.txt

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第21张图片

2)在HDFS的根目录下新建hdp用户目录/user/hdp目录,并在用户目录下新建input目录,将本地文件系统中的lab2目录中的word.txt文件上传到HDFS的input目录中。

hadoop fs -mkdir /user

hadoop fs -mkdir /user/hdp

hadoop fs -mkdir /user/hdp/input

hadoop fs -copyFromLocal /home/lab2/word.txt /user/hdp/input/

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第22张图片

3)调用wordcount示例程序统计word.txt中的单词出现次数,将结果写入用户目录的output中,查看统计结果。

hadoop jar /home/jay17/Hadoop/hadoop-3.2.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar wordcount /user/hdp/input /user/output

Hadoop: 是$HADOOP_HOME/bin下的shell脚本名。

jar:hadoop脚本需要的command参数。

/home/jay17/Hadoop/hadoop-3.2.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar :要执行的jar包在本地文件系统中的完整路径,参递给RunJar类。

wordcount :main方法所在的类,参递给RunJar类。

/user/hdp/input:传递给WordCount类,作为DFS文件系统的路径,指示输入数据来源。

/user/output:传递给WordCount类,作为DFS文件系统的路径,指示输出数据路径。

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第23张图片

hadoop fs -ls /user/output

hadoop fs -cat /user/output/part-r-00000

Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程_第24张图片

你可能感兴趣的:(日报专栏,linux,hadoop,运维,大数据,kali)